SQLServer通过链接服务器远程删除数据性能问题解决
在上一遍文章中介绍了SQLServer通过链接服务器访问Oracle性能问题的解决方法,本文介绍链接服务器下远程删除SQLServer数据的性能问题解决 1. 问题发现 系统中有个功能,需要远程删除SQLServer实例的表数据,删除语句中有where条件,条件中有一个子查询。 该
在上一遍文章中介绍了SQLServer通过链接服务器访问Oracle性能问题的解决方法,本文介绍链接服务器下远程删除SQLServer数据的性能问题解决
1. 问题发现
系统中有个功能,需要远程删除SQLServer实例的表数据,删除语句中有where条件,条件中有一个子查询。
该功能前台执行速度非常慢。所以准备调优。
下面为演示代码,未优化前如下:
<span><span>DELETE</span> <span>FROM</span> <span>[</span><span>LINKSERVERNAME</span><span>]</span>.<span>[</span><span>AdventureWorks2008</span><span>]</span>.<span>[</span><span>Sales</span><span>]</span>.<span>[</span><span>SalesOrderDetail</span><span>]</span> <span>WHERE</span> SalesOrderDetailID<span>=</span><span>5</span> <span>AND</span> <span>EXISTS</span>(<span>SELECT</span> <span>TOP</span> <span>1</span> <span>1</span> <span>FROM</span> <span>[</span><span>LINKSERVERNAME</span><span>]</span>.<span>[</span><span>AdventureWorks2008</span><span>]</span>.<span>[</span><span>Sales</span><span>]</span>.<span>[</span><span>SalesOrderDetail</span><span>]</span>)</span>
此时的执行计划如下图:
可以看到执行计划存在一个远程扫描,然后在本地执行筛选。
在远程服务器开启profiler跟踪,部分内容如下图:
可以看到远程服务器开启了一个游标,然后逐行读取数据并返回给调用端。
可以预见性能会非常差,如何避免不带where条件的远程扫描呢?
2. 问题解决
2.1 OpenQuery
使用OpenQuery将delete数据的筛选提交到远程服务器执行。
<span><span>DELETE</span> <span>FROM</span> <span>OPENQUERY</span>(<span>[</span><span>LINKSERVERNAME</span><span>]</span><span> ,</span><span>'</span><span>SELECT * FROM [AdventureWorks2008].[Sales].[SalesOrderDetail] WHERE SalesOrderDetailID=5 AND EXISTS(SELECT TOP 1 1 FROM [AdventureWorks2008].[Sales].[SalesOrderDetail])</span><span>'</span><span> )</span></span>
此时,执行计划如图:
2.2 sp_executesql
将整个delete语句提交到远程执行
<span><span>DECLARE</span> <span>@sql</span> <span>nvarchar</span>(<span>max</span><span>) </span><span>SELECT</span> <span>@sql</span> <span>=</span><span>'</span><span> DELETE FROM [AdventureWorks2008].[Sales].[SalesOrderDetail] WHERE SalesOrderDetailID=5 AND EXISTS(SELECT TOP 1 1 FROM [AdventureWorks2008].[Sales].[SalesOrderDetail]) </span><span>'</span> <span>exec</span> <span>[LINKSERVERNAME</span><span>]</span>.<span>[</span><span>AdventureWorks2008</span><span>]</span>.dbo.sp_executesql <span>@sql</span></span>
profiler跟踪到的语句如下:
如有不对的地方,欢迎拍砖;如有其他方法,求分享,谢谢!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

For objects with the same name that already exist in the SQL Server database, the following steps need to be taken: Confirm the object type (table, view, stored procedure). IF NOT EXISTS can be used to skip creation if the object is empty. If the object has data, use a different name or modify the structure. Use DROP to delete existing objects (use caution, backup recommended). Check for schema changes to make sure there are no references to deleted or renamed objects.

The import steps are as follows: Copy the MDF file to SQL Server's data directory (usually C:\Program Files\Microsoft SQL Server\MSSQL\DATA). In SQL Server Management Studio (SSMS), open the database and select Attach. Click the Add button and select the MDF file. Confirm the database name and click the OK button.

1. First of all, it is false to block and delete someone permanently and not add them permanently. If you want to add the other party after you have blocked them and deleted them, you only need the other party's consent. 2. If a user blocks someone, the other party will not be able to send messages to the user, view the user's circle of friends, or make calls with the user. 3. Blocking does not mean deleting the other party from the user's WeChat contact list. 4. If the user deletes the other party from the user's WeChat contact list after blocking them, there is no way to recover after deletion. 5. If the user wants to add the other party as a friend again, the other party needs to agree and add the user again.

When the SQL Server service fails to start, here are some steps to resolve: Check the error log to determine the root cause. Make sure the service account has permission to start the service. Check whether dependency services are running. Disable antivirus software. Repair SQL Server installation. If the repair does not work, reinstall SQL Server.

To view the SQL Server port number: Open SSMS and connect to the server. Find the server name in Object Explorer, right-click it and select Properties. In the Connection tab, view the TCP Port field.

If you accidentally delete a SQL Server database, you can take the following steps to recover: stop database activity; back up log files; check database logs; recovery options: restore from backup; restore from transaction log; use DBCC CHECKDB; use third-party tools. Please back up your database regularly and enable transaction logging to prevent data loss.

I cry to death. The world is madly building big models. The data on the Internet is not enough. It is not enough at all. The training model looks like "The Hunger Games", and AI researchers around the world are worrying about how to feed these data voracious eaters. This problem is particularly prominent in multi-modal tasks. At a time when nothing could be done, a start-up team from the Department of Renmin University of China used its own new model to become the first in China to make "model-generated data feed itself" a reality. Moreover, it is a two-pronged approach on the understanding side and the generation side. Both sides can generate high-quality, multi-modal new data and provide data feedback to the model itself. What is a model? Awaker 1.0, a large multi-modal model that just appeared on the Zhongguancun Forum. Who is the team? Sophon engine. Founded by Gao Yizhao, a doctoral student at Renmin University’s Hillhouse School of Artificial Intelligence.

If the SQL Server installation fails, you can clean it up by following these steps: Uninstall SQL Server Delete registry keys Delete files and folders Restart the computer
