简体   繁体   English

innodb删除表已满

[英]innodb delete table is full

I have problem witch delete records in innodb (table have somitem 100k rekords or 1mln records) Innodb have file per table I don't know why its happen. 我有问题女巫删除innodb中的记录(表有somitem 100k rekords或1mln记录)Innodb每个表有文件我不知道为什么会发生。 Always I can delete some records, next i see "table is full" ... after few secods i can delete more records.. 总是我可以删除一些记录,接下来我看到“表已满”...几秒后我可以删除更多记录..

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

Even if you have file-per-table active, deleting rows causes the old versions of rows to be copied to the central tablespace ibdata1 . 即使您具有活动的每个表文件,删除行也会导致旧版本的行复制到中央表空间ibdata1 Just in case you roll back the delete, or in case there are other transactions reading the database who need to see the rows you deleted to preserve their repeatable-read view of the database. 如果您回滚删除,或者有其他事务在读取数据库时需要查看您删除的行以保留其可重复读取的数据库视图。

The reason it clears up after a few seconds is that InnoDB gradually purges these copies of obsolete rows, and makes space in ibdata1. 它在几秒钟后清除的原因是InnoDB逐渐清除这些过时行的副本,并在ibdata1中腾出空间。

Normally ibdata1 can auto-extend if it needs to store more data in its rollback segment. 通常,如果ibdata1需要在其回滚段中存储更多数据,则可以自动扩展。 Did you configure ibdata1 without the autoextend keyword? 您是否在没有autoextend关键字的情况下配置了ibdata1?

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

Without the autoextend keyword, the ibdata1 file has a fixed size, and you can fill it up pretty easily when you delete a lot of rows. 如果没有autoextend关键字,ibdata1文件的大小是固定的,当您删除大量行时,可以非常轻松地填充它。

See also: https://dba.stackexchange.com/questions/43503/how-to-solve-the-table-is-full-with-innodb-file-per-table 另见: 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