一般都来都会使用
lock table
然后在
unlock
但是今天google的时候发现还可以用 for update 进行行锁
这样就产生了一个疑问
如果我是select 一群数据,是不是我就是把这群数据全部锁住了
为了防止并发,一般是锁整个表还是锁住部分的数据?
一般都来都会使用
lock table
然后在
unlock
但是今天google的时候发现还可以用 for update 进行行锁
这样就产生了一个疑问
如果我是select 一群数据,是不是我就是把这群数据全部锁住了
为了防止并发,一般是锁整个表还是锁住部分的数据?
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
3 回答1.2k 阅读✓ 已解决
2 回答2k 阅读
3 回答2k 阅读
在数据库那端,取决于存储引擎。MyISAM引擎是直接锁表(只有表级的锁),InnoDB支持行锁。
如果存储引擎支持的话,取决于你的业务需求。
一般来说,锁的粒度越小越好,前提是要满足性能需求。