繁体   English   中英

innodb删除表已满

[英]innodb delete table is full

我有问题女巫删除innodb中的记录(表有somitem 100k rekords或1mln记录)Innodb每个表有文件我不知道为什么会发生。 总是我可以删除一些记录,接下来我看到“表已满”...几秒后我可以删除更多记录..

mysql> DELETE from xxxx WHERE id > 1413139758 AND id <= 1413819239 LIMIT 10000;
Query OK, 10000 rows affected (0.30 sec)

mysql> DELETE from xxxx WHERE id > 1413139758 AND id <= 1413819239 LIMIT 10000;
ERROR 1114 (HY000): The table 'xxxx' is full

即使您具有活动的每个表文件,删除行也会导致旧版本的行复制到中央表空间ibdata1 如果您回滚删除,或者有其他事务在读取数据库时需要查看您删除的行以保留其可重复读取的数据库视图。

它在几秒钟后清除的原因是InnoDB逐渐清除这些过时行的副本,并在ibdata1中腾出空间。

通常,如果ibdata1需要在其回滚段中存储更多数据,则可以自动扩展。 您是否在没有autoextend关键字的情况下配置了ibdata1?

mysql> SHOW GLOBAL VARIABLES LIKE 'innodb_data_file_path';
+-----------------------+------------------------+
| Variable_name         | Value                  |
+-----------------------+------------------------+
| innodb_data_file_path | ibdata1:10M:autoextend |
+-----------------------+------------------------+

如果没有autoextend关键字,ibdata1文件的大小是固定的,当您删除大量行时,可以非常轻松地填充它。

另见: https//dba.stackexchange.com/questions/43503/how-to-solve-the-table-is-full-with-innodb-file-per-table

暂无
暂无

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

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