- 浏览: 243401 次
最新评论
---定期清理脚本
0 1 * * 4 root /root/qingli_mysql.sh
[root@newmysql5 ~]# cat qingli_mysql.sh
#!/bin/bash
date=`date +"%Y-%m-%d %H:%M:%S"`
echo $date >>/root/qingli.log
tables=$(mysql -u root -p"tina" 2>/dev/null -e "select concat(table_schema,'.',table_name) from information_schema.tables where data_free>0 and engine !='MEMORY';" |grep -v "concat")
for table in $tables
do
mysql -u root -p"****" 2>/dev/null -e "optimize table $table;" >>/root/qingli.log
done
----
1、清理mysql碎片
查询存在碎片的表和碎片的大小:
mysql>select concat('optimize table ',table_schema,'.',table_name,';'),data_free,engine from information_schema.tables where data_free>0 and engine !='MEMORY';
+-----------------------------------------------------------+-----------+--------+
| concat('optimize table ',table_schema,'.',table_name,';') | data_free | engine |
+-----------------------------------------------------------+-----------+--------+
| optimize table 117demo.scan_url; | 5242880 | InnoDB |
| optimize table antiyfeature.basic_csv_file; | 4194304 | InnoDB |
| optimize table antiyfeature.gen_avl_entry; | 4194304 | InnoDB |
| optimize table antiyfeature.sample_info; | 4194304 | InnoDB |
| optimize table avlyun_googleplay.app_package; | 7340032 | InnoDB |
| optimize table avlyun_googleplay.app_update; | 376438784 | InnoDB |
| optimize table enginedn.ads_opc_avl; | 4194304 | InnoDB |
| optimize table enginedn.avl_info; | 4194304 | InnoDB |
| optimize table enginedn.basic_avl_info; | 4194304 | InnoDB |
| optimize table enginedn.basic_csv_file; | 4194304 | InnoDB |
| optimize table enginedn.gen_change_record; | 4194304 | InnoDB |
| optimize table enginedn.opc_avl_info; | 4194304 | InnoDB |
| optimize table enginedn.package_channel; | 4194304 | InnoDB |
| optimize table enginedn.package_info; | 4194304 | InnoDB |
| optimize table enginedn.scdf_avl_info; | 4194304 | InnoDB |
| optimize table enginedn.sign_avl_info; | 4194304 | InnoDB |
| optimize table mobile_event.program_url; | 4194304 | InnoDB |
| optimize table mobile_event.sample; | 4194304 | InnoDB |
| optimize table mobile_event.sample_url; | 4194304 | InnoDB |
| optimize table mobile_event.virus_url; | 4194304 | InnoDB |
| optimize table mysql.innodb_index_stats; | 4194304 | InnoDB |
| optimize table sohu.detail_sohu; | 7340032 | InnoDB |
+-----------------------------------------------------------+-----------+--------+
23 rows in set (0.13 sec) --共有39个表有碎片,较小的已经提前清理,剩下的需要在空闲时间清理,预计耗时1h30min,可放在凌晨执行~
清理步骤:
执行命令optimize table table_name;
注意:OPTIMIZE TABLE只对MyISAM, BDB和InnoDB表起作用。在OPTIMIZE TABLE运行过程中,MySQL会锁定表。
即使您对可变长度的行进行了大量的更新,您也不需要经常运行,每周一次或每月一次即可,只对特定的表运行。
| optimize table antiy_bbs.bbs_common_session; | 2492 | MEMORY | --不支持这种格式
mysql> optimize table antiy_bbs.bbs_common_session;
+------------------------------+----------+----------+-----------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+------------------------------+----------+----------+-----------------------------------------------------------+
| antiy_bbs.bbs_common_session | optimize | note | The storage engine for the table doesn't support optimize |
+------------------------------+----------+----------+-----------------------------------------------------------+
| optimize table sohu.basic_sohu; | 3145728 | InnoDB | --3M耗时2min47s
--出现这种,就表示已经清理了
mysql> optimize table antiy_bbs.bbs_ucenter_newpm;
+-----------------------------+----------+----------+-----------------------------+
| Table | Op | Msg_type | Msg_text |
+-----------------------------+----------+----------+-----------------------------+
| antiy_bbs.bbs_ucenter_newpm | optimize | status | Table is already up to date |
+-----------------------------+----------+----------+-----------------------------+
1 row in set (0.25 sec)
MYSQL的文档说明了,当INNODB时,MYSQL会以ALTER TABLE去执行这个命令。 所以最终还是会看到 OK 的状态。
mysql> OPTIMIZE TABLE foo;
+----------+----------+----------+-------------------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+----------+----------+----------+-------------------------------------------------------------------+
| test.foo | optimize | note | Table does not support optimize, doing recreate + analyze instead |
| test.foo | optimize | status | OK |
+----------+----------+----------+-------------------------------------------------------------------+
////////////////////////////////////
注意:生产上不要随便操作,因为会锁表。
mysql> show index from basic_sohu from sohu;
+------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| basic_sohu | 0 | PRIMARY | 1 | id | A | 8764 | NULL | NULL | | BTREE | | |
+------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
1 row in set (0.00 sec)
mysql中OPTIMIZE TABLE的作用 (2009-04-01 17:44:39)转载▼
标签: 杂谈 分类: 工作
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会锁定表。
0 1 * * 4 root /root/qingli_mysql.sh
[root@newmysql5 ~]# cat qingli_mysql.sh
#!/bin/bash
date=`date +"%Y-%m-%d %H:%M:%S"`
echo $date >>/root/qingli.log
tables=$(mysql -u root -p"tina" 2>/dev/null -e "select concat(table_schema,'.',table_name) from information_schema.tables where data_free>0 and engine !='MEMORY';" |grep -v "concat")
for table in $tables
do
mysql -u root -p"****" 2>/dev/null -e "optimize table $table;" >>/root/qingli.log
done
----
1、清理mysql碎片
查询存在碎片的表和碎片的大小:
mysql>select concat('optimize table ',table_schema,'.',table_name,';'),data_free,engine from information_schema.tables where data_free>0 and engine !='MEMORY';
+-----------------------------------------------------------+-----------+--------+
| concat('optimize table ',table_schema,'.',table_name,';') | data_free | engine |
+-----------------------------------------------------------+-----------+--------+
| optimize table 117demo.scan_url; | 5242880 | InnoDB |
| optimize table antiyfeature.basic_csv_file; | 4194304 | InnoDB |
| optimize table antiyfeature.gen_avl_entry; | 4194304 | InnoDB |
| optimize table antiyfeature.sample_info; | 4194304 | InnoDB |
| optimize table avlyun_googleplay.app_package; | 7340032 | InnoDB |
| optimize table avlyun_googleplay.app_update; | 376438784 | InnoDB |
| optimize table enginedn.ads_opc_avl; | 4194304 | InnoDB |
| optimize table enginedn.avl_info; | 4194304 | InnoDB |
| optimize table enginedn.basic_avl_info; | 4194304 | InnoDB |
| optimize table enginedn.basic_csv_file; | 4194304 | InnoDB |
| optimize table enginedn.gen_change_record; | 4194304 | InnoDB |
| optimize table enginedn.opc_avl_info; | 4194304 | InnoDB |
| optimize table enginedn.package_channel; | 4194304 | InnoDB |
| optimize table enginedn.package_info; | 4194304 | InnoDB |
| optimize table enginedn.scdf_avl_info; | 4194304 | InnoDB |
| optimize table enginedn.sign_avl_info; | 4194304 | InnoDB |
| optimize table mobile_event.program_url; | 4194304 | InnoDB |
| optimize table mobile_event.sample; | 4194304 | InnoDB |
| optimize table mobile_event.sample_url; | 4194304 | InnoDB |
| optimize table mobile_event.virus_url; | 4194304 | InnoDB |
| optimize table mysql.innodb_index_stats; | 4194304 | InnoDB |
| optimize table sohu.detail_sohu; | 7340032 | InnoDB |
+-----------------------------------------------------------+-----------+--------+
23 rows in set (0.13 sec) --共有39个表有碎片,较小的已经提前清理,剩下的需要在空闲时间清理,预计耗时1h30min,可放在凌晨执行~
清理步骤:
执行命令optimize table table_name;
注意:OPTIMIZE TABLE只对MyISAM, BDB和InnoDB表起作用。在OPTIMIZE TABLE运行过程中,MySQL会锁定表。
即使您对可变长度的行进行了大量的更新,您也不需要经常运行,每周一次或每月一次即可,只对特定的表运行。
| optimize table antiy_bbs.bbs_common_session; | 2492 | MEMORY | --不支持这种格式
mysql> optimize table antiy_bbs.bbs_common_session;
+------------------------------+----------+----------+-----------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+------------------------------+----------+----------+-----------------------------------------------------------+
| antiy_bbs.bbs_common_session | optimize | note | The storage engine for the table doesn't support optimize |
+------------------------------+----------+----------+-----------------------------------------------------------+
| optimize table sohu.basic_sohu; | 3145728 | InnoDB | --3M耗时2min47s
--出现这种,就表示已经清理了
mysql> optimize table antiy_bbs.bbs_ucenter_newpm;
+-----------------------------+----------+----------+-----------------------------+
| Table | Op | Msg_type | Msg_text |
+-----------------------------+----------+----------+-----------------------------+
| antiy_bbs.bbs_ucenter_newpm | optimize | status | Table is already up to date |
+-----------------------------+----------+----------+-----------------------------+
1 row in set (0.25 sec)
MYSQL的文档说明了,当INNODB时,MYSQL会以ALTER TABLE去执行这个命令。 所以最终还是会看到 OK 的状态。
mysql> OPTIMIZE TABLE foo;
+----------+----------+----------+-------------------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+----------+----------+----------+-------------------------------------------------------------------+
| test.foo | optimize | note | Table does not support optimize, doing recreate + analyze instead |
| test.foo | optimize | status | OK |
+----------+----------+----------+-------------------------------------------------------------------+
////////////////////////////////////
注意:生产上不要随便操作,因为会锁表。
mysql> show index from basic_sohu from sohu;
+------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| basic_sohu | 0 | PRIMARY | 1 | id | A | 8764 | NULL | NULL | | BTREE | | |
+------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
1 row in set (0.00 sec)
mysql中OPTIMIZE TABLE的作用 (2009-04-01 17:44:39)转载▼
标签: 杂谈 分类: 工作
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设置外键约束on delete cascade on update cascade
2016-12-09 16:27 3733mysql设置外键约束on delet ... -
mysql权限管理(实例)
2016-05-10 17:21 1514mysql权限管理实例 本文并没有很详细的介绍对具体的对象授 ... -
mysql简单的碎片清理脚本
2016-05-10 16:52 1496mysql简单的碎片清理脚本 #!/bin/bash date ... -
mysql qpress压缩备份恢复
2016-05-03 16:30 6963说明: 1.前面博客已经介绍过gzip压缩方法,备份正常,但后 ... -
mysql xtrabackup在线搭建主从
2016-04-11 14:59 1951使用xtrabackup进行在线的主从搭建: [root@m ... -
mysql xtrabackup在线备份还原(全备+增备)
2016-04-11 14:47 1053工具安装: [root@mysqlserver var]# t ... -
mysql主库清理数据,从库保留
2016-04-01 15:26 1298因为业务需要,想在mysql主库清理一些数据,但从库想要保留, ... -
oracle,postgresql,mysql一些使用上的区别记录
2015-12-16 11:38 01.限制行数: select * from ta where ... -
数据库调优分享-mysql
2015-12-16 10:02 951数据库调优分享------参考一本mysql资料书 日常的困 ... -
mysql 安装-tina
2015-12-08 17:32 0mysql安装-tina 1、准备安装程序(http://ww ... -
mysqldump 只导入数据或只导结构
2015-12-22 10:36 2720[size=small]mysqldump只导出数据或只导出表 ... -
mysql server has gone away
2015-12-10 09:26 878mysql server has gone away,他的意思 ... -
mysql binlog
2015-12-10 09:26 1346mysqld在每个二进制日志 ... -
mysql远程连接设置
2015-12-10 09:25 1009远程连接mysql数据库: 连接上以后,通过这台跳转服务器远 ... -
Last_SQL_Error: Error 'Duplicate entry '1' for key 'PRIMARY''
2015-12-10 09:25 1721[size=small]-实际遇到的问题: Last_SQL ... -
[ERROR] Slave I/O: error connecting to master
2015-12-09 09:26 8213刚配置的MySQL主从,在从机上看到 点击(此处)折叠或打开 ... -
MySQL常用函数
2015-02-05 10:34 538一、字符串类 1、left(str, length) 从左开始 ... -
MySQL触发器简介
2015-02-05 10:33 899一、触发器基本语法 CREATE TRIGGER trigge ... -
MySQL主从切换
2015-02-05 10:32 506环境: 原主库:192.168.10.197 ---新 ... -
MySQL主从搭建
2015-02-05 10:31 797环境简介 master(主):192.168.12.101 s ...
相关推荐
### MySQL 清理碎片操作详解 #### 一、MySQL 数据库碎片产生的原因及影响 在MySQL数据库中,随着数据的不断增删改查操作,尤其是大量的删除操作后,数据库表中的存储空间会出现“碎片化”的现象。所谓的“碎片”,...
- 清理碎片操作会锁定表,且随着数据量增加,耗时也会增长,不适合在高并发时段执行。 - 更佳的做法是创建一个脚本,安排在访问量较低的时间执行,例如每周三凌晨。 - 定期检查`information_schema.TABLES`的`DATA_...
本文将详细分析MySQL表中碎片产生的原因,并且介绍相应的清理方法。 首先,了解MySQL存储引擎是很重要的。MySQL支持多种存储引擎,常见的有InnoDB和MyISAM。不同存储引擎在处理碎片方面有不同的机制和操作方式。 ...
`OPTIMIZE TABLE`可以清理这些碎片,从而使得新数据能够直接填充这些空闲空间,避免了因碎片导致的数据分散,进而提高数据读写速度。 2. **重建索引**: 对于使用了可变长度行的表(如包含VARCHAR, BLOB或TEXT列的...
要清理因删除操作产生的数据碎片,官方推荐使用`OPTIMIZE TABLE`命令。这个命令会重建表,整理数据文件,回收被标记为删除但尚未使用的空间。执行`OPTIMIZE TABLE`后,可以使用`information_schema.tables`视图查询...
6. **表维护**:定期进行OPTIMIZE TABLE操作,清理碎片,提升查询速度。 7. **复制健康检查**:对于主从复制环境,检查主从同步状态,防止数据丢失或不一致。 8. **数据一致性校验**:使用 CHECK TABLE 或 INNODB_...
定期执行OPTIMIZE TABLE命令整理表碎片,提高磁盘空间利用率。清理不再需要的临时表和日志,以释放资源。定期分析并更新统计信息,帮助MySQL做出更好的查询计划。 七、分区与分表 对于大数据量的表,可以考虑使用...
9. **定期维护**:定期进行OPTIMIZE TABLE操作,清理碎片,保持表的良好状态。 深入学习官方文档,你将能掌握MySQL的更多高级特性,如物化视图、触发器、存储过程等,以及如何在特定场景下有效地应用它们。此外,...
5. **定期维护**:定期执行OPTIMIZE TABLE,清理碎片,保持表的最佳状态。 6. **监控与分析**:使用MySQL内置的Performance Schema或第三方工具进行性能监控和分析。 7. **主从复制**:通过读写分离,减轻主库负担,...
数据库优化是提升系统性能的关键环节,特别是在MySQL数据库中,表空间碎片的存在可能对查询效率产生负面影响。当数据库经历大量的插入、删除和更新操作后,数据的物理存储会变得不连续,形成空间碎片。这些碎片如果...
7. **定期维护**:执行定期的数据库维护任务,如ANALYZE TABLE更新统计信息,OPTIMIZE TABLE整理碎片,以及定期清理无用的数据和日志。 8. **慢查询日志**:开启慢查询日志,记录执行时间过长的查询,以便分析和...
1. 定期运行`OPTIMIZE TABLE`来整理碎片,回收已删除行占用的空间。 2. 分析并调整索引,删除不再需要的索引,或创建更高效的覆盖索引。 3. 使用分区策略,将大表分为多个逻辑部分,便于管理和清理。 4. 设置合理的...
`:对表进行碎片整理,提高查询速度。 6. `REPAIR TABLE table_name;`:修复损坏的表。 在规划和实施MySQL服务器运维时,我们需要注意节点的规划和基础环境的准备。例如,可以使用虚拟化技术如VMware Workstation来...
8. **定期维护**:包括定期重建索引、清理无用数据、分析表碎片等,保持数据库的良好状态。 9. **分区与分片**:对于大数据量的表,分区可以将数据分散在多个物理位置,提高查询效率。分片则是将数据分布在多个...
14. **定期分析与优化表**:使用ANALYZE TABLE和OPTIMIZE TABLE来更新统计信息和碎片整理。 15. **限制临时表大小**:设置tmp_table_size和max_heap_table_size,避免临时表溢出到磁盘。 16. **监控与调优系统参数...
2. **工具推荐**:使用`OPTIMIZE TABLE`命令进行碎片整理。 #### 十、备份与恢复 1. **手动备份**:使用`mysqldump`命令进行数据库备份。 2. **自动备份**:通过设置定时任务自动执行备份脚本。 3. **恢复方法**:...
1. 定期分析与优化表:使用ANALYZE TABLE和OPTIMIZE TABLE命令,更新统计信息,整理碎片。 2. 清理无用数据:定期删除或归档不再需要的数据,保持数据库整洁。 总结,MySQL优化是一个涉及多方面的工作,包括查询...