前言

当对MySQL进行大量的增删改操作的时候,很容易产生一些碎片,这些碎片占据着空间,所以可能会出现删除很多数据后,数据文件大小变化不大的现象。当然新插入的数据仍然会利用这些碎片。但过多的碎片,对数据的插入操作是有一定影响的,此时,我们可以通过optimize来对表的优化。
为了更加直观的看到数据碎片,Mysql可以使用如下命令查看
show table status [like table_name]
如下图

data_free选项代表数据碎片。
针对MySQL的不同数据库存储引擎,在optimize使用清除碎片,回收闲置的数据库空间,把分散存储(fragmented)的数据和索引重新挪到一起(defragmentation),对I/O速度有好处。
当然optimize在对表进行操作的时候,会加锁,所以不宜经常在程序中调用。

MyISAM存储引擎

针对MyISAM表,直接使用如下命令进行优化
optimize table table1[,table2][,table3]
如果同时优化多个表可以使用逗号分隔。
下面优化dede_member_vhistory表,可以看出,优化后data_free值为0。

#InnoDB存储引擎
InnoDB引擎的表分为独享表空间和同享表空间的表,我们可以通过show variables like ‘innodb_file_per_table’;来查看是否开启独享表空间。

我本地是开启了独享表空间的。此时是无法对表进行optimize操作的,如果操作,会返回如图信息,最后的一条Table does not support optimize, doing recreate + analyze instead。因为该结构下删除了大量的行,此时索引会重组并且会释放相应的空间因此不必优化。

MySQL中optimize优化表相关推荐

  1. mysql中如何查看表是否被锁

    https://blog.csdn.net/love666666shen/article/details/122419330 如何查看是否发生死锁 在使用mysql的时候,如何查看表是否被锁呢? 查看 ...

  2. mysql中什么是表?列?行?什么是主键和外键?什么是索引?为什么要使用索引?

    mysql中什么是表?列?行? 在关系数据库中,表(Table)是数据的主要组织单元.它是由一组命名的列和行组成,用于存储和组织数据. 列(Column)是表中的一个字段,用于存储特定类型的数据.每个 ...

  3. MySql中把一个表的数据插入到另一个表中的实现代码--转

    MySql中把一个表的数据插入到另一个表中的实现代码 司的一个项目,做报表--要关联的表结构比较多,最后决定把要用的数据集合到一张新表中,需要用到以下的sql语法......分享下: web开发中,我 ...

  4. MySQL中的多表连接

    MySQL中的多表连接 当查询的数据并不是来源一个表时,需要使用多表链接操作完成查询.根据不同表中的数据之间的关系查询相关联的数据. 一.语法结构 使用一个表在多个表中查询数据: Where子句中写连 ...

  5. mysql 操作表的例子,mysql中库和表的简单操作总结(附示例)

    本篇文章给大家带来的内容是关于mysql中库和表的简单操作总结(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 一. 库的操作 1.创建数据库 创建数据库: create d ...

  6. mysql中视图和表的区别及联系_MySQL中Update、select联用操作单表、多表,及视图与临时表的区别...

    一.MySQL中使用从表A中取出数据来更新表B的内容 例如:要update表data中的一些列属性,但是修改属性的内容来源是来自表chanpin.SQL语言中不要显示的出现select关键字 upda ...

  7. MySQL学习笔记(六)-MySQL中库和表的管理

    MySQL学习笔记(六)-MySQL中库和表的管理 作者:就叫易易好了 日期:2020/11/23 1 2 DDL即数据定义语言 创建:create 修改:alter 删除:drop 库和表的管理: ...

  8. 在MySQL中实现交叉表查询2(动态交叉表)

    在MySQL中实现交叉表查询2(动态交叉表) 交叉表分为静态交叉表和动态交叉表.其中静态交叉表中的列是固定的,因此相对容易实现:而动态交叉表中的列需要动态生成. 一.静态交叉表的实现 参见上一篇文章: ...

  9. 在MySQL中实现交叉表查询1(静态交叉表)

    在MySQL中实现交叉表查询1(静态交叉表) 一.什么是交叉表 交叉表查询是将来源于某个表中的字段进行分组,一组列在交叉表左侧,一组列在交叉表上部,并在交叉表行与列交叉处显示表中某个字段的各种计算值. ...

最新文章

  1. Java、Scala和Go语言多线程并发对比测试
  2. 阿里云IoT戴高:IoT场景化的本质是打造数智空间
  3. 统计UTF-8编码方式字符串中的符号个数
  4. spring react_使用Spring WebFlux构建React性REST API –第2部分
  5. Android(组件大全)
  6. 【Tensorflow】ValueError: Only call `sigmoid_cross_entropy_with_logits` with named arguments
  7. Java回顾之JDBC
  8. 将机器学习模型部署为REST API
  9. 三菱plc pwm指令_2020福建三菱PLCFX3GA60MT回收回收厂家回收气动元件回收
  10. 自学-Linux-老男孩Linux77期-day2
  11. VOC2007数据集的下载和解压
  12. 历史记录html页面,HTML5 history 页面历史记录
  13. H5/C3基础(2)
  14. 在maven官网下载maven历史版本
  15. Java学完后就业方向有哪些呢?
  16. 销售——LPN(License Plate Number)
  17. CAD中用lisp程序实现批量偏移_AutoCAD如何批量偏移
  18. hive sql自动生成id的两种方法随机id和自增id
  19. 变量的作用域和生命周期
  20. 最全中文3DMAX四边形散布插件QuadScatter使用教程

热门文章

  1. 第5.1.5 SpringCloudConfig
  2. 大模型基础之词表示和语言模型
  3. 【CentOS 7】安装问题- U盘安装及显示器显示“输入信号超出范围
  4. 黄金价格虽维持稳定不过上涨受阻
  5. SQL Server获取特定字符前的数字
  6. sqlserver 分组合并列_数学奥赛中美两国并列第一,这场数学巅峰对决竟是中国天才少年的内战?...
  7. (PC+WAP)带手机端pbootcms模板污水处理类网站
  8. python sklearn安装_sklearn安装
  9. [数组]使用与详解-C语言
  10. 【超详细】5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果