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';

 

posted @ 2020-07-24 14:37  阳光麦田的博客  阅读(658)  评论(0)    收藏  举报