对数据库的任何操作都会加锁,可能导致死锁:
可以采用with(nolock)方式查询,但是会导致脏数据的问题
select top 10 * from Table with(nolock)
共享锁(S锁):共享 (S) 用于不更改或不更新数据的操作(只读操作),如 SELECT 语句。
如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁。获准共享锁的事务只能读数据,不能修改数据。
排他锁(X锁):用于数据修改操作,例如 INSERT、UPDATE 或 DELETE。确保不会同时同一资源进行多重更新。
如果事务T对数据A加上排他锁后,则其他事务不能再对A加任任何类型的封锁。获准排他锁的事务既能读数据,又能修改数据。
我们在操作数据库的时候,可能会由于并发问题而引起的数据的不一致性(数据冲突)
大数据表先筛选再join
想先筛选,再join ,语法如下 select * form tab1 left join tab2 on (tab1.size = tab2.size and tab2.name=’AAA’)
注意,只能筛选子表,主表还得通过where条件进行筛选,写在后面的是子表
避免死锁:使用临时表

本文深入探讨了数据库操作中的锁机制,包括共享锁(S锁)和排他锁(X锁)的作用与区别,以及如何通过with(nolock)解决死锁问题但可能引入脏数据风险。同时,介绍了大数据表先筛选再join的技巧,以及使用临时表避免死锁的方法。
546

被折叠的 条评论
为什么被折叠?



