0
点赞
收藏
分享

微信扫一扫

MYSQL事务他快你慢,都是你自己惹的祸


实际事务DB里面常见的东西,没有事务的DB 那就不是DB ,但同样完成一个功能,并且书写也相似的存储过程逻辑(事务),怎么就快慢不一。

下面就来一个例子开刀, 下面是两个存储过程,往一个表里面插入10万条数据,同样的数据最后不一样的耗时。一个要将近1分钟,另一个 5秒钟,同样的功能,同样的结果。

MYSQL事务他快你慢,都是你自己惹的祸_存储过程

下面是两个存储过程

建表语句

MYSQL事务他快你慢,都是你自己惹的祸_数据_02

快的那个存储过程

MYSQL事务他快你慢,都是你自己惹的祸_数据_03

慢的要死的存储过程

MYSQL事务他快你慢,都是你自己惹的祸_数据_04

实际上两个存储过程,唯一的不一样在于对commit 的时机的把控,一个是每个插一条就要commit一次,另一个是在循环完毕后,在进行数据的commit; 

这与mysql的redo 的原理有关。当然如果第二个存储过程将

 set @@session.autocommit=0;

去掉

并且也将 start transactionl , commit 去掉,那结果也是一样的慢,MYSQL 默认是 auto commit 自动提交,这点与oracle 是不一样的。

那PostgreSQL 是不是也是这样,在实验中,使用不同样的方法处理的时间大致是相同的,相关的问题 下次说

MYSQL事务他快你慢,都是你自己惹的祸_PostgreSQL_05

MYSQL事务他快你慢,都是你自己惹的祸_PostgreSQL_06

MYSQL事务他快你慢,都是你自己惹的祸_PostgreSQL_07

举报

相关推荐

kafka,你了解他吗?

0 条评论