2009-08-07 166 views
2

我想知道在什麼時候我的MySQL表會被認爲太大。什麼是最大的SQL表大小

表是這樣的:

  • ID
  • CUSTOMER_ID(INT)
  • 值(浮點)
  • timestamp_1(日期時間)
  • tmestampt_2(日期時間)

所以行大小不是很大,但會不斷添加。據我估計,我每天大約看到17000個新行,每個月大概有50萬個。這些數據很可能會持續大量調查。

我應該在尋找方法來拆分這個,或者我現在還可以嗎?

謝謝,

+0

很難回答。您可以在一個表中擁有數億行,並且它可能仍然很快。這一切都取決於你朝向它的查詢。 – nos 2009-08-07 12:41:05

回答

5

http://dev.mysql.com/doc/refman/5.0/en/full-table.html

有效最大表大小爲MySQL數據庫通常通過對文件大小,而不是由MySQL內部限操作的系統約束來確定。

從鏈接文章中的表格可以看出,在FAT/FAT32系統和Linux 2.4之前,最大文件大小爲2-4 GB,在所有其他列出的系統上,最大文件大小至少爲2TB。

只要你正確地爲你的表建立索引,隨着你的表的增長,不應該有太多的減速。但是,如果您的表增長到您發現任何放緩的程度,那麼您可能會選擇定期歸檔舊記錄。

1

當查詢開始減慢時,它會太大。

您是否需要將整個歷史記錄保留在此表中或者您是否只是在尋找最新值?您可以通過將不需要的記錄歸檔到歸檔表中來優化事情。

除此之外,請小心如何規劃您的索引。如果你把索引放在整個地方,插入可能需要更長的時間。如果您沒有任何索引但需要排序和篩選,檢索可能會太慢。

2

什麼是「太大」是真的取決於你的硬件有多大。 MySQL本身在管理表中的數百萬行時應該沒有問題。

不過,我會考慮將其拆分以獲得最佳性能。具體怎麼做取決於數據的使用方式。更新的數據用得更頻繁嗎?如果是這樣,請創建一個具有相同結構的歸檔表來存儲舊數據,並定期將數據從主表移動到歸檔表。這會增加你的應用程序的複雜性,但是從長遠來看可以讓你獲得更好的性能。

1

MyISAM中,理論表大小受數據指針大小(由myisam_data_pointer_size設置)的限制。

它可以從27字節,使得可能的表大小從2^(8 * 2) = 65k2^(8 * 7) = 64P字節長。

默認情況下,它的6 bytes256T)。

當然,由於MyISAM表保存在一個文件中,文件的最大大小受到OS和文件系統的約束。

InnoDB表空間可以由多達2^32頁,這是4G頁,每頁16K字節,或64T字節至多的。

相關問題