码迷,mamicode.com
首页 > 数据库 > 详细

回收数据库表的空间

时间:2018-03-10 22:12:04      阅读:317      评论:0      收藏:0      [点我收藏+]

标签:form   cut   create   sele   影响   har   ble   etc   操作   

1、创建一个存储过程

2、先获取该数据库中所有表名

3、使用optimize table回收空间

4、执行该存储过程(CALL recycle_interspace)


DELIMITER $$
CREATE PROCEDURE `recycle_interspace`()
BEGIN
DECLARE row_table_name VARCHAR(90);
DECLARE ergodic INT DEFAULT 1;
DECLARE getcategory CURSOR FOR SELECT table_name FROM information_schema.tables WHERE table_schema=‘数据库名‘;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET ergodic:=0;
OPEN getcategory;

/**
开始回收表的空间。
使用optimize table来回收空间,但这个操作会锁表影响业务,如果确认回收,建议在业务低峰期进行操作。
*/
REPEAT
FETCH getcategory INTO row_table_name;
SET @csql=CONCAT(‘ OPTIMIZE TABLE ‘,row_table_name,‘;‘);
PREPARE create_stmt FROM @csql;
EXECUTE create_stmt;
UNTIL ergodic=0 END REPEAT;
CLOSE getcategory;
END$$

DELIMITER ;

回收数据库表的空间

标签:form   cut   create   sele   影响   har   ble   etc   操作   

原文地址:https://www.cnblogs.com/chenrenshui/p/8541858.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!