2015-12-03 20 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中,而硬盤上的數據則會減少。

祝你好運,做分享您的發現在評論其很有趣,看你怎麼克服它:)