小编seb*_*eid的帖子

最大用户连接数

在 SQL Server 2012 标准版中,我知道最大用户连接数是 32,767。如果我正朝着这个数字前进,作为 DBA 我应该怎么做?

目前有 30,000 个用户连接,这个数字预计还会增加。

在此处输入图片说明

sql-server max-connections sql-server-2012 connections

25
推荐指数
2
解决办法
6万
查看次数

索引调优问题

我正在调整一些索引,看到一些问题想听听你的建议

在 1 个表上有 3 个索引

dbo.Address.IX_Address_ProfileId 
[1 KEY] ProfileId {int 4}
Reads: 0 Writes:10,519

dbo.Address.IX_Address 
[2 KEYS] ProfileId {int 4}, InstanceId {int 4}
Reads: 0 Writes:10,523

dbo.Address.IX_Address_profile_instance_addresstype
[3 KEYS] ProfileId {int 4}, InstanceId {int 4}, AddressType {int 4}
Reads: 149677 (53,247 seek) Writes:10,523
Run Code Online (Sandbox Code Playgroud)

1- 我真的需要前 2 个索引,还是应该删除它们?

2- 有查询运行使用条件 where profileid = xxxx 和其他使用条件 where profileid = xxxx 和 InstanceID=xxxxxx。为什么优化器选择第 3 个索引而不是第 1 个或第 2 个?

此外,我正在运行一个查询,使每个索引上的锁定等待。如果我得到这些计数,我应该怎么做来调整这个索引?

Row lock waits: 484; total duration: 59 minutes; avg duration: 7 seconds; …
Run Code Online (Sandbox Code Playgroud)

index sql-server index-tuning

8
推荐指数
2
解决办法
360
查看次数

使用多个连接调整查询

我有这个查询 .. 214 Execution/min , 44.42 Avg CPU(ms) 有没有办法让它更快

SELECT        P.Id id0,
              P.ProgramId ProgramId1,
              P.ProgramName ProgramName2,
              P.ProgramLevel ProgramLevel3,
              P.Department Department4,
              P.Track Track5,
              P.AcademicYear AcademicYear6,
              P.StartTerm StartTerm7,
              P.Delivery Delivery8,
              P.Fee Fee9,
              P.City City10,
              P.STATE State11,
              P.StartDate StartDate12,
              P.Deadline Deadline13,
              P.DeadlineDisplay DeadlineDisplay14,
              P.ProgramType ProgramType15,
              O.Id as OrganizationId16,
              O.NAME OrganizationName17,
              P.ApplicationType ApplicationType18,
              P.Concentration Concentration19,
              P.ZipCode ZipCode20,
              P.Campus Campus21,
              P.WADisplayName WADisplayName22,
              P.UpdatedDate updateDate23,
              AF.Id InstanceId24,
              RD.Id stateId33
INTO #TempGetFullProgramSelectionInfo            
FROM    unicas_config..applicationForm AF  
  INNER JOIN UNICAS_CONFIG.. AcademicInstitution AI
           ON AF.casid=AI.casid 
  INNER JOIN UNICAS_CONFIG..Organization O 
           ON …
Run Code Online (Sandbox Code Playgroud)

sql-server index-tuning

8
推荐指数
1
解决办法
4301
查看次数

放下一张大桌子

在我们的生产数据库中有一个 180 GB 的表,大约有 200 万条记录,我想将它重新创建为新文件组中的新空表并删除现有表。在不影响数据库性能的情况下执行此任务的最佳实践是什么?

我的时间将用于重命名和删除表。

我想补充一点,这是一个非常高负载的数据库,所以我不想获得任何锁或长时间运行的查询。

sql-server sql-server-2008-r2

7
推荐指数
1
解决办法
5008
查看次数

登录触发器阻止任何连接

我正在测试登录触发器以限制与某些 IP 的连接。看起来触发器不正确。现在我无法登录到服务器,即使是SA.

有没有办法来解决这个问题?

trigger sql-server

7
推荐指数
1
解决办法
1812
查看次数

大内存授予请求

我有一个带有多个执行计划的查询,与第二个计划相比,授予一个计划的内存是巨大的

在此处输入图片说明

在此处输入图片说明

基于这篇文章https://blogs.msdn.microsoft.com/sql_server_team/addressing-large-memory-grant-requests-from-optimized-nested-loops/

当嵌套循环联接的外部表具有将结果过滤为小输入的谓词时,会出现问题,但批处理排序似乎使用与整个外部表等效的基数估计值。这可能会导致感知到过多的内存授予,这在非常并发的服务器中可能会产生多种副作用,例如 OOM 条件、计划缓存驱逐的内存压力或意外的 RESOURCE_SEMAPHORE 等待。我们已经看到,匹配此模式的单个查询实际上可以在高端机器(1TB+ RAM)上获得几 GB 的授予内存。

到目前为止,一种选择是使用跟踪标志 2340 全局禁用此功能,如 KB 2801413 中所述。但是,在 SQL Server 2016 RC0 中,我们已更改行为以保持优化的优势,但现在最大授予限制基于在可用的内存授予空间上。这种改进也转化为更好的可扩展性,从某种意义上说,可以用更小的内存占用执行更多的查询。我们正在考虑将此行为反向移植到即将推出的已将此行为移植到 SQL Server 2014 Service Pack 2,并像往常一样为市场上的版本提供附加值。

这正是我所看到的,但是我使用的是 SQL Server 2016 Enterprise。

这些是执行计划

https://www.brentozar.com/pastetheplan/?id=SJ0mYAy0b

https://www.brentozar.com/pastetheplan/?id=BJzutC1R-

我的问题是

  1. 2个执行计划的原因是什么?

  2. 优化器正在使用顶部执行计划,我强迫它使用较低的计划,但过了一段时间它又回到顶部执行计划,有什么原因吗?

  3. 如何解决这个问题?这个问题导致应用程序崩溃(有很多RESOURCE_SEMAPHORE等待,应用程序变得无响应)?我应该使用提示:DISABLE_OPTIMIZED_NESTED_LOOP还是 Trace Flag 2340

    注意:我检查了 XML,两个计划都有 NestedLoops Optimized="false"

sql-server execution-plan sql-server-2016 memory-grant

7
推荐指数
2
解决办法
2771
查看次数

带重新编译的存储过程

我有这个存储过程..当我告诉开发人员不推荐使用 Recompile 选项时,他们回答说“这是因为可以使用许多不同的参数调用这个 SP,我们希望优化器获取一个新计划每次调用(不理想,但与使用旧的缓存计划相比,这是一次尝试让它运行得更可靠、速度更快)”

他们说的对吗?有什么方法可以不用重新编译就可以做到这一点

   create PROCEDURE [dbo].[VERIFIER_QUEUE]
   @cas_name varchar(20) = NULL,
   @instance_name varchar(50) = NULL,
   @verifier_id int = NULL,
   @applicant_type VARCHAR(20) = NULL

    WITH RECOMPILE     
    AS

   BEGIN 
SET NOCOUNT ON

DECLARE @cas_name_x varchar(20)
DECLARE @instance_name_x varchar(50)
DECLARE @verifier_id_x int
DECLARE @InstanceId INT
...............
Run Code Online (Sandbox Code Playgroud)

performance sql-server optimization execution-plan query-performance

6
推荐指数
1
解决办法
1509
查看次数

线程池等待

我在线程池上面临非常长的等待时间,有没有办法找出造成这种情况的原因?我们目前在 Windows Server 2008、16 CPU 上运行 SQL Server 2012 标准。连接数为 ~20k ,每分钟 30k 请求。我需要更多的 CPU 还是这是一个应用程序问题?

select COUNT(*) from sys.dm_os_workers

SELECT * 
FROM   sys.dm_os_wait_stats 
WHERE  wait_type = 'threadpool' 

SELECT Count(* ) AS [UserSessions] 
FROM   sys.dm_exec_sessions 
 WHERE  is_user_process = 1 

SELECT Count(* ) AS [SessionsOver60] 
FROM   sys.dm_exec_sessions 
 WHERE  is_user_process = 1 
   AND last_request_end_time < Dateadd(mi,-15,Getdate())
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

24 小时的 CPU 利用率图

在此处输入图片说明

sql-server

5
推荐指数
1
解决办法
1480
查看次数

数据库引擎优化顾问期间删除的索引

我正在使用“数据库引擎优化顾问”分析查询。在此期间,数据库开始阻塞,长时间运行的查询并以重新启动实例结束。当我之后检查时,我发现drop index已经执行了一些命令。

drop index [dbo].[Profile].[_dta_index_Profile_7_1563152614__K15_K1]
Run Code Online (Sandbox Code Playgroud)

为什么会这样?我正在调整的查询不在配置文件表上!如何检查此索引之前是否已在系统中或在分析期间创建?

performance index sql-server performance-tuning

4
推荐指数
1
解决办法
929
查看次数

综合指数

假设我有一个包含 12 列的表 X。在我的查询中,我正在过滤这些条件:

select * from x where a=@a and b=@b

select *  from x where a=@b and b=@b and c=@c

select * from x  where a=@b and b=@b and d=@d

select * from x where a=@b and b=@b and e=@e
Run Code Online (Sandbox Code Playgroud)

该表是非常活跃的表,我需要避免阻塞。如果我需要在这个表上创建索引,我应该创建 4 个这样的索引:

 (a,b) (include columns) 

 (a,b,c) (include columns) 

 (a,b,d) (include columns) 

 (a,b,e) (include columns) 
Run Code Online (Sandbox Code Playgroud)

或者像这样:

(a,b) (include columns)

(c)

(d)

(e) 
Run Code Online (Sandbox Code Playgroud)

或创建 1 个索引 (a,b,c,d,e)(包括列)

这些是每列的不同值的计数。总行数 1446631 , a = 366279 , b= 96 , c = …

performance index sql-server index-tuning query-performance

4
推荐指数
1
解决办法
501
查看次数

分区现有表

我有一个 800 GB 的表,我需要按年对其进行分区

这是当前的表

CREATE TABLE [dbo].[MessageInbox]
(
    [Id] [INT] IDENTITY(1, 1) NOT FOR REPLICATION NOT NULL,
    [Subject] [VARCHAR](250) NULL,
    [MessageFrom] [VARCHAR](50) NULL,
    [MessageText] [VARCHAR](MAX) NULL,
    [DateReceived] [DATETIME] NOT NULL,
    [DateCreated] [DATETIME] NOT NULL,
    [ProfileId] [INT] NOT NULL,
    [IsRead] [BIT] NULL,
    [InstanceId] [INT] NULL,
    [msgType] [VARCHAR](25) NULL,
    [Tags] [VARCHAR](100) NULL,
    [excerpt] [VARCHAR](500) NULL,
    CONSTRAINT [PK_Inbox]
        PRIMARY KEY CLUSTERED ([Id] ASC)
        WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
              ALLOW_PAGE_LOCKS = ON
             ) ON [PRIMARY] …
Run Code Online (Sandbox Code Playgroud)

sql-server

3
推荐指数
1
解决办法
106
查看次数

3 个节点的仲裁 AlwaysOn 可用性组

如果我要使用只读路由设置一个包含 3 个节点的 Alwayson 可用性组。我需要配置法定人数吗?

sql-server availability-groups sql-server-2016

2
推荐指数
1
解决办法
3225
查看次数

执行计划问题

我有这个查询运行了很长时间

    (@P0 nvarchar(4000))

select emaildmo0_.Id as Id7_
    ,emaildmo0_.CreatedDate as CreatedD2_7_
    ,emaildmo0_.EmailAddress as EmailAdd3_7_
    ,emaildmo0_.EmailType_Id as EmailType4_7_
    ,emaildmo0_.isPreferedEmail as isPrefer5_7_
    ,emaildmo0_.ProfileId as ProfileId7_
    ,emaildmo0_.UpdatedDate as UpdatedD6_7_
from dbo.Email emaildmo0_
where emaildmo0_.EmailAddress = @P0
Run Code Online (Sandbox Code Playgroud)

这是执行计划

在此处输入图片说明

我的第一个问题为什么是索引扫描而不是索引查找

ExecutionPlan.xml 中的这两行

        <Warnings>
          <PlanAffectingConvert ConvertIssue="Cardinality Estimate" Expression="CONVERT_IMPLICIT(nvarchar(255),[emaildmo0_].[EmailAddress],0)" />
          <PlanAffectingConvert ConvertIssue="Seek Plan" Expression="CONVERT_IMPLICIT(nvarchar(255),[emaildmo0_].[EmailAddress],0)=[@P0]" />
        </Warnings>
Run Code Online (Sandbox Code Playgroud)

你能帮我解释一下这个警告是什么意思吗?如果有任何建议来调整这个查询

performance sql-server query-performance

0
推荐指数
1
解决办法
294
查看次数