1、先来看看多次删除插入操作后的表索引情况

mysql> SHOW INDEX FROM `tbl_name`;

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

| Table | Non_unique | Key_name | Seq_in_index | Column_name |
Collation | Cardinality | Sub_part | Packed | Null | Index_type |
Comment |

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

| tbl_name | 0 | PRIMARY | 1 | StepID | A
| 1 | NULL | NULL | | BTREE | |

| tbl_name | 1 | FlowID | 1 | FlowID | A
| 1 | NULL | NULL | | BTREE | |

| tbl_name | 1 | WagerCount | 1 | WagerCount | A
| 1 | NULL | NULL | | BTREE | |

| tbl_name | 1 | WagerID_3 | 1 | WagerID | A
| 1 | NULL | NULL | | BTREE | |

| tbl_name | 1 | WagerID_3 | 2 | StepType | A
| 1 | NULL | NULL | | BTREE | |

| tbl_name | 1 | WagerID_3 | 3 | ParamResult | A
| 1 | 255 | NULL | | BTREE | |

| tbl_name | 1 | StepType_2 | 1 | StepType | A
| 1 | NULL | NULL | | BTREE | |

| tbl_name | 1 | StepType_2 | 2 | ParamResult | A
| 1 | 255 | NULL | | BTREE | |

| tbl_name | 1 | WagerID_2 | 1 | WagerID | A
| 1 | NULL | NULL | | BTREE | |

| tbl_name | 1 | WagerID_2 | 2 | StepType | A
| 1 | NULL | NULL | | BTREE | |

| tbl_name | 1 | WagerID_2 | 3 | ParamResult | A
| 1 | 255 | NULL | | BTREE | |

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

11 rows in set (0.01 sec)

2、优化表

mysql> optimize table tbl_name;

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

| Table | Op | Msg_type | Msg_text |

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

| test.tbl_name | optimize | status | OK |

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

1 row in set (40.60 sec)

3、再来看看优化后的效果

mysql> SHOW INDEX FROM `tbl_name`;

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

| Table | Non_unique | Key_name | Seq_in_index | Column_name |
Collation | Cardinality | Sub_part | Packed | Null | Index_type |
Comment |

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

| tbl_name | 0 | PRIMARY | 1 | StepID | A
| 172462 | NULL | NULL | | BTREE | |

| tbl_name | 1 | FlowID | 1 | FlowID | A
| 86231 | NULL | NULL | | BTREE | |

| tbl_name | 1 | WagerCount | 1 | WagerCount | A
| 4311 | NULL | NULL | | BTREE | |

| tbl_name | 1 | WagerID_3 | 1 | WagerID | A
| 86231 | NULL | NULL | | BTREE | |

| tbl_name | 1 | WagerID_3 | 2 | StepType | A
| 172462 | NULL | NULL | | BTREE | |

| tbl_name | 1 | WagerID_3 | 3 | ParamResult | A
| 172462 | 255 | NULL | | BTREE | |

| tbl_name | 1 | StepType_2 | 1 | StepType | A
| 9 | NULL | NULL | | BTREE | |

| tbl_name | 1 | StepType_2 | 2 | ParamResult | A
| 86231 | 255 | NULL | | BTREE | |

| tbl_name | 1 | WagerID_2 | 1 | WagerID | A
| 86231 | NULL | NULL | | BTREE | |

| tbl_name | 1 | WagerID_2 | 2 | StepType | A
| 172462 | NULL | NULL | | BTREE | |

| tbl_name | 1 | WagerID_2 | 3 | ParamResult | A
| 172462 | 255 | NULL | | BTREE | |

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

最后,来看看手册中关于 OPTIMIZE 的描述:

OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...



如果您已经删除了表的一大部分,或者如果您已经对含有可变长度行的表(含有VARCHAR, BLOB或TEXT列的表)进行了很多更改,则应使用

OPTIMIZE TABLE。被删除的记录被保持在链接清单中,后续的INSERT操作会重新使用旧的记录位置。您可以使用OPTIMIZE TABLE来重新

利用未使用的空间,并整理数据文件的碎片。



在多数的设置中,您根本不需要运行OPTIMIZE TABLE。即使您对可变长度的行进行了大量的更新,您也不需要经常运行,每周一次或每月一次

即可,只对特定的表运行。



OPTIMIZE TABLE只对MyISAM, BDB和InnoDB表起作用。



注意,在OPTIMIZE TABLE运行过程中,MySQL会锁定表。

mysql中OPTIMIZE TABLE的作用的更多相关文章

  1. mysql中OPTIMIZE TABLE的作用

    在使用mysql的时候有时候,可能会发现尽管一张表删除了许多数据,但是这张表表的数据文件和索引文件却奇怪的没有变小.这是因为mysql在删除数据(特别是有Text和BLOB)的时候,会留下许多的数据空 ...

  2. mysql中OPTIMIZE TABLE的作用及使用

    来看看手册中关于 OPTIMIZE 的描述: OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... 如果您已经删除 ...

  3. MySQL中 optimize table '表名'的作用

    语法: optimize table '表名' 一,原始数据 1,数据量 2,存放在硬盘中的表文件大小 3,查看一下索引信息 索引信息中的列的信息说明. Table :表的名称.Non_unique: ...

  4. MySQL中optimize的作用

    MySQL执行命令delete语句时,如果包括where条件,并不会真正的把数据从表中删除,而是将数据转换成了碎片,通过下面的命令可以查看表中的碎片数量和索引等信息: mysql > show ...

  5. OPTIMIZE TABLE的作用--转载

    当您的库中删除了大量的数据后,您可能会发现数据文件尺寸并没有减小.这是因为删 除操作后在数据文件中留下碎片所致.Discuz! 在系统数设置界面提供了数据表优化的功能,可以去除删除操作后留下的数据文件 ...

  6. mysql之 OPTIMIZE TABLE整理碎片

    来看看手册中关于 OPTIMIZE 的描述: OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... 如果您已经删除 ...

  7. Mysql中truncate table和delete语句的区别

    Mysql中的truncate table和delete语句都可以删除表里面所有数据,但是在一些情况下有些不同! 例子: truncate table gag; (1)truncate table删除 ...

  8. mysql中参数--init-file的作用是什么呢?

    需求描述: 今天在修改测试环境mysql数据库中root用户密码的时候,用到了--init-file参数, 所以,就在这里说下该参数的作用. 概念解释: 参数:--init-file=file_nam ...

  9. mysql中 show table status 获取表信息

    用法 mysql>show table status; mysql>show table status like 'esf_seller_history'\G; mysql>show ...

随机推荐

  1. 不写一行代码,利用常用工具和软件批量下载URL资源

    有时候会遇到这种情况:想从某个网站下载一批东西,目标URL是比较规整的,而且结构都一样(仅某些字段不同).但又懒得开IDE专门写个脚本去弄,今天就和大家分享一下,如何利用手边常用的软件和工具,不用写一 ...

  2. MarkDown的用法

    # 一级标题## 二级标题### 三级标题#### 四级标题##### 五级标题###### 六级标题# 无序标题- 文本- 文本- 文本# 有序标题1. 文本2. 文本3. 文本# 图片链接[张驰博 ...

  3. JavaScript的DOM编程--09--节点的替换

    节点的替换: 1). replaceChild(): 把一个给定父元素里的一个子节点替换为另外一个子节点 var reference = element.replaceChild(newChild,o ...

  4. 三:Redis连接池、JedisPool详解、Redisi分布式

    单机模式: package com.ljq.utils; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; ...

  5. python中顺序查找分析和实现

    顺序查找算法是一种很基本的查找算法,该算法的复杂度一般是最大是O(n),假如加上顺序查找,算法的复杂度 还要降一倍,为O(n/2). Python的代码实现如下所示: def sequential_s ...

  6. leetcode — word-break

    import java.util.Arrays; import java.util.HashSet; import java.util.Set; /** * Source : https://oj.l ...

  7. 一种laravel特有的serviceProvider的加载方式

    这里的laravel版本5.5. 我是使用到dingo这个包的时候,觉得很奇怪,我们一般的包使用的时候都需要加载一个serviceProvider,提供服务,dingo/api这里也有ServiceP ...

  8. 在VSCode中编辑HTML文档时,在Dom标签上写style属性时智能提示的问题

    首先在VSCode中打开一个HTML文件 然后点右下角的“选择语言模式” 然后点击配置HTML语言的基础设置 然后在打开的界面中(右侧) 输入如下代码 { "editor.quickSugg ...

  9. python键盘读入的input方法

    今天了解了一下python,学了一些小东西,便存下了: input函数(raw_input在3.0版本没有,所以就不说了!) num = input ("输入一个数:")  |备注 ...

  10. 20 Zabbix系统性能优化建议

    点击返回:自学Zabbix之路 20 Zabbix系统性能优化建议 1. Zabbix性能变慢的可能表现: zabbix队列有太多被延迟的item,可以通过administration-queue查看 ...