MySQL Transaction--TPS计算规则

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

 

posted @ 2019-04-02 13:26  TeyGao  阅读(834)  评论(0编辑  收藏  举报