MySQL数据库表记录的上限是多少?我想知道自增域。如果我添加数百万条记录会发生什么?如何处理这种情况? 谢谢!
当前回答
在InnoDB中,表的大小限制为64tb, MySQL的行大小限制为65,535,因此可以有1,073,741,824行。这将是利用最大行大小限制的最小记录数。但是,如果行大小较小,则可以添加更多记录。
其他回答
我建议,永远不要删除数据。不要说如果表的长度大于1000,就截断表的末尾。你的计划中需要有真实的业务逻辑,比如这个用户不活跃了多长时间。例如,如果它长于1年,那么将它们放在不同的表中。在维护脚本中,您可能每周或每月都遇到这种情况。
When you run into to many rows in your table then you should start sharding the tables or partitioning and put old data in old tables by year such as users_2011_jan, users_2011_feb or use numbers for the month. Then change your programming to work with this model. Maybe make a new table with less information to summarize the data in less columns and then only refer to the bigger partitioned tables when you need more information such as when the user is viewing their profile. All of this should be considered very carefully so in the future it isn't too expensive to re-factor. You could also put only the users which comes to your site all the time in one table and the users that never come in an archived set of tables.
在InnoDB中,表的大小限制为64tb, MySQL的行大小限制为65,535,因此可以有1,073,741,824行。这将是利用最大行大小限制的最小记录数。但是,如果行大小较小,则可以添加更多记录。
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
链接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
整数的最大值与表中可以存储的最大行数关系不大。
确实,如果您使用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。但我认为,在将表扩展到这种大小之前,您会发现其他性能因素使这种方法不可取。
推荐文章
- 如何关闭mysql密码验证?
- MySQL区分大小写查询
- 获得PostgreSQL数据库中当前连接数的正确查询
- MySQL数据库表中的最大记录数
- 原则-如何打印出真正的sql,而不仅仅是准备好的语句?
- PHP/MySQL插入一行然后获取id
- 从现有模式生成表关系图(SQL Server)
- HyperLogLog算法是如何工作的?
- 数据库和模式的区别
- 如何从命令行通过mysql运行一个查询?
- 使用LIMIT/OFFSET运行查询,还可以获得总行数
- 如何从命令行在windows中找到mysql数据目录
- 如何找到MySQL的根密码
- 如何改变字符集(和排序)在整个数据库?
- mySQL:: insert到表,数据从另一个表?