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
以后遇到了问题再待续吧~