Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL数据库表中的最大记录数_Mysql_Database_Limit_Database Table - Fatal编程技术网

MySQL数据库表中的最大记录数

MySQL数据库表中的最大记录数,mysql,database,limit,database-table,Mysql,Database,Limit,Database Table,MySQL数据库表的记录上限是多少。我想知道自动递增字段。如果我添加数百万条记录,会发生什么?如何处理这种情况? 谢谢 mysql int类型可以执行很多行: 无符号int最大值为4294967295 无符号的bigint最大值是18446744073709551615整数的最大值与表中可以存储的最大行数几乎没有关系 诚然,如果使用int或bigint作为主键,则主键数据类型中的行数只能与唯一值的数目相同,但不必将主键设置为整数,可以将其设置为CHAR(100)。还可以在多个列上声明主键 除了行

MySQL数据库表的记录上限是多少。我想知道自动递增字段。如果我添加数百万条记录,会发生什么?如何处理这种情况?
谢谢

mysql int类型可以执行很多行:

无符号
int
最大值为
4294967295


无符号的
bigint
最大值是
18446744073709551615
整数的最大值与表中可以存储的最大行数几乎没有关系

诚然,如果使用int或bigint作为主键,则主键数据类型中的行数只能与唯一值的数目相同,但不必将主键设置为整数,可以将其设置为CHAR(100)。还可以在多个列上声明主键

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

数据库大小的限制非常高:

MyISAM存储引擎支持每个表232行,但是您可以使用
——使用大表
选项构建MySQL,使其支持每个表多达264行

InnoDB存储引擎每个表有一个内部6字节的行ID,因此最大行数等于248或281474976710656

InnoDB表空间的表大小也有64 TB的限制。有多少行可以放入其中取决于每行的大小


64TB限制假定默认页面大小为16KB。您可以增加页面大小,从而将表空间增加到256TB。但我认为,在您将表扩展到该大小之前,您会发现其他性能因素使此不可取。

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

我建议,永远不要删除数据。不要说表的长度是否超过1000,请截断表的结尾。在您的计划中需要有真正的业务逻辑,比如这个用户不活动了多长时间。例如,如果超过1年,则将其放在不同的表中。你会在缓慢的时间内每周或每月在维护脚本中发生这种情况。


当您在表中遇到多达多行时,您应该开始对表进行分片或分区,并按年份将旧数据放入旧表中,例如users\u 2011\u jan、users\u 2011\u feb或use number for the month。然后更改编程以使用此模型。可能会创建一个信息较少的新表,以较少的列汇总数据,然后仅在需要更多信息时(例如用户查看其配置文件时)才引用较大的分区表。所有这些都应该非常仔细地考虑,以便在将来重新考虑不会太昂贵。您还可以只将一直访问站点的用户放在一个表中,而从不访问站点的用户则放在一组存档的表中。

在InnoDB中,表大小限制为64 TB,MySQL行大小限制为65535,可以有1073741824行。这将是使用最大行大小限制的最小记录数。但是,如果行大小较小,则可以添加更多记录。

根据中的可伸缩性和限制部分, MySQL支持大型数据库。他们使用MySQL服务器和包含5000万条记录的数据库。一些用户使用MySQL服务器,它有200000个表和大约5000000000行。

  • MySQL表的内部表示具有最大行大小 限制为65535字节,即使存储引擎能够 支持较大的行。BLOB和TEXT列只贡献9到12 由于存储了字节的内容,因此字节数接近行大小限制 与行的其他部分分开

  • InnoDB表的最大行大小,适用于数据 本地存储在数据库页面中,略少于半个页面。例如,对于默认的16KB InnoDB页面大小,最大行大小略小于8KB,这是由InnoDB_page_size配置选项定义的。“”

  • 如果包含可变长度列的行超过InnoDB最大行大小,InnoDB将选择可变长度列作为外部页外存储,直到该行符合InnoDB行大小限制。 在本地存储的可变长度列的数据量 存储的页外数据因行格式而异。有关详细信息,请参阅 “”
  • 不同的存储格式使用不同数量的页眉和尾部数据,这会影响行的可用存储量
链接

行大小限制

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

MySQL表的内部表示具有65535字节的最大行大小限制,即使存储引擎能够支持较大的行。BLOB和TEXT列只为行大小限制贡献9到12个字节,因为它们的内容与行的其余部分分开存储

InnoDB表的最大行大小(适用于数据库页面中本地存储的数据)对于4KB、8KB、16KB和32KB InnoDB_页面大小设置来说略小于半页。例如,对于默认的16KB InnoDB页面大小,最大行大小略小于8KB。对于64KB页面,最大行大小略小于16KB。参见第15.8.8节“InnoDB表格的限制”

如果包含可变长度列的行超过InnoDB最大行数
The maximum row size for a given table is determined by several factors: