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