mysql怎么数据的更新 mysql 更新数据库值( 二 )


mysql大量数据更新采用什么样的方式比较好 , 20w条数据一次更新?建缓冲区 。比如其他类型的高速缓存(redis等)作为中间缓冲层 。
数据的查询,更改首先在这个层处理 , 处理完再更新到对应的数据库 。
注意额外增加锁,或者缓存机制防止缓存击穿,雪崩导致系统崩溃 。
利用mysql存储过程循环插入新数据并更新DROP PROCEDURE IF EXISTS excute_job_v340;
create procedure excute_job_v340()
begin
declare rdevid int; //声明参数
declare rech_id int;
declare slot int;
declare new_rech_id int;
declare new_price DOUBLE;//声明参数
declare done INT DEFAULT FALSE;////声明结束标识参数
--声明游标
DECLARE rdevrech_id CURSOR FOR
select r.id as rdevid,r.rechargeconfig_id as rech_id,r.slot_no as slot from b_device_tbl dev
LEFT JOIN r_device_rechargeconfig_tbl r on dev.id= r.device_id
where dev.dev_typedef_id =7 and dev.masterid is not NULLand r.rechargeconfig_type=4 and r.is_deleted=0 andr.slot_no is notNULL;
-- 将结束标志绑定到游标
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
-- 打开游标
OPENrdevrech_id;
-- 遍历
read_loop: LOOP
-- 取值
FETCHNEXT from rdevrech_id INTO rdevid,rech_id,slot;
IF done THEN
LEAVE read_loop;
END IF;// 结束判断
select price into new_price from c_device_rechargeconfig_item_tbl where rechargeconfig_id =rech_id limit 1;
INSERT INTO `c_device_rechargeconfig_tbl` (`type`, `style_id`, `is_default`, `dev_type_code`, `is_deleted`,`create_time`, `slot_no`)
VALUES ( '4', NULL, '0', '0', '0', '2019-08-19 15:59:24',slot );
select max(id) into new_rech_id from c_device_rechargeconfig_tbl ;
INSERT INTO`c_device_rechargeconfig_item_tbl` (`price`, `goods`, `description`, `is_deleted`, `create_time`,`rechargeconfig_id` )
VALUES (new_price,new_price, '0.00', '0', '2019-08-19 15:59:24', new_rech_id);
update r_device_rechargeconfig_tbl set rechargeconfig_id=new_rech_id where id=rdevid;
END LOOP;
CLOSE rdevrech_id;
end;
call excute_job_v340() ;//调用执行
mysql怎么数据的更新的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于mysql 更新数据库值、mysql怎么数据的更新的信息别忘了在本站进行查找喔 。

推荐阅读