2010-01-26 48 views
12

MySQL可以處理的表的最大數量是多少?MySQL中的最大表數

+0

有關文檔,請參見[限制數據庫和表的數量](https://dev.mysql.com/doc/refman/5.5/en/database-count- limit.html)和類似的。例如。 'InnoDB'允許高達40億張桌子(我必須承認,如果這是美國的數十億美元,我不能說)。對於專業評論:[Bill Karwin在「是否有最大數量的MySQL數據庫可以擁有?」](https://www.quora.com/Is-there-a-maximum-number-of-tables- a-MySQL-database-can-have) – hakre 2017-02-13 23:35:33

回答

24

的事實,你問這個問題可能是你沒有采取最佳實踐方法,以你的問題的一個指標。

您可能要解釋爲什麼你需要創建很多表,以查看是否您將收到關於如何解決這個問題的更好的建議。

不過,也有在一個MySQL數據庫中的表的數目沒有服務器限制,但因爲每個MyISAM表具有相關的文件,然後在允許將有效力的文件數量的任何操作系統的限制。 InnoDB表,索引等存儲在一個表空間中,最多有20億個表。 (Source

+2

什麼是MyISAM? – John 2010-01-27 02:03:23

+4

MyISAM是MySQL的默認存儲引擎。你的表可能使用MyISAM,除非你明確聲明使用InnoDB。每個MyISAM表都以三個文件存儲在磁盤上。這些文件的名稱以表名開頭,並有一個擴展名來指示文件類型。 .frm文件存儲表格格式。數據文件具有.MYD擴展名。索引文件具有.MYI擴展名。更多信息:http://dev.mysql.com/doc/refman/5.0/en/myisam-storage-engine.html,http://en.wikipedia.org/wiki/MyISAM。 – 2010-01-27 04:54:57

+2

+1,因爲即使在指出它可能不是一個好主意之後仍然回答這個問題。 – 2013-01-07 19:20:38

2

與Daniel Vassallo的回答相反,我有一個需要大量表的用例。我可能是錯的,但我不認爲有什麼「最佳做法」可以減少桌子的數量。

雖然它可能是正確的,表的數量僅由操作系統的限制,我只想補充一點,我使用了超過1000個數據庫中的表有相當不錯的表現。唯一的缺點似乎是增加了.frm文件的開銷。在我的情況下,我已經將一個非常大的表分割成1000多個具有相同表結構的獨立表。 MySQL分區對我來說不是一種選擇,因爲非規範化需要在單獨的表中記錄每個記錄的2個副本。

+0

*「我已將一張非常大的桌子分成1000多張獨立的桌子」* - 您爲什麼必須這樣做? – TMS 2013-06-30 09:17:54

+0

提高性能(更快的查詢時間)。正如我所解釋的那樣,分區不是一種選擇,因爲它不允許我將每個記錄的兩個副本放入不同的分區(至少不是我能想出的任何方式)。 – robguinness 2013-07-01 09:59:31

+0

從數據規範化的角度來看,很多表可能是不好的做法(取決於表)。只是說,每種理論都需要在實踐中得到證實,反之亦然。所以我懷疑你的評論(在答案中)採取的立場,但是+1分享你所做的。 – hakre 2017-02-13 23:33:42

4

我也有在需要大量的表的使用情況。目前我們的一個數據庫擁有接近100.000張桌子,並且表現出色。

正如羅布吉尼斯提到的,對於.FRM文件顯著的開銷。同樣重要的是要注意,對信息模式的任何查詢都沒有限制,如果可能的話,表本身在查詢運行時會導致嚴重的性能下降。

+0

這些表中的每一個都有不同的結構? – TMS 2013-06-30 09:16:17