多线程操作数据库

当多线程对同一数据库进行操作的时候会可能发生冲突。


读读不会冲突,读写,写读等操作应该会引起冲突(其中的写包括update、delete和insert)。


解决冲突的方法:

1.使用 select *  from 表名 with(nolock) --不对表加锁进行访问。即使有个用户正在delete 表名,也可以查询出当前表的数据 

2.常见的并发问题,使用锁和事务来控制

    封锁有两种:排它锁(X锁)和共享锁(S锁)。、

    封锁可能引起活锁和死锁。避免活锁课用先来先服务策略;死锁预防方法有一次封锁法和顺序封锁法。死锁的诊断方法有超时法和等待图法。

【总结】

    多线程程序去读写数据库,首先该数据库须支持并发访问,如果支持就要考虑并发控制的问题,根据自己需求可以决定是否使用with(lock),或者通过锁或者事务机制去解决。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值