开发者社区> 问答> 正文

mysql查询需要事务吗?

本问题来自云栖社区【阿里Java技术进阶2群】。https://yq.aliyun.com/articles/690084 点击链接欢迎加入社区大社群。

展开
收起
李博 bluemind 2019-04-24 15:42:36 4287 0
1 条回答
写回答
取消 提交回答
  • 隔离级别RR开的有点高,一般开RC就够了。mysql的RR不是完全基于mvcc的Snapshot Isolation,而是mvcc+lock混合实现的,比如有范围查询,mysql会上gap lock,如果有unindexed row update,即使只有一个row行匹配,RR模式下update也会持有多个lock,直到事务结束。
    “还有mysql默认是自动提交,如果不加事务的话,每个select sql都会自动的开启事务和提交事务,开销是不是要比都放在一个事务里要高?” 这个问题要看具体情况,定性的分析下如果pure read,RR或者RC,那么多个select一起提交跟每个select提交一次,性能相差不会太大,每个事物申请txID的时候在mysql内部会有并发冲突,但这个时间跟sql解析,查询优化,磁盘IO跟,可以忽略;读写混合场景,如果多个select放一个事务,要看这个batch读事务,跟包含写操作的事务之间有没有锁冲突;假如是RR(不要以为MVCC了就没有锁冲突,范围查询也有gap lock),冲突的可能性比较大,那最好每个select单独提交,如果RC应该区别不大。

    2019-07-17 23:34:10
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像