mysql 批量删数据并且整理表碎片
DROP PROCEDURE IF EXISTS prc_del_loop;
CREATE PROCEDURE prc_del_loop()
BEGIN
DECLARE v_count INT ;
DECLARE v_data_free INT;
my_del_loop:LOOP
delete from t_data where adress = '苏州日志分析苏州日志分析' limit 10000;
select count(1) into v_count from (
select * from t_data where adress = '苏州日志分析苏州日志分析' limit 1 ) d;
IF v_count=0 THEN
LEAVE my_del_loop;
END IF;
END LOOP my_del_loop;
SELECT "TABLE DATA HAD DELETED !!!";
#整理碎片,data_free大于等于100M进行整理
select round(sum(data_free/1024/1024),0) into v_data_free
from information_schema.tables where TABLE_SCHEMA= 'data' and table_name = 't';
IF v_data_free >=100 THEN
SELECT "TABLE SHRINK IS RUNNING!!!";
alter table t ENGINE=INNODB;
SELECT "TABLE SHRINK IS FINISHED!!!";
ELSE
SELECT "TABLE SHRINK IS NOT NEED SHRINK!!!";
END IF;
END;
使用游标来进行删除:
drop PROCEDURE if EXISTS prc_del_loop_cur;
CREATE PROCEDURE prc_del_loop_cur()
BEGIN
DECLARE v_name VARCHAR(2000);
DECLARE v_id BIGINT;
DECLARE done INT DEFAULT 0;
DECLARE cur1 CURSOR FOR SELECT id,name from test where adress = '苏州日志分析苏州日志分析';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
open cur1;
my_del_loop:LOOP
fetch cur1 into v_id,v_name;
IF done=1 THEN
LEAVE my_del_loop;
END IF;
delete from test where id = v_id;
END LOOP my_del_loop;
CLOSE cur1;
SELECT "delete over !!!";
END;
call prc_del_loop_cur;
- mysql与Oracle垃圾用户方案临时给的excel文件数据批量数据导入库操作步骤整理
- 试试mysql数据碎片整理吧解决astgo经常死机变慢的问题
- MySQL数据表碎片整理
- MySQL 批量插入数据优化
- mysql 根据select内容批量更新数据
- mysql 根据select内容批量更新数据
- 基于mysql 批量插入100w测试数据
- mysql通过存储过程批量造数据
- Java 批量插入数据到数据库(MySQL)中
- 用PHP批量插入数据到MySQL中
- Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)
- mysql把多行数据合并为一行,并且字段名自己定义
- mysql存储过程,批量插入10000条数据
- 关于批量插入数据之我见(100万级别的数据,mysql)
- MySQL开启binlog并且保存7天有效数据
- 转载:Redis与Mysql数据同步解决方案整理
- python读出mysql数据写出到csv文件中[整理]
- 正好整理了一下,自己做了个连接数据库的组件,支持SQLSERVER,ACCESS,ORACLE,FoxPro,MySql,IBM DB2,DBF等数据库,并且支持事务处理
- Mysql 快速插入批量数据,从文件中导入数据
- mysql 根据select内容批量更新数据