最赞回答 / qq_光_22
首先是在更新操作的时候给行加锁,插入并不会加锁,如果更新操作在前,那么就需要执行完更新和插入以后事务提交或回滚才释放锁,而如果插入在前,则更新完以后事务提交或回滚就释放锁。也就是说是更新在前加锁和释放锁之间两次的网络延迟和GC,如果插入在前则加锁和释放锁之间只有一次的网络延迟和GC,也就是减少的持有锁的时间。
2017-08-09
已采纳回答 / kevinyangit
原来执行的流程update(发送在mysql网络时间+gc时间) + insert(发送在mysql网络时间+gc时间)因为update同一行会导致行级锁,而insert是可以并行执行的。1.如果先update, update在前面会加锁锁 + update(发送在mysql网络时间+gc时间) + insert(发送在mysql网络时间+gc时间) + 提交锁其实的线程就要等,这个锁提交才能执行。2.如果先insert,insert(发送在mysql网络时间+gc时间) + 锁+ update(发送在...
2017-06-20