最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

回收InnoDB表空间_MySQL

来源:懂视网 责编:小采 时间:2020-11-09 18:46:47
文档

回收InnoDB表空间_MySQL

回收InnoDB表空间_MySQL:bitsCN.com 回收InnoDB表空间 以下论述均假定innodb_file_per_table开启先用常规optimize回收:[plain] mysql> select count(*) from t; +----------+ | count(*) | +----------+ | 1200096 | +----------
推荐度:
导读回收InnoDB表空间_MySQL:bitsCN.com 回收InnoDB表空间 以下论述均假定innodb_file_per_table开启先用常规optimize回收:[plain] mysql> select count(*) from t; +----------+ | count(*) | +----------+ | 1200096 | +----------

bitsCN.com

回收InnoDB表空间

以下论述均假定innodb_file_per_table开启

先用常规optimize回收:

[plain]

mysql> select count(*) from t; 

+----------+

| count(*) |

+----------+

| 1200096 |

+----------+

[mysql@even employees]$ ls -alh t.ibd

-rw-rw---- 1 mysql dba 72M 10-08 17:39 t.ibd

mysql> delete from t limit 800000;

mysql> select count(*) from t;

+----------+

| count(*) |

+----------+

| 400096 |

+----------+

[mysql@even employees]$ ls -alh t.ibd

-rw-rw---- 1 mysql dba 72M 10-08 17:41 t.ibd

mysql> optimize table t;

+-------------+----------+----------+-------------------------------------------------------------------+

| Table | Op | Msg_type | Msg_text |

+-------------+----------+----------+-------------------------------------------------------------------+

| employees.t | optimize | note | Table does not support optimize, doing recreate + analyze instead |

| employees.t | optimize | status | OK |

+-------------+----------+----------+-------------------------------------------------------------------+

[mysql@even employees]$ ls -alh t.ibd

-rw-rw---- 1 mysql dba 29M 10-08 17:43 t.ibd

来看下这种方法的缺陷

[plain]

mysql> show processlist;

+----+------+-----------+-----------+---------+------+-------------------+------------------+

| Id | User | Host | db | Command | Time | State | Info |

+----+------+-----------+-----------+---------+------+-------------------+------------------+

| 5 | root | localhost | NULL | Query | 0 | NULL | show processlist |

| 6 | root | localhost | employees | Query | 64 | copy to tmp table | optimize table t |

+----+------+-----------+-----------+---------+------+-------------------+------------------+

mysqladmin debug结果如下

[plain]

Thread database.table_name Locked/Waiting Lock_type

6 employees.t Locked - read Read lock without concurrent inserts

用optimize缺点显而易见:读锁,特别当你有大表时性能恐怕会深受影响

这里推荐使用percona公司:pt-online-schema-change,避免加锁

[plain]

$ pt-online-schema-change -uroot -poracle --alter "ENGINE=InnoDB" D=employees,t=t --execute

执行pt工具时有可能发生的类似错误:

[plain]

Cannot chunk the original table There is no good index and the table is oversized

这是因为被作用的表需要含有主键或者唯一索引,这或许也能成为这款工具的小bug吧

bitsCN.com

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

回收InnoDB表空间_MySQL

回收InnoDB表空间_MySQL:bitsCN.com 回收InnoDB表空间 以下论述均假定innodb_file_per_table开启先用常规optimize回收:[plain] mysql> select count(*) from t; +----------+ | count(*) | +----------+ | 1200096 | +----------
推荐度:
标签: 空间 回收 mysql
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top