📅  最后修改于: 2023-12-03 15:07:04.768000             🧑  作者: Mango
数据库中两种常见锁的类型是共享锁和排他锁。
共享锁也称为读锁,是指多个事务可以同时并发获取并持有同一数据对象的锁,不会产生冲突。共享锁不允许对数据对象进行修改,只能进行读取操作。
共享锁在实现中是不会阻塞其他事务的共享锁,但是会阻塞其他事务的排他锁。所以共享锁不能防止并发事务之间的数据冲突,但是可以提高并发度。
在MySQL中,可以使用以下SQL语句对一张表加上共享锁:
SELECT * FROM table_name WHERE ... LOCK IN SHARE MODE;
排他锁也称为写锁,是指在一个事务获取并持有这个数据对象的锁之后,其他事务就不能再获取该数据对象的锁,直到该事务释放锁。排他锁防止并发事务之间数据的读写冲突。
和共享锁不同的是,排他锁在实现中会阻塞其他事务的共享锁和排他锁,因此使用排他锁的时候会导致并发度下降。
在MySQL中,可以使用以下SQL语句对一张表加上排他锁:
SELECT * FROM table_name WHERE ... FOR UPDATE;
需要根据实际应用场景选择使用共享锁还是排他锁。
参考资料:MySQL官方文档