MySQL数据库表记录的上限是多少?我想知道自增域。如果我添加数百万条记录会发生什么?如何处理这种情况? 谢谢!
当前回答
根据http://dev.mysql.com/doc/refman/5.6/en/features.html中的可伸缩性和限制部分, MySQL支持大型数据库。他们使用MySQL服务器,数据库包含5000万条记录。一些用户使用的MySQL服务器有20万个表和约50亿行。
其他回答
Mysql int类型可以做相当多的行:http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html
Unsigned int的最大值是4294967295 Unsigned bigint的最大值为18,446,744,073,709,551,615
在InnoDB中,表的大小限制为64tb, MySQL的行大小限制为65,535,因此可以有1,073,741,824行。这将是利用最大行大小限制的最小记录数。但是,如果行大小较小,则可以添加更多记录。
整数的最大值与表中可以存储的最大行数关系不大。
确实,如果您使用int或bigint作为主键,那么您只能拥有与主键数据类型中唯一值数量相同的行数,但您不必将主键设置为整数,您可以将其设置为CHAR(100)。还可以在多个列上声明主键。
除了行数之外,表大小还有其他限制。例如,您可以使用具有文件大小限制的操作系统。或者你有一个300GB的硬盘,如果每行大小为1KB,那么只能存储3亿行。
数据库大小的限制非常高:
http://dev.mysql.com/doc/refman/5.1/en/source-configuration-options.html
MyISAM存储引擎支持每个表232行,但是您可以使用——with-big-tables选项构建MySQL,使其支持每个表最多264行。
http://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html
InnoDB存储引擎每个表都有一个内部的6字节行ID,因此最大行数等于248或281,474,976,710,656。
InnoDB表空间也有64tb的表大小限制。它能容纳多少行取决于每一行的大小。
64TB限制假设默认页面大小为16KB。您可以增加页面大小,从而将表空间增加到256TB。但我认为,在将表扩展到这种大小之前,您会发现其他性能因素使这种方法不可取。
行大小限制
给定表的最大行大小由以下几个因素决定:
The internal representation of a MySQL table has a maximum row size limit of 65,535 bytes, even if the storage engine is capable of supporting larger rows. BLOB and TEXT columns only contribute 9 to 12 bytes toward the row size limit because their contents are stored separately from the rest of the row. The maximum row size for an InnoDB table, which applies to data stored locally within a database page, is slightly less than half a page. For example, the maximum row size is slightly less than 8KB for the default 16KB InnoDB page size, which is defined by the innodb_page_size configuration option. “Limits on InnoDB Tables”. If a row containing variable-length columns exceeds the InnoDB maximum row size, InnoDB selects variable-length columns for external off-page storage until the row fits within the InnoDB row size limit. The amount of data stored locally for variable-length columns that are stored off-page differs by row format. For more information, see “InnoDB Row Storage and Row Formats”. Different storage formats use different amounts of page header and trailer data, which affects the amount of storage available for rows.
链接http://dev.mysql.com/doc/refman/5.7/en/column-count-limit.html
行大小限制
给定表的最大行大小由以下几个因素决定:
即使存储引擎能够支持更大的行,MySQL表的内部表示也有65,535字节的最大行大小限制。BLOB和TEXT列仅为行大小限制贡献了9到12个字节,因为它们的内容与行其余部分分开存储。
InnoDB表的最大行大小,适用于本地存储在数据库页面中的数据,对于4KB、8KB、16KB和32KB的innodb_page_size设置,略小于半页。例如,对于默认的16KB InnoDB页面大小,最大行大小略小于8KB。对于64KB的页面,最大行大小略小于16KB。参见15.8.8节“InnoDB表的限制”。
如果包含变长列的行超过InnoDB的最大行大小,InnoDB将选择变长列进行外部页外存储,直到该行符合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
推荐文章
- 如何关闭mysql密码验证?
- MySQL区分大小写查询
- 获得PostgreSQL数据库中当前连接数的正确查询
- MySQL数据库表中的最大记录数
- 原则-如何打印出真正的sql,而不仅仅是准备好的语句?
- PHP/MySQL插入一行然后获取id
- 从现有模式生成表关系图(SQL Server)
- HyperLogLog算法是如何工作的?
- 数据库和模式的区别
- 如何从命令行通过mysql运行一个查询?
- 使用LIMIT/OFFSET运行查询,还可以获得总行数
- 如何从命令行在windows中找到mysql数据目录
- 如何找到MySQL的根密码
- 如何改变字符集(和排序)在整个数据库?
- mySQL:: insert到表,数据从另一个表?