如何在SQL Server 2016中使用并行插入以提高查询性能

介绍 (Introduction )

In the first part of this article, we will discuss about parallelism in the SQL Server Engine. Parallel processing is, simply put, dividing a big task into multiple processors. This model is meant to reduce processing time.

在本文的第一部分,我们将讨论SQL Server Engine中的并行性。 简单地说,并行处理就是将一个大任务划分为多个处理器。 该模型旨在减少处理时间。

  • SQL Server can execute queries in parallel

    SQL Server可以并行执行查询
  • SQL Server creates a path for every query. This path is execution plan

    SQL Server为每个查询创建一个路径。 此路径是执行计划
  • The SQL Server query optimizer creates execution plans

    SQL Server查询优化器创建执行计划
  • SQL Server query optimizer decides the most efficient way for create execution plan

    SQL Server查询优化器决定创建执行计划的最有效方法

Execution plans are the equivalent to highways and traffic signs of T-SQL queries. They tell us how a query is executed.

执行计划等效于T-SQL查询的高速公路和交通标志。 他们告诉我们如何执行查询。

In the SQL Server Engine, there is a parameter to set up a limit aka governor for CPU usage. This setting name is MAXDOP (maximum degree of parallelism). We can set this parameter in T-SQL or SQL Server Management Studio under the properties of the server. “0” means SQL Server can use all processors if they are necessary

在SQL Server引擎中,有一个参数来设置CPU使用率的限制(也称为限制器)。 该设置名称为MAXDOP(最大并行度)。 我们可以在T-SQL或SQL Server Management Studio的服务器属性下设置此参数。 “ 0”表示SQL Server可以在必要时使用所有处理器

We can change this option using the following T-SQL script

我们可以使用以下T-SQL脚本更改此选项

 
EXEC sp_configure 'max degree of parallelism', 4;  
GO  
RECONFIGURE WITH OVERRIDE;  
GO  
EXEC sp_configure 'max degree of parallelism'
 

Parallel execution plans, MAXDOP and ENABLE_PARALLEL_PLAN_PREFERENCE

并行执行计划,MAXDOP和ENABLE_PARALLEL_PLAN_PREFERENCE

The Query optimizer analyzes possible execution plans and then chooses the optimal execution plan. This selection is based on the value of query estimated cost. In some cases, the SQL Server query optimizer chooses a parallel execution plan, primarily because the SQL Server query optimizer decides a parallel execution plan cost is more optimum than a serial execution plan.

查询优化器分析可能的执行计划,然后选择最佳执行计划。 该选择基于查询估计成本的值。 在某些情况下,SQL Server查询优化器选择并行执行计划,这主要是因为SQL Server查询优化器确定并行执行计划的成本比串行执行计划更为理想。

Now we will look at some examples of parallel execution plans and properties. This query will generate a parallel execution plan.

现在,我们将看一些并行执行计划和属性的示例。 该查询将生成并行执行计划。

 
SELECT SOD.[SalesOrderID]
      ,[SalesOrderDetailID]
      ,[CarrierTrackingNumber]
      ,[OrderQty]
      ,[ProductID]
      ,[SpecialOfferID]
      ,[UnitPrice]
      ,[UnitPriceDiscount]
      ,[LineTotal]
  FROM [Sales].[SalesOrderDetail] SOD
  INNER JOIN SALES.[SalesOrderHeader] SOH ON SOD.SalesOrderID = SOH.SalesOrderID  
  ORDER BY SOD.ModifiedDate DESC , SOH.rowguid DESC
 

In the previous example, we can see parallel operators and as has been highlighted, Degree of Parallelism show us how many threads are used in this query.

在前面的示例中,我们可以看到并行运算符,并且突出显示, 并行度显示了此查询中使用了多少个线程。

In this step, we will look at the MAXDOP query hint. We can dictate to the SQL Server query optimizer how many threads will run in parallel. This hint specifies the number of threads for the que

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server并行插入 (Parallel Insert) 是指在多个 CPU 核心上同时执行插入操作,以提高插入操作的性能并行插入是通过分隔输入数据并在多个 CPU 核心上同时插入这些数据来实现的。 在 SQL Server ,可以使用以下方法来实现并行插入: 1. 使用批量加载 (Bulk Load)。批量加载是一种用于将大量数据加载到表的快速方法。可以使用 BCP、BCP Utility、OPENROWSET BULK 和 BULK INSERT 等方法来执行批量加载。 2. 使用并行数据仓库 (Parallel Data Warehouse, PDW)。PDW 是 SQL Server 的一个高性能大数据平台,支持并行插入查询。 3. 使用表分区 (Table Partitioning)。表分区是将表拆分成多个分区,每个分区独立存储的技术。可以将分区的数据并行插入到不同的 CPU 核心上。 以下是一个简单的并行插入的示例: ``` -- 创建一个测试表 CREATE TABLE TestTable ( ID INT IDENTITY(1,1) PRIMARY KEY, Name VARCHAR(50), Age INT ) -- 向表插入 10 万行数据 DECLARE @i INT = 1 WHILE (@i <= 100000) BEGIN INSERT INTO TestTable (Name, Age) VALUES ('Test' + CAST(@i AS VARCHAR), @i) SET @i = @i + 1 END -- 修改数据库选项,启用并行插入 ALTER DATABASE [YourDatabase] SET DISABLE_PARALLEL_PLAN_PREFERENCE OFF ALTER DATABASE [YourDatabase] SET MAXDOP 4 -- 设置最大并行度为 4 -- 执行并行插入 INSERT INTO TestTable (Name, Age) SELECT 'Test' + CAST(ID AS VARCHAR), ID FROM TestTable OPTION (MAXDOP 4) -- 设置此次查询的最大并行度为 4 ``` 在上述示例,我们启用了并行插入,将最大并行度设置为 4,并使用 MAXDOP 4 选项设置了此次查询的最大并行度为 4。这将会使 SQL Server 在 4 个 CPU 核心上同时执行插入操作,从而提高插入操作的性能

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值