我想知道我的MySQL表会被认为太大了。
表格如下:
因此行大小不是太大,但会不断添加。根据我的估计,我每天会看到大约17000个新行,所以每月大约有50万个。数据很可能会大量轮询。
我是否应该考虑分割方法,或者我现在还好吗?
谢谢,
答案 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
设置。
它可以从2
到7
个字节,使得可能的表大小从2 ^ (8 * 2) = 65k
到2 ^ (8 * 7) = 64P
个字节长。
默认情况下,它是6 bytes
(256T
)。
当然,由于MyISAM
表保存在一个文件中,因此文件的最大大小受OS
和文件系统的约束。
InnoDB
表空间可以包含2^32
个页面,每个页面4G
个16K
个页面,最多64T
个字节。