Php MYSQL是否在达到表大小限制时截断表?

Php MYSQL是否在达到表大小限制时截断表?,php,mysql,Php,Mysql,我一直在翻阅MYSQL文档,试图确定是我的脚本还是MYSQL本身导致了一个大表的截断。我看到的基本行为是: 从浏览器启动一个PHP脚本,从MSSQL表中选择行,并立即将它们插入到本地MySQL数据库表中 在确定MSSQL中的行数之后,我的脚本将select分解为块,以避免内存不足问题 然后,脚本截断本地表,并通过迭代块开始导入数据 直接跟踪MySQL中的数据,我看到表接近200000行,然后突然表被截断,计数重新开始 我认为我会看到一些关于表已满的错误,我不认为MySQL会在达到表限制时截断表

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

  • 从浏览器启动一个PHP脚本,从MSSQL表中选择行,并立即将它们插入到本地MySQL数据库表中
  • 在确定MSSQL中的行数之后,我的脚本将select分解为块,以避免内存不足问题
  • 然后,脚本截断本地表,并通过迭代块开始导入数据
  • 直接跟踪MySQL中的数据,我看到表接近200000行,然后突然表被截断,计数重新开始
  • 我认为我会看到一些关于表已满的错误,我不认为MySQL会在达到表限制时截断表

有人能确认,如果达到表限制,MySQL是否会自动截断表,或者是否会通过检查设置来关闭这种行为吗?

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

显式表大小
您可以使用设置最大表格大小

ALTER TABLE tbl_name MAX_ROWS=200000
您可以使用查看表格大小的当前设置

SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
见:

请注意,
MAX_ROWS
是:

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

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

内存限制

如果您使用的是
内存
(堆)引擎,表大小由
max\u heap\u table\u size
系统变量决定。

没有MySQL设置表大小的硬限制,但有一些限制

显式表大小
您可以使用设置最大表格大小

ALTER TABLE tbl_name MAX_ROWS=200000
您可以使用查看表格大小的当前设置

SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
见:

请注意,
MAX_ROWS
是:

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

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

内存限制

如果您使用的是
memory
(heap)引擎,那么表的大小是由
max\u heap\u table\u size
系统变量决定的。

我不认为MySQL会截断您的数据,我曾经处理过500000行或更多行的表,我一点问题都没有。因此,我认为您最好注意您的PHP脚本,或者至少是PHP配置,PHP可以处理的所有超时设置和脚本大小

  • 最大执行时间
  • 最大输入时间
  • 内存限制

我希望这能对您有所帮助。

我不认为MySQL会截断您的数据,我曾经处理过500000行或更多行的表,我一点问题都没有。因此,我认为您最好注意您的PHP脚本,或者至少是PHP配置,PHP可以处理的所有超时设置和脚本大小

  • 最大执行时间
  • 最大输入时间
  • 内存限制

我希望这能对您有所帮助。

谢谢!我怀疑这不是MySQL,但在棺材里钉上钉子可以让我更容易在脚本中找到问题。谢谢!我怀疑这不是MySQL,但在棺材里钉上钉子可以更容易地在我的脚本中找到问题。