2012-07-27 103 views
0

在具有多个表的MySQL数据库中,是否受同一数据库中所有其他表的大小影响的表上的查询运行时间?受其他表大小影响的表的MySQL速度?

+0

其受插入和更新的同一表的大小的影响。但其他桌子?我不确定。只有插入,更新,选择使用“其他表”我猜 – nawfal 2012-07-27 21:12:17

回答

2

我只能想到其他表可能会对查询产生两种影响,假设这些表未包含在查询中,没有其他查询正在运行,并且没有链接表的约束或触发器。

第一个效果是在编译阶段。在此阶段,SQL解析器从元数据表中获取有关表和列的信息。数据库中的更多表和列可能会减慢查询的编译速度。

其他影响是页表和磁盘碎片。如果你有一个干净的系统并开始分配和填充页面,那么页面可能会填充磁盘上的连续页面(不保证,但可能)。在访问时,操作系统可能预先获取与请求页面相邻的物理页面。在我描述的环境中,这个预取数据可能会用在查询中。

在具有多个表的数据库中,磁盘碎片的可能性大得多。在这种情况下,预取硬件页面不太可能用于查询中的相同表格。这意味着它们没有被使用,所以需要额外的I/O请求来获得下一页。

我已经在磁盘碎片方面描述了这一点,但页面本身可能会发生类似的情况。存储表格数据的物理页面可能不是连续的,具有相似的结果。

碎片可能是数据库的问题。事实上,无论数据库中有多少表,它都可能成为问题。但是更多的表格具有更多的插入/删除活动往往会增加碎片。但是,这些影响通常很小,只会在某些极端情况下导致性能显着下降。

+0

磁盘碎片和I/O缓存问题更多地关联到相同的服务器,而不是相同的数据库,但他们仍应该考虑。不确定同一服务器上的不同数据库是否会在查询编译和规划时影响性能。 – Vatev 2012-07-28 00:58:10

1

有许多表(和数据)只需要一个硬盘空间。

处理速度取决于您执行的表优化和大小+查询,而不是整个数据库。

1

查询运行时可能会受到各种服务器环境问题的影响,因此,虽然可以说在数据库中具有其他大型表并不会影响无关表上查询的速度,实际情况是,这些表格可能也会被查询并消耗服务器资源。这当然会影响您的查询速度。

1

它应该只是一个问题,如果该表(大)与其他表与一些连接(外键约束将是一个例子)相关...否则你的表应该独立行为。也就是说,如果你有一张表如此庞大以至于造成速度问题,那么你可能需要找到其他解决方案来将一些数据重构为更小的子集。

相关问题