2017-07-20 22 views
1

我知道MySQL通常很好地處理多行的表。但是,我目前面臨的情況是,同一時間多個用戶(大約10個)將讀取和寫入一張表,並且該表很可能包含100億行。MySQL對一個表與多個表的性能

我的設置是一個帶有InnoDB存儲引擎的MySQL數據庫。

我有些項目的心臟,那些大小的表格會變得效率低下,速度慢,也與索引有關。

我不喜歡有多個表具有完全相同的結構只是爲了拆分行的想法。 主要問題:但是,這不會解決由於這麼大的一堆行而導致性能下降的問題嗎?

其他問題:我還能做些什麼來處理這麼大的桌子?行數本身不會減少。

+0

常見問題;常見的答案是「不要分開大桌子」。黃昏時分很好地解釋它。 –

回答

3

我聽說過一些項目,那些大小的表格會變得效率低下,速度慢,也與索引有關。

這不是典型的。只要您的表格適合您使用它們的方式編制索引,即使對於非常大的表格,性能也應該保持合理。因爲BTREE指數的深度增加,但這種影響幾乎可以忽略不計。另外,它可以通過在索引中使用較小的鍵來減輕,因爲這可以最大限度地減少樹的深度。)

在某些情況下,更合適的解決方案可能是partitioning您的表格。這在內部將您的數據分成多個表,但將它們公開爲可正常查詢的單個表。但是,分區對錶的索引方式提出了一些特定要求,並不會固有地提高查詢性能。通過從按日期分區的表中刪除較舊的分區,可以同時從表中刪除大量較舊的數據,這一點非常有用。