zoukankan      html  css  js  c++  java
  • 关于数据库死锁

    死锁:读取一个表的时候加的是 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才出现了死锁.如果两者顺序一致.还会不会出现死锁?答案是:不会!
    解决死锁:让操作表的顺序一致,就能减少死锁的概率.(当然这是最低级别的代码级别) 因为当高访问量来的时候,依然死锁.(这个就不说.以后再说)
  • 相关阅读:
    multidownloadXkcd 多线程抓图
    51job_selenium测试2
    51job_selenium测试
    python爬虫 前程无忧网页抓取
    化工pdf下载
    Velocity写法注意
    Velocity中文乱码问题解决方法
    velcoity使用说明:foreach指令
    strults2标签s:set的用法
    struts提交action乱码
  • 原文地址:https://www.cnblogs.com/henhaoji/p/3182909.html
Copyright © 2011-2022 走看看