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