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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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_File - Fatal编程技术网

Php 从MySQL读取更快,还是从文件读取更快?

Php 从MySQL读取更快,还是从文件读取更快?,php,mysql,file,Php,Mysql,File,嗨 我有一个疑问,我看到在大表的情况下读取mysql数据的速度较慢…我已经做了很多优化,但无法通过 我想的是,如果我将数据存储在一个文件中,它会提供更好的速度吗 当然,每个数据都将是一个单独的文件。因此,数百万数据=数百万文件。我同意这会占用磁盘空间。。。但是阅读过程呢??速度快吗 我正在使用PHP读取文件…来回答这个主题,是的 我的意思是,有太多(未提及的)因素,不可能明确地说每次一个都比另一个快。只要您的表被正确地索引,并且只要您使用这些索引(没错),使用关系数据库(如mysql)就会更快、

我有一个疑问,我看到在大表的情况下读取mysql数据的速度较慢…我已经做了很多优化,但无法通过

我想的是,如果我将数据存储在一个文件中,它会提供更好的速度吗

当然,每个数据都将是一个单独的文件。因此,数百万数据=数百万文件。我同意这会占用磁盘空间。。。但是阅读过程呢??速度快吗


我正在使用PHP读取文件…

来回答这个主题,是的


我的意思是,有太多(未提及的)因素,不可能明确地说每次一个都比另一个快。

只要您的表被正确地索引,并且只要您使用这些索引(没错),使用关系数据库(如mysql)就会更快、更健壮,灵活(在此处插入许多流行语)等


要检查查询性能与预期不符的原因,可以在selects()中使用
explain
子句。

读取一个文件=快速

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

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


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

这取决于许多因素,其中最重要的因素是您使用的文件系统类型。MySQL使用文件进行存储,所以读取速度不是问题——最大的因素是MySQL查找数据的速度,而不是在文件系统中查找数据的速度


不过,一般来说,MySQL在快速查找数据方面非常出色——毕竟,这是它的人生目标。因此,除非你有一个很好的理由说明FS应该快得多,否则还是使用DB并检查索引之类的东西。

如果选择自定义文件存储系统,你将失去使用关系数据库的好处。此外,您的代码可能不容易维护


尽管如此,仍有许多人认为关系数据库以速度为代价提供了太多的复杂性。查看维基百科中的条目,并阅读可能的替代方案。

这取决于您存储的数据类型结构化数据通常使用SQL读取速度更快、更灵活/更强大,因为这正是它的用途。如果您想按某个属性进行搜索、筛选、排序或分组,那么DBS的索引结构和优化是合适的

但是,如果使用数据库存储大型文件(BLOB),其中包含非结构化数据,即您不打算按文件的任何部分进行搜索、筛选、排序或分组,那么这些文件只会扩大数据库的大小,使其变慢。微软有一个关于这个主题的有趣的研究(只需要找到链接就可以了)。这项研究就是为什么微软在他们的SQLServer中引入外部BLOB存储的原因,这基本上意味着你所问的:BLOB保存在数据库之外的文件中,因为他们测量到这样的访问速度要快得多

在存储文件(例如,图片、视频、文档等)时,文件上通常有一些元数据,您希望能够使用结构化查询语言(如SQL)来使用这些元数据,而实际文件不一定需要保存在数据库中。

在大多数情况下,从dbms(MySQL)读取数据的速度更快,因为他们内置了高速缓存,可以将数据保存在内存中,所以下次尝试读取相同的数据时,您不必等待速度惊人的硬盘


dbms本质上是从硬盘+缓存中读取数据以加快速度(+一些数据排序算法)。记住,数据库存储在硬盘上:)

关系数据库提供的不仅仅是速度。。如果你想把所有这些都扔掉,你需要认真考虑一下,如果你突然想在你的数据中添加一个过滤器,那么你会怎么办?不是速度。除非数据库服务器功率不足或过载。@Ignacio Vazquez Abrams:…或关闭:P但是的,我明白你的观点。我只能想到在数据库中存储二进制数据的一个优点,这更安全。但是,如果您将文件存储在公共HTTP文件夹(不可直接访问)之外,则这不会成为问题。@DoctorLai-数据库也是文件。