即使没有访问,单个大表也会减慢数据库的速度吗?

时间:2014-08-03 14:25:53

标签: php mysql

如果您的网站的一小部分有一个包含缩略图的表格,那么该数据库是否会正常运行(假设没有访问大型表格),或者整体速度是否会降低?

例如,我发现我的免费虚拟主机提供了无限的数据库大小,但只有10,000个文件(因此我将缩略图存储在数据库中),所以我很好奇我是否可以留下一些未使用的值 - 所以在重复的情况下,它会找到匹配的哈希并重新链接到旧值,或者只是删除该行会更好吗?

2 个答案:

答案 0 :(得分:4)

数据库最终将数据存储在磁盘上。数据库性能并未受磁盘空间和磁盘使用量的影响(在某些极端情况下除外,例如磁盘空间不足或磁盘空间严重分散,这些都不是您的问题)。

数据库性能是由内存中发生的事情驱动的,特别是将数据从磁盘加载到内存所花费的时间。内存中有各种数据缓存,例如页面缓存。当页面不可用时,引擎必须从磁盘中获取它 - 这需要时间。

永远不会被使用的磁盘上的表不应该使用内存中的任何空间。这意味着其他查询使用的其他表可以填满内存,没有问题。当然,当该表被修改时,一个或多个页面加载到内存中。根据您的描述,这不会占用大部分内存缓存。

您问题的基本答案是磁盘上挂着的大桌子不会影响性能。当然,对表的修改会影响性能,因为这项工作将由可用于其他查询的处理器和内存完成。

答案 1 :(得分:2)

简而言之,答案是否定的。因为每次都没有访问的单个大表不会读取内存。当我进入内存时,数据库的性能就会起作用。所以它没有进入行为,它不要解析为评论中提到的@bad_boy。