mysql创建事务,分批次刷新大数据
对于需要刷新的大数据量,当一次刷新数据量过大时,事务太大,会导致binLog文件太大,在不同的数据库同步时,可能遇到问题,先整理如下,分批次刷新数据
1 DELIMITER // # 设置//为结束符,否则命令行中的;会与默认的;冲突 2 DROP PROCEDURE if EXISTS test; # 如果存在test存储过程则删除 3 CREATE procedure test() # 创建无参存储过程,名称为test 4 BEGIN 5 DECLARE i INTEGER DEFAULT 1; # 申明变量 用户判断是否继续循环 6 DECLARE rowNums INTEGER DEFAULT 0; # 申明变量 用于记录总影响行数 7 DECLARE limitRow INTEGER DEFAULT 2; # 申明变量 用于记录一次事务的影响行数 8 WHILE i>0 DO # 结束循环的条件: 当上次刷新的影响行数<=0时跳出while循环 9 10 # 更新语句 11 12 UPDATE tf_b_student SET CREATE_NAME ='test1' WHERE CREATE_NAME ='test' LIMIT limitRow; 13 14 SET i= ROW_COUNT(); 15 SET rowNums = rowNums+i; # 循环一次,i加1 16 END WHILE; # 结束while循环 17 SELECT rowNums; 18 END; 19 // 20 DELIMITER ; #重新设置回;作为分割符 21 22 CALL test(); # 调用存储过程
-- 删除存储过程
DROP PROCEDURE IF EXISTS test;
-- 查看存储过程
SELECT SPECIFIC_NAME,SECURITY_TYPE,SQL_DATA_ACCESS FROM information_schema.ROUTINES where ROUTINE_NAME='test';

浙公网安备 33010602011771号