SQL表的最大大小是多少

时间:2009-08-07 12:30:59

标签: mysql database

我想知道我的MySQL表会被认为太大了。

表格如下:

  • ID
  • customer_id(int)
  • value(float)
  • timestamp_1(datetime)
  • tmestampt_2(datetime)

因此行大小不是太大,但会不断添加。根据我的估计,我每天会看到大约17000个新行,所以每月大约有50万个。数据很可能会大量轮询。

我是否应该考虑分割方法,或者我现在还好吗?

谢谢,

4 个答案:

答案 0 :(得分:5)

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

  

MySQL数据库的有效最大表大小通常取决于操作系统对文件大小的约束,而不是MySQL内部限制。

从链接文章中的表格,在FAT / FAT32系统和Linux 2.4之前,最大文件大小为2-4 GB,在列出的所有其他系统上,最大文件大小至少为2 TB。

只要您正确地索引表,就不会因为表的增长而减慢太多。但是,如果您的表增长到您注意到任何减速的程度,那么您可以选择定期存档旧记录。

答案 1 :(得分:2)

什么是“太大”实际上取决于你的硬件有多大。 MySQL本身应该没有问题管理表中的数百万行。

尽管如此,我还是会考虑将其拆分以获得最佳性能。具体如何做到这将取决于数据的使用方式。是否更频繁地使用更新的数据?如果是这样,请创建具有相同结构的存档表以存储旧数据,并定期将数据从主表移动到存档表。这会增加应用程序的复杂性,但从长远来看可以提供更好的性能。

答案 2 :(得分:1)

当您的查询开始变慢时,它会太大。

您是否需要在此表中保留整个历史记录,或者您是否只查找最新值?您可以通过将不需要的记录存档到存档表中来优化事物。

除此之外,请注意您的索引计划方式。如果将索引放在所有位置,插入可能需要更长时间。如果您没有任何索引但需要排序和过滤,则检索可能太慢。

答案 3 :(得分:1)

MyISAM中,理论表格大小受数据指针大小的限制,由myisam_data_pointer_size设置。

它可以从27个字节,使得可能的表大小从2 ^ (8 * 2) = 65k2 ^ (8 * 7) = 64P个字节长。

默认情况下,它是6 bytes256T)。

当然,由于MyISAM表保存在一个文件中,因此文件的最大大小受OS和文件系统的约束。

InnoDB表空间可以包含2^32个页面,每个页面4G16K个页面,最多64T个字节。