繁体   English   中英

达到表大小限制时,MYSQL 是否会截断表?

[英]Does MYSQL truncate a table when the tables size limit is reached?

我一直在翻阅 MYSQL 文档,试图确定我的脚本或 MYSQL 本身是否导致大表截断。 我看到的基本行为:

  • PHP 脚本从浏览器启动到 MSSQL 表中的 select 行,并立即将它们插入到本地 MySQL 数据库表中。
  • 在确定 MSSQL 中的行数后,我的脚本将 select 分解为块,以避免出现任何 memory 问题。
  • 然后该脚本截断本地表并通过迭代块开始导入数据
  • 直接跟踪 MySQL 中的数据,我看到表接近约 200,000 行,然后表突然被截断,计数重新开始
  • 我认为我会看到一些关于表已满的错误,并且如果达到表限制,我认为 MySQL 不会截断表。

任何人都可以确认 MySQL 是否会在达到表格限制或检查关闭此类行为的设置时自动截断表格?

没有 MySQL 对表的大小没有硬性限制,但是有一些限制......

显式表大小
您可以设置最大表大小

ALTER TABLE tbl_name MAX_ROWS=200000

您可以通过以下方式查看表格大小的当前设置

SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';

请参阅: http://dev.mysql.com/doc/refman/5.0/en/full-table.html

请注意, MAX_ROWS是:

您计划在表中存储的最大行数。 这不是硬性限制,而是对存储引擎的提示,即表必须能够存储至少这么多行。

文件系统限制
MySQL 5.x 的默认表大小为 256TB,但如果您的文件系统不允许大于 4GB 的文件,这也可能是导致此行为的限制。

Memory 限制
如果您使用的是memory (堆)引擎,则您的表大小由max_heap_table_size系统变量确定。

我不认为 MySQL 会截断您的数据,我使用过 500,000 行或更多行的表,完全没有问题。 所以,我认为你最好注意你的 PHP 脚本或至少 PHP 配置,PHP 可以处理的脚本的所有超时设置和大小。

  • max_execution_time
  • 最大输入时间
  • 内存限制

我希望这可以帮助你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM