• 关于数据库死锁


    死锁:读取一个表的时候加的是 S锁(共享锁)
    往表写数据或者是修改、删除数据:X锁
     
    数据库中死锁出现以及解决 
    about死锁:
            读取一个数据的时候,加的是S锁(共享锁) 只允许读,不允许其他人进行修改
            往表写数据或修改,删除一个数据的时候,加的是X锁(排他锁)   由数据库自动加 
            当X锁锁定的时候,其他锁必须等.必须等到X锁运行完了之后,释放.才能由S锁之类的来运行
     
    select * from dbo.Articel_Words with(nolock)
     
    当数据在写入 修改 删除的时候,会给数据库中的数据,添加上一个X锁(排他)
    这个排他锁在释放之前,数据不能被其他人读取访问.也就是说S锁想加上去,加不上.必须等到没有锁或者X锁释放之后
    但是,有一种特例.那就是with(nolock)在读取语句结尾时,会无视排他锁的存在...但是,查出来的数据,有可能是脏数据.
    为什么?因为数据有可能还会回滚...这就是SqlServer中的锁
     
    什么时候能产生死锁?
        甲乙二人 都要访问 ab二表
        甲有a表的锁,等b表的锁
        乙有b表的锁,等a表的锁
        ====死锁.都在等....对方的释放
    这个时候,sqlserver就出现了,sqlserver有一个死锁检索机制.它解决死锁的策略就是牺牲一方,让另一方执行下去.
    死锁的危害,只要产生死锁.只要出现死锁,整个程序整个卡住,所有程序全部卡死.
     
    具体怎么解决?  从操作顺序来解决.甲是先a再b,乙是先b再a才出现了死锁.如果两者顺序一致.还会不会出现死锁?答案是:不会!
    解决死锁:让操作表的顺序一致,就能减少死锁的概率.(当然这是最低级别的代码级别) 因为当高访问量来的时候,依然死锁.(这个就不说.以后再说)
  • 相关阅读:
    回答提出的问题1-17章
    《构建之法》第13-17章读书笔记
    读《一个程序员的生命周期》有感
    构建之法的第十、十一、十二章读书笔记
    阅读《构建之法》第8,9,10章
    5.2-5.3
    作业5.1测试与封装
    读《构建之法》5.6.7 思考
    读《构建之法》的思考
    作业2 结对思则运算
  • 原文地址:https://www.cnblogs.com/henhaoji/p/3182909.html
Copyright © 2020-2023  润新知