Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php从mysql读取文件和数据哪个更快_Php_Mysql - Fatal编程技术网

php从mysql读取文件和数据哪个更快

php从mysql读取文件和数据哪个更快,php,mysql,Php,Mysql,这是一个真正的php面试问题。我知道答案不仅仅是哪个更快。我们可以从很多方面回答这个问题。谁能给我一些建议吗?阅读一个文件=快速 读取多个/大文件=速度慢 从数据库读取单个小条目=浪费I/O 在数据库中组合多个条目=比文件访问快。文件: 读取文件:快速 预测格式/代码页:缓慢、费力、容易出错 文件权限管理 不可能进行多写访问 需要锁定机制策略 解析文件:比较快。取决于数据复杂性 目录中的文件和许多其他文件的文件查找(1000+):速度非常慢,因为操作系统将迭代目录中的文件列表,以通过二进制搜索

这是一个真正的php面试问题。我知道答案不仅仅是哪个更快。我们可以从很多方面回答这个问题。谁能给我一些建议吗?

阅读一个文件=快速

读取多个/大文件=速度慢

从数据库读取单个小条目=浪费I/O

在数据库中组合多个条目=比文件访问快。

文件:

  • 读取文件:快速
  • 预测格式/代码页:缓慢、费力、容易出错
  • 文件权限管理
  • 不可能进行多写访问
  • 需要锁定机制策略
  • 解析文件:比较快。取决于数据复杂性
  • 目录中的文件和许多其他文件的文件查找(1000+):速度非常慢,因为操作系统将迭代目录中的文件列表,以通过二进制搜索找到您请求的文件(如果您幸运的话)
  • 当其他人正在写作时,阅读是不可能的
  • 线程分叉问题
  • 如果以文本形式存储,则文件大小较大
  • 简而言之:仅对静态数据(如配置文件)使用文件。从不使用动态数据
数据库:

  • 更好地管理上述所有方面
  • 紧凑型存储器
  • 快速查找引擎
  • 相关事实的简单组合
  • 易于与其他计算机/程序共享访问权限
  • 内置的回滚机制
  • 不要用于保持静态的配置

    • 这是一个没有正确答案的面试问题的例子。这两种情况都有可能发生

      对于您可能会说加载速度快的文件,有很多内核优化都是围绕着从磁盘获取文件并将其提供给用户进程,甚至更多的是围绕着通过类似的方式将文件直接从磁盘发送到套接字。那是真的

      然后,对于数据库,您可以说频繁访问的数据存储在内存中,因此没有I/O到磁盘的往返,这可能会更快,特别是当您使用次优结构与数据库中的记录来比较文件的读取部分时。这也是一个算法问题


      因此,这实际上取决于所涉及的文件类型和读/写访问模式。如果说这两种方法中的任何一种都更快,那就是忽略了问题的重点。

      可能重复@Kumar,感谢您对我的问题的有用链接。在提问之前,我试图搜索类似的问题,但没有什么好处。:)从技术上讲,数据库使用一个文件作为“动态数据”,如果你小心的话,结果会很好。这就是定义良好的格式和大量测试代码发挥作用的地方。uhu,您将如何处理同步性?还有数据缓存?是否要构建一个文件访问服务器,应用程序可以通过端口链接到该服务器?或者,您是在编写大量文件锁文件,以防止在另一个应用程序读取或写入数据时写入数据?如何处理一个长时间运行的应用程序需要读取大量文件,而另一个应用程序需要写入?为什么要重新设计数据库。。。实际上,有1000种格式比定制实现更好、更充实。如果您对其工作原理感到好奇,团队将解释如何在他们的应用程序中执行这些操作。我可以解释,但他们已经做了一个出色的工作,列出了所有的细节。现在请记住,我并不是说你应该用PHP来做这件事,而是说你可以。哈哈,我以前读过这些文档,它们让我头疼,因为我在想如何实现这些从头开始的代码以及由此产生的所有工作。一个人可以做到。。。如果有人喜欢重新发明轮子,并且喜欢修复bug,那么这是一个关于假设的面试问题,而不是关于用PHP运行自己的数据库的建议。