【转】利用optimize、存储过程和系统表对mysql数据库表进行批量碎片清理释放表空间
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【转】利用optimize、存储过程和系统表对mysql数据库表进行批量碎片清理释放表空间,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4085字,纯文字阅读大概需要6分钟。
内容图文
![【转】利用optimize、存储过程和系统表对mysql数据库表进行批量碎片清理释放表空间](/upload/InfoBanner/zyjiaocheng/448/2f314b2f37124800b928500d02c971a2.jpg)
这个存储过程目的是给一个库的所有表来整理碎片的。一个表随着插入很频繁,或者一直更新不停的,就会积累好多碎片。如果及时整理一下,查询效率会高出好多。
DELIMITER $$ DROP PROCEDURE IF EXISTS `mysql`.`sp_optimize_tables`$$ CREATE PROCEDURE `mysql`.`sp_optimize_tables`( IN db_name varchar(255)) BEGIN -- Created by david yeung 20080128. -- To optimize all the tables in exact database. declare cnt int default 0; declare i int default 0; select count(*) as total from information_schema.tables where table_schema = db_name into cnt; while i < cnt do -- Get the table‘s exact name. set @stmt = concat(‘select table_name from information_schema.tables where table_schema = ‘‘‘,db_name,‘‘‘ order by table_name asc limit ‘,i,‘,1 into @tb_name‘); prepare s1 from @stmt; execute s1; drop prepare s1; set @stmt = ‘‘; set @stmt = concat(‘optimize table ‘,db_name,‘.‘,@tb_name); prepare s1 from @stmt; execute s1; drop prepare s1; set @stmt = ‘‘; set i = i + 1; end while; -- Refresh tables. flush tables; END$$ DELIMITER ;
调用示例:
mysql> use mysql
Database changed
mysql> call sp_optimize_tables(‘david_test‘);
+------------------------------+----------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------------------------+----------+----------+----------+
| david_test.test1 | optimize | status | OK |
+------------------------------+----------+----------+----------+
1 row in set (0.26 sec)
+--------------------------+----------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+--------------------------+----------+----------+----------+
| david_test.test2| optimize | status | OK |
+--------------------------+----------+----------+----------+
1 row in set (0.35 sec)
+---------------------------------------+----------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+---------------------------------------+----------+----------+----------+
| david_test.test3 | optimize | status | OK |
+---------------------------------------+----------+----------+----------+
1 row in set (0.45 sec)
+--------------------------+----------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+--------------------------+----------+----------+----------+
| david_test.test_article | optimize | status | OK |
+--------------------------+----------+----------+----------+
1 row in set (4.13 sec)
...
+----------------------------------+----------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+----------------------------------+----------+----------+----------+
| david_test.test_article_content | optimize | status | OK |
+----------------------------------+----------+----------+----------+
1 row in set (37.81 sec)
+-----------------------+----------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+-----------------------+----------+----------+----------+
| david_test.members | optimize | status | OK |
+-----------------------+----------+----------+----------+
1 row in set (40.02 sec)
+--------------------+----------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+--------------------+----------+----------+----------+
| david_test.test_site | optimize | status | OK |
+--------------------+----------+----------+----------+
1 row in set (40.31 sec)
+--------------+----------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+--------------+----------+----------+----------+
| david_test.t | optimize | status | OK |
+--------------+----------+----------+----------+
1 row in set (41.10 sec)
Query OK, 0 rows affected (41.13 sec)
【转】利用optimize、存储过程和系统表对mysql数据库表进行批量碎片清理释放表空间
标签:
本文系统来源:http://www.cnblogs.com/rwxwsblog/p/4528577.html
内容总结
以上是互联网集市为您收集整理的【转】利用optimize、存储过程和系统表对mysql数据库表进行批量碎片清理释放表空间全部内容,希望文章能够帮你解决【转】利用optimize、存储过程和系统表对mysql数据库表进行批量碎片清理释放表空间所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。