实际事务DB里面常见的东西,没有事务的DB 那就不是DB ,但同样完成一个功能,并且书写也相似的存储过程逻辑(事务),怎么就快慢不一。
下面就来一个例子开刀, 下面是两个存储过程,往一个表里面插入10万条数据,同样的数据后不一样的耗时。一个要将近1分钟,另一个 5秒钟,同样的功能,同样的结果。
下面是两个存储过程
建表语句
快的那个存储过程
慢的要死的存储过程
实际上两个存储过程,的不一样在于对commit 的时机的把控,一个是每个插一条就要commit一次,另一个是在循环完毕后,在进行数据的commit;
这与mysql的redo 的原理有关。当然如果第二个存储过程将
set @@session.autocommit=0;
去掉
并且也将 start transactionl , commit 去掉,那结果也是一样的慢,MYSQL 默认是 auto commit 自动提交,这点与oracle 是不一样的。
那PostgreSQL 是不是也是这样,在实验中,使用不同样的方法处理的时间大致是相同的,相关的问题 下次说