TPS计算规则
在MYSQL 中,TPS(Transaction Per Second)的计算方法为 (com_commit+com_rollback)/time,但com_commit和com_rollback记录的是显式事务的,因此隐式提交的事务不会被算到TPS中,如果程序未使用显示事务,即使在高并发事务下, 使用MYSQL看到的TPS也会很低。
Demo验证,分别使用存储过程显式和隐式(自动提交)1000个事务:
DELIMITER $$; CREATE PROCEDURE USP_T2() BEGIN DECLARE I INT; SET I=0; WHILE I<1000 DO START TRANSACTION; UPDATE TB001 SET C1=I WHERE ID=3094; COMMIT; SET I=I+1; END WHILE; END; $$; CREATE PROCEDURE USP_T3() BEGIN DECLARE I INT; SET I=0; WHILE I<1000 DO UPDATE TB001 SET C1=I WHERE ID=3094; SET I=I+1; END WHILE; END; $$; DELIMITER ;
然后使用下面语句查看事务提交数量:
SHOW GLOBAL STATUS LIKE 'com_commit' G SHOW GLOBAL STATUS LIKE 'com_rollback' G SHOW GLOBAL STATUS LIKE 'Handler_commit' G SHOW GLOBAL STATUS LIKE 'handler_rollback' G
执行结果:
调用USP_T3
CALL USP_T3();
Handler_commit 的值增加2000,com_commit的值增加0
调用USP_T2
CALL USP_T2();
Handler_commit 的值增加4000,com_commit的值增加1000