MySQL之OPTIMIZE TABLE应用简介

简介

MySQL删除表数据(DELETE)时,MySQL并不会回收这条记录占据的存储空间以及索引位,而是空在那里,等待新的数据来弥补这个空洞。若一时半会没有数据来填补这个空洞,就会形成资源浪费。OPTIMIZE TABLE操作会整理数据文件的碎片,释放多余的空间。所以对于写操作比较频繁的表,需要根据实际情况定期进行optimize。

OPTIMIZE TABLE是由各存储引擎实现的,所以并不是所有存储引擎都可以应用这个操作,目前只有MyISAMBDBInnoDB可以实现该功能。且OPTIMIZE TABLE运行过程中,MySQL会锁定表

-- 语法
OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tb_name [, tbl_name] ...
-- 通常案例
OPTIMIZE TABLE 表名;

急于应用的读者可以止步于此。
 

使用场景

1、一张表在上一次OPTIMIZE后已经进行过大量删除操作(DELETE)。
2、一张表在上一次OPTIMIZE后已经对含有可变长度行的表(含有VARCHAR, BLOB或TEXT列的表)进行了很多更改(UPDATE)

在多数的设置中,数据库不需要运行OPTIMIZE TABLE。即使有必要进行该操作也不必频繁执行,按照需求制定执行周期,或每周一次、或每月一次等即可,且只对特定的表执行。
 

STEP1:准备阶段

创建测试表,并创建100w条数据,将col1字段设置为普通索引,将(col2, col3)设置为组合索引。

  • 建表
DROP TABLE IF EXISTS demo_table;
CREATE TABLE demo_table (
  `id` bigint(20) PRIMARY KEY NOT NULL 
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值