mysql 批量更新还是单条更新如何选择

您所在的位置:网站首页 执行sql批量更新出错原因 mysql 批量更新还是单条更新如何选择

mysql 批量更新还是单条更新如何选择

2024-07-17 02:01| 来源: 网络整理| 查看: 265

首先说一下业务场景,需要替换某个字段的值,我选择的是批量更新,我队友选择的单条更新。

她说:选择单条更新吧,一个是稳,主要是保证数据准确,然后说,批量更新会引起锁表。

表锁:不会出现死锁,发生锁冲突几率高,并发低。 行锁:会出现死锁,发生锁冲突几率低,并发高。

批量更新是否会引起锁表?

批量执行sql时,如果查到sql语句没有走索引,会出现表锁。

原因: mysql的行锁是通过索引加载的,即是行锁是加在索引响应的行上的,要是对应的SQL语句没有走索引,则会全表扫描,行锁则无法实现,取而代之的是表锁。

简而言之: 不加索引时,update会使用表锁进行更新,影响所有行的查询更新

加了索引后,使用“行锁”进行udpate,只锁当前行。不影响其他行的查询更新

行锁必须有索引才能实现,否则会出现表锁,如果是主键索引会增加执行效率

补充说明一下:

主键索引也被称为聚簇索引,叶子节点存放的是整行数据; 而非主键索引被称为二级索引,叶子节点存放的是主键的值. 如果根据主键查询, 只需要搜索ID这颗B+树 而如果通过非主键索引查询, 需要先搜索k索引树, 找到对应的主键, 然后再到ID索引树搜索一次, 这个过程叫做回表. 也就是说, 非主键索引的查询需要多扫描一颗索引树, 效率相对更低.

在同样都有索引的条件下,必然是批量更新更好,执行效率高



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3