• 数据库中的锁


    • EF操作数据库有时会出现如下异常
      • 从存储区提供程序的数据读取器中进行读取时出错...........事务(进程 ID *)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务。
      • 原因:通过EF操作数据库时发生了死锁,这有可能是因为数据库同时有数据库同步、OGG等事务进程在进行。
      • 解决方法:
        • 貌似只能缓解
        • 如果业务上允许部分数据的脏读(不及时)
          • EF读数据时允许读取脏数据
            •  1 public static List<T> ToListReadUncommitted<T>(this IQueryable<T> query)
               2         {
               3             using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions() { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted }))
               4             {
               5                 List<T> toReturn = query.ToList();
               6                 scope.Complete();
               7                 return toReturn;
               8             }
               9         }
              10 
              11         public static int CountReadUncommitted<T>(this IQueryable<T> query)
              12         {
              13             using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions() { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted }))
              14             {
              15                 int toReturn = query.Count();
              16                 scope.Complete();
              17                 return toReturn;
              18             }
              19         }
              View Code
          • sql查询增加nolock
          • 处理一个数据库死锁的异常时候,其中一个建议就是使用 NOLOCK 或者 READPAST,NOLOCK 和 READPAST 都是处理查询、插入、删除等操作时候,如何应对锁住的数据记录。NOLOCK 可能把没有提交事务的数据也显示出来.READPAST 会把被锁住的行不显示出来。不使用NOLOCK 和 READPAST ,在 Select 操作时候则有可能报错误:事务(进程 ID **)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。

  • 相关阅读:
    2018北京网络赛 G The Mole /// 分块暴力 点线距离
    POJ 3525 /// 半平面交 模板
    买不到的数目 /// 结论公式 oj26316
    Number Sequence /// oj21456
    Round Numbers /// 组合计数 oj21455
    POJ 1265 /// 皮克定理+多边形边上整点数+多边形面积
    fread 快速读入 (神奇挂!)
    HDU6395(分段+矩阵快速幂)
    如何得出保留某位小数,不进行四舍五入
    Codeforces1114 D. Flood Fill (DP)(整个区间染成同色)
  • 原文地址:https://www.cnblogs.com/wyp1988/p/9927926.html
Copyright © 2020-2023  润新知