2015-12-03 21 views
0

简单的查询:MySQL的 - 找到表DB复杂

SELECT * FROM table 

我想知道什么是查找表的复杂性。它是O(n)吗?

我正在使用Wordpress多站点。它为每个博客创建额外的8个表格。目前有约4万个博客,所以有已超过300k表在一个单一的数据库。

我在问这个,因为我想了解如何在这一点上行动,我想避免未来的瓶颈。

谢谢!

+0

看看[INFORMATION_SCHEMA](https://dev.mysql.com/doc/refman/ 5.0/en/information-schema.html) – bansi

+0

在数据库中查找表的复杂性是什么?换句话说,MySQL在选择内容之前如何选择相关表格? – Fento

+1

我认为这个问题在serverfault.com上有一个很好的机会来获得“真实世界”的答案。 – VolkerK

回答

1

通常像100-200这样的大量表不会影响你的数据库,但是300k表是疯了。

想想像你的文件夹这样的表格,并将行看作文件。现在你的操作系统已经索引了不同文件夹中的所有文件,这使得搜索文件变得更容易。但是操作系统不能索引系统中的每个文件,它有一个内存限制。

同样在MYSQL每个表都有一个索引,所有这些索引存储在RAM中。现在,如果索引太多,那么你的RAM不能保存所有的数据。所以为了避免服务器崩溃,它将索引保存到硬盘上。但是硬盘比内存要慢得多,并且需要更长的时间才能找到索引。

说实话,这种数据库不能由普通的VPS服务器处理。为了最大限度地利用您的系统,您将不得不租用具有非常高RAM的服务器。尝试使用独立的管理数据库系统(如AWS RDS)进行自动调整,这会使数据库的调整和自动调整不再需要专家。如果RDS不可行,请尝试在您的my.cnf中增加key_buffer_size以达到您可以拥有的最大值。这样,更多的数据将存储在您的RAM中,而硬盘上的数据则会减少。

祝你好运,做分享您的发现在评论其很有趣,看你怎么克服它:)