MySQL数据库表中的最大logging数

MySQL数据库表的logging上限是多less? 我想知道autoincrement领域。 如果我添加了数百万条logging,会发生什么? 如何处理这种情况? 谢谢!

mysql的inttypes可以做很多行: http : //dev.mysql.com/doc/refman/5.0/en/numeric-types.html

无符号int最大值是4,294,967,295
无符号bigint最大值是18,446,744,073,709,551,615

整数的最大值与可以存储在表中的最大行数没有多大关系。

确实,如果使用int或bigint作为主键,则只能有与主键的数据types中唯一值的数量一样多的行,但不必使主键成为整数,你可以使它成为CHAR(100)。 您也可以将主键声明在多个列上。

除了行数外,还有其他对表格大小的限制。 例如,您可以使用具有文件大小限制的操作系统。 或者你可以有一个300GB的硬盘,如果每行的容量是1KB,那么这个硬盘只能存储3亿行。

据我所知,MySQL中每个表的行数没有结构限制。


请回复您的评论:我需要通过以下链接更正我的信息:

http://dev.mysql.com/doc/refman/5.1/en/source-configuration-options.html

MyISAM存储引擎每个表支持2 32行,但可以使用--with-big-tables选项构buildMySQL,以使每个表最多支持2 64行。

http://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html

InnoDB存储引擎似乎对行数没有限制,但对64字节的表大小有限制。 有多less行适合这取决于每行的大小。

我build议,不要删除数据。 不要说如果表格长于1000则截断表格的结尾。 在你的计划中需要有真实的业务逻辑,比如这个用户有多长时间不活动。 例如,如果它长于1年,则将它们放在不同的表中。 在一段缓慢的时间里,你会每周或每月在维护脚本中发生这种情况。

当你碰到你的表中的很多行时,你应该开始分割表或分区,并将旧数据放入旧表中,例如users_2011_jan,users_2011_feb或使用当月的数字。 然后改变你的编程来使用这个模型。 也许可以用较less的信息创build一个新表,以便在较less的列中汇总数据,然后在需要更多信息(如用户正在查看其configuration文件)时仅引用较大的分区表。 所有这些都应该被认真考虑,所以在将来重新考虑并不太昂贵。 您也可以只将来自您的网站的用户放在一张表中,而那些用户永远不会进入存档的一组表格。

在InnoDB中,表大小限制为64 TB,MySQL行数限制为65,535,可以有1,073,741,824行。 这将是使用最大行大小限制的最小logging数。 但是,如果行大小较小,则可以添加更多的logging。

根据http://dev.mysql.com/doc/refman/5.6/en/features.html中的可伸缩性和限制部分,MySQL支持大型数据库。; 他们使用包含5000万条logging的数据库的MySQL服务器。 一些用户使用具有200,000个表和约5,000,000,000行的MySQL服务器。

行大小限制

 The maximum row size for a given table is determined by several factors: 
  • 即使存储引擎能够支持更大的行,MySQL表的内部表示的最大行大小限制为65,535字节。 BLOB和TEXT列仅向行大小限制提供9到12个字节,因为它们的内容与行的其余部分分开存储。

  • 适用于本地存储在数据库页面内的数据的InnoDB表的最大行大小略小于半页。 例如,默认的16KB InnoDB页面大小(由innodb_page_sizeconfiguration选项定义)的最大行大小略小于8KB。 “ InnoDB表限制 ”。

  • 如果包含可变长度列的行超过了InnoDB最大行大小,InnoDB会select可变长度的列作为外部离页存储,直到行满足InnoDB行大小限制。 存储在页外的可变长度列本地存储的数据量因行格式而异。 有关更多信息,请参阅“ InnoDB行存储和行格式 ”。
  • 不同的存储格式使用不同数量的页眉和尾部数据,这会影响可用于行的存储量。

链接http://dev.mysql.com/doc/refman/5.7/en/column-count-limit.html

行大小限制

给定表的最大行大小由以下几个因素决定:

即使存储引擎能够支持更大的行,MySQL表的内部表示的最大行大小限制为65,535字节。 BLOB和TEXT列仅向行大小限制提供9到12个字节,因为它们的内容与行的其余部分分开存储。

对于4KB,8KB,16KB和32KB innodb_page_size设置,适用于本地存储在数据库页面内的数据的InnoDB表的最大行大小略小于半页。 例如,对于默认的16KB InnoDB页面大小,最大行大小略小于8KB。 对于64KB的页面,最大行大小略小于16KB。 请参见第15.8.8节“InnoDB表限制”。

如果包含可变长度列的行超过了InnoDB最大行大小,InnoDB会select可变长度的列作为外部离页存储,直到行满足InnoDB行大小限制。 存储在页外的可变长度列本地存储的数据量因行格式而异。 有关更多信息,请参见第15.11节“InnoDB行存储和行格式”。

不同的存储格式使用不同数量的页眉和尾部数据,这会影响可用于行的存储量。

有关InnoDB行格式的信息,请参见第15.11节“InnoDB行存储和行格式”和第15.8.3节“InnoDB表的物理行结构”。

有关MyISAM存储格式的信息,请参见第16.2.3节“MyISAM表格存储格式”。

http://dev.mysql.com/doc/refman/5.7/en/innodb-restrictions.html

它只取决于你的空闲内存和系统最大文件大小。没有限制。 但这并不意味着您不应该采取预防措施来解决数据库中的内存使用问题。 总是创build一个脚本,可以删除没有使用的行,或者在一个特定的数字中保持行数不变,比如一千。

没有限制。 它只取决于您的可用内存和系统最大文件大小。 但这并不意味着您不应该采取预防措施来解决数据库中的内存使用问题。 总是创build一个脚本,可以删除没有使用的行,或者在一个特定的数字中保持行数不变,比如一千。