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. Codebase Refactoring (with help from Go)

    Codebase Refactoring (with help from Go) 代码库重构(借助于Go) 1.摘要 Go应该添加为类型创建替代等效名称的能力,以便在代码库重构期间渐进代码修复.本文解 ...

  2. K:常见的正则表达式

    @装载自:http://zxin.cnblogs.com/ 平时对字符串进行校验和处理的时候难免会用到正则表达式,通常采用的方式是去网上寻找相关的正则表达式,之后copy下来进行修改,以使其满足自己的 ...

  3. Django_调查问卷

    1.问卷的保存按钮 前端通过ajax把数据发过来后端处理数据,然后返回给前端2.对问卷做答 首先用户进行登录,验证 条件:1.只有本班的学生才能对问卷做答      2.已经参加过的不能再次访问   ...

  4. git环境搭建以及第一个PHP程序

    使用mac下的sublime等编辑器帮助代码编写,然后到linux下运行网页代码.可以通过/vagrant共享目录完成,但是默认apache默认目录为/var/www/html,不想改变该目录,同时为 ...

  5. 深入浅出Android之学习笔记

    1.查看启动log [2011-01-11 14:44:21 - BMI] Android Launch! [2011-01-11 14:44:21 - BMI] adb is running nor ...

  6. java 集合类基础问题汇总

     1.Java集合类框架的基本接口有哪些? 参考答案 集合类接口指定了一组叫做元素的对象.集合类接口的每一种具体的实现类都可以选择以它自己的方式对元素进行保存和排序.有的集合类允许重复的键,有些不允许 ...

  7. .NET Core+MySql+Nginx 容器化部署

    .NET Core容器化@Docker .NET Core容器化之多容器应用部署@Docker-Compose .NET Core+MySql+Nginx 容器化部署 GitHub-Demo:Dock ...

  8. Hive Getting Started补充

    配置管理概述 Hive从<install-dir>/conf/hive-default.xml中读取它的默认配置 Hive配置目录的位置可以通过设置HIVE_CONF_DIR环境变量的值来 ...

  9. php代码审计一些笔记

    之前学习了seay法师的代码审计与及80sec的高级审计,整理了一些笔记在印象里面,也发到这里作为记录 1,漏洞挖掘与防范(基础篇) sql注入漏洞            挖掘经验:注意点:登录页面, ...

  10. duilib基本框架

    最近我一个同学在项目中使用到了duilib框架,但是之前并没有接触过,他与我讨论这方面的内容,看着官方给出的精美的例子,我对这个库有了很大的兴趣,我自己也是初学这个东东,我在网上花了不少时间来找相关的 ...