探讨Mysql中OPTIMIZE TABLE的作用详解

时间:2024-01-24 21:43:41 

当您的库中删除了大量的数据后,您可能会发现数据文件尺寸并没有减小。这是因为删 除操作后在数据文件中留下碎片所致。Discuz! 在系统数设置界面提供了数据表优化的功能,可以去除删除操作后留下的数据文件碎片,减小文件尺寸,加快未来的读写操作。您只要在做完批量删除,或定期(如 每一两个月)进行一次数据表优化操作即可。

OPTIMIZE TABLE通过制作原来的表的一个临时副本来工作

OPTIMIZE TABLE语法
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表起作用。

对于MyISAM表,OPTIMIZE TABLE按如下方式操作:

1. 如果表已经删除或分解了行,则修复表。
2. 如果未对索引页进行分类,则进行分类。
3. 如果表的统计数据没有更新(并且通过对索引进行分类不能实现修复),则进行更新。

对于BDB表,OPTIMIZE TABLE目前被映射到ANALYZE TABLE上。对于InnoDB表,OPTIMIZE TABLE被映射到ALTER TABLE上,这会重建表。重建操作能更新索引统计数据并释放成簇索引中的未使用的空间。请参见13.5.2.1节,“ANALYZE TABLE语法”。

使用—skip-new或—safe-mode选项可以启动mysqld。通过启动mysqld,您可以使OPTIMIZE TABLE对其它表类型起作用。

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

OPTIMIZE TABLE语句被写入到二进制日志中,除非使用了自选的NO_WRITE_TO_BINLOG关键词(或其别名LOCAL)。已经这么做了,因此,用于 MySQL服务器的OPTIMIZE TABLE命令的作用相当于一个复制主服务器,在默认情况下,这些命令将被复制到复制从属服务器中。

标签:Mysql,optimize,table
0
投稿

猜你喜欢

  • 详解Vue内部怎样处理props选项的多种写法

    2024-05-03 15:10:39
  • Python打开文件,将list、numpy数组内容写入txt文件中的方法

    2023-12-16 21:23:17
  • php实现utf-8和GB2312编码相互转换函数代码

    2024-04-29 13:56:12
  • Python中各类Excel表格批量合并问题的实现思路与案例

    2022-12-21 14:30:01
  • Golang中interface的基本用法详解

    2023-07-14 17:00:33
  • Python面向对象编程之继承与多态详解

    2022-01-24 17:22:01
  • Python全面解析json数据并保存为csv文件

    2021-02-14 03:26:26
  • Python中的数据对象持久化存储模块pickle的使用示例

    2023-09-26 01:26:28
  • JavaScript数组合并的8种常见方法小结

    2024-04-16 09:32:55
  • 如何利用python制作时间戳转换工具详解

    2021-11-23 21:21:41
  • python创建堆的方法实例讲解

    2022-11-20 05:20:49
  • 基于tkinter中ttk控件的width-height设置方式

    2023-07-04 21:32:20
  • pandas DataFrame 根据多列的值做判断,生成新的列值实例

    2023-11-11 01:48:11
  • 网页广告 Banner 设计图文手册

    2007-10-18 19:56:00
  • Python编程实现双链表,栈,队列及二叉树的方法示例

    2021-11-10 12:35:17
  • python 中文件输入输出及os模块对文件系统的操作方法

    2023-04-10 18:34:05
  • TensorFlow安装并在Pycharm搭建环境的详细图文教程

    2023-09-12 16:34:00
  • python调用百度AI接口实现人流量统计

    2022-09-10 12:46:27
  • Linux中大内存页Oracle数据库优化的方法

    2023-07-19 11:24:57
  • scrollWidth,clientWidth与offsetWidth的区别

    2024-04-22 22:28:38
  • asp之家 网络编程 m.aspxhome.com