存储过程

pm报出未出票风险中有一例风险判定错误。经过查看确认问题是因为数据并发引起脏数据导致。此问题后采用mysql动态语句进行了修复,具体在另一片wiki中进行了记录。

由于担心采用动态语句会造成数据延时,影响未出票风险的qps(目前四台机全开的理论峰值在1200左右),需要进行大量数据测试。需要采用存储过程制造大量的实验数据。

存储过程是可编程的函数,在数据库中进行创建保存,其增强了sql语句的功能和灵活性。下面是一些使用存储过程的经验和心得;

1.基本语法见如下博客,写的很详细;

http://blog.sina.com.cn/s/blog_a86ad6ea0101j8lt.html

2.存储过程中互相调用:

首先建立存储过程testA

CREATE DEFINER=`betamagic`@`%` PROCEDURE `testA`(in a int , out b datetime)
BEGIN
	select update_time into b from riskmgmt.token where id = a;
	select b;
END

再建立存储过程testB,调用testA

CREATE DEFINER=`betamagic`@`%` PROCEDURE `testB`(in id int)
BEGIN
	declare a datetime;
	call testA(id,a);
	select a;
END

3.存储过程中执行sql语句的结果,使用into赋值;

CREATE DEFINER=`betamagic`@`%` PROCEDURE `testUpdateTime`()
BEGIN
	declare sum int;
	declare i int;
	declare minId int;
	declare maxId int;

	select max(id) into maxId from riskmgmt.token;
	select min(id) into minId from riskmgmt.token;

	update riskmgmt.token set update_time = if(MOD(id,2)=1, now(),update_time) where id > minId and id <maxId;

END

以后遇到了问题再待续吧~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值