zoukankan      html  css  js  c++  java
  • EntityFramework优化:查询WITH(NOLOCK)

    1.SQL Server查询中WITH(NOLOCK)

      SELECT语句中加上WITH(NOLOCK)为解决阻塞死锁。

      处理数据库死锁异常查询的一种方式是使用NOLOCK 或 READPAST。

        ◊ NOLOCK:可能显示没有提交事务的数据

        ◊ READPAST:不显示被事务锁住数据

    1.1 没有提交的事务,NOLOCK 和 READPAST处理的策略

    CREATE TABLE [dbo].[Role](
        [ID] [int] IDENTITY(1,1) NOT NULL,
        [RoleName] [nvarchar](100) NOT NULL,
        CONSTRAINT [PK_Role] PRIMARY KEY CLUSTERED 
        (
            [ID] ASC
        ))
    BEGIN TRANSACTION 
    INSERT INTO [dbo].[Role](RoleName) VALUES ('教师')

    1.2 对被锁住的记录,NOLOCK 和 READPAST处理的策略

    INSERT INTO [dbo].[Role](RoleName) VALUES ('教师'),('学生')
    BEGIN TRANSACTION
    UPDATE [dbo].[Role] SET [RoleName] = 'Teacher' WHERE ID = 1

    2. EntityFramework查询WITH(NOLOCK)

    using System;
    using System.Transactions;
    
    namespace Libing.App
    {
        class Program
        {
            static void Main(string[] args)
            {
                using (var context = new LibingContext())
                {
                    using (var ts = new TransactionScope(TransactionScopeOption.Required,
                        new TransactionOptions { IsolationLevel = IsolationLevel.ReadUncommitted }))
                    {
                        var role = context.Set<Role>().Find(1);
                    }
                }
            }
        }
    }

      使用TransactionScope来避免查询对于它所读取的表的锁定。

  • 相关阅读:
    小白的Python之路_day1
    Vue---tab切换时不刷新
    Vue---第十五章使用VScode编写第一个脚本
    Vue---第十四章visual studio code使用
    Vue---第十三章基础运算和v-model
    Vue---第十二章批量下载模块
    vue---第十一章全局依赖环境区分
    Vue---第十章全局变量
    Vue---第九章NPM
    hadoop-Rpc使用实例
  • 原文地址:https://www.cnblogs.com/libingql/p/9053135.html
Copyright © 2011-2022 走看看