视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
生产环境MySQL表的维护:check、optimize和analyze_MySQL
2020-11-09 18:35:58 责编:小采
文档


bitsCN.com

生产环境MySQL表的维护:check、optimize和analyze

㈠ optimize

optimize可以回收空间、减少碎片、提高I/O

目前支持的存储引擎有:InnoDB、MyASIM和ARCHIVE

如果是Replication环境、可加NO_WRITE_TO_BINLOG(或者LOCAL、意思完全相同)、比如:

optimize local table table_name;

以下是一个简单测试:

[plain]

[mysql@odd employees]$ ls -alh t.ibd

-rw-rw---- 1 mysql dba 24M 05-22 16:48 t.ibd

未optimize前、有24M

mysql> optimize table t;

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

| Table | Op | Msg_type | Msg_text |

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

| employees.t | optimize | note | Table does not support optimize, doing recreate + analyze instead |

| employees.t | optimize | status | OK |

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

2 rows in set (3.82 sec)

--对于InnoDB的表、上面的内容并非报错、这是MySQL会帮你映射到:alter table table_name engine='InnoDB';

--MyISAM不会有这种情况

[mysql@odd employees]$ ls -alh t.ibd

-rw-rw---- 1 mysql dba 14M 05-22 16:49 t.ibd

optimize后、剩14M

㈡ check

检查表或视图的有无错误

支持表引擎有:InnoDB和MyISAM

下面简单模拟一个测试:

[plain]

mysql> check table t;

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

| Table | Op | Msg_type | Msg_text |

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

| employees.t | check | status | OK |

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

1 row in set (0.63 sec)

--没有错误的情况是这样的

--用vim打开t.frm随意编辑两把

mysql> check table t/G;

*************************** 1. row ***************************

Table: employees.t

Op: check

Msg_type: Error

Msg_text: Incorrect information in file: './employees/t.frm'

*************************** 2. row ***************************

Table: employees.t

Op: check

Msg_type: error

Msg_text: Corrupt

2 rows in set (0.00 sec)

--报错了

㈢ analyze

用于收集优化器统计信息、和tuning相关、

这个命令对 MyISAM、BDB、InnoDB 存储引擎的表有作用

如果不想记录到binlog、也可加关键字local或者另外一个

[plain]

mysql> analyze table t/G;

*************************** 1. row ***************************

Table: employees.t

Op: analyze

Msg_type: Error

Msg_text: Incorrect information in file: './employees/t.frm'

*************************** 2. row ***************************

Table: employees.t

Op: analyze

Msg_type: error

Msg_text: Corrupt

2 rows in set (0.00 sec)

bitsCN.com

下载本文
显示全文
专题