标签: sql-server

NUMA 节点 000 上的低 PLE,001 上的高

我正在查看 SQL Server 上的 NUMA 节点上的 PLE(页面预期寿命),并发现了一个相当奇怪的分布。与 001 相比,NUMA 节点 000 的 PLE 非常低。我不确定为什么会这样。我已经检查了我们环境中的多个其他 SQL Server,其他生产服务器没有这种行为。

系统在带有 256GB RAM 的 Dell m620 上运行 SQL Server 2012 Enterprise Edition。这是一台 2 插槽、6 核(支持 HT)的机器。MAXDOP 设置为 6。AFAIK 内存模块均匀地安装在 CPU 的内存条上

有人告诉我 NUMA 节点 000 有其他 SQL 任务要执行,其他节点,但我忘记了我在哪里听到/看到它。

在此处输入图片说明

在此处输入图片说明

PLE 图像

@@Version 显示:Microsoft SQL Server 2012 (SP1) - 11.0.3412.0 (X64)

sql-server sql-server-2012 numa

10
推荐指数
1
解决办法
1094
查看次数

SQL Server 2008 R2 分区 - 相同的文件组,1 个文件,2 个 partition_numbers - 帮助

这是我第一次在 SQL Server 中进行分区,我从 Brent Ozar 指南中学到了非常棒的 :)

有几次我遇到了一个奇怪的场景;当我运行时:

SELECT *
FROM ph.FileGroupDetail
ORDER BY partition_number
Go
Run Code Online (Sandbox Code Playgroud)

有相同的文件组显示两次,其中包含 2 个不同的 partition_number,其中 1 个正确地在末尾带有范围值,另一个在开头时带有空 range_value。

点击这里放大图片

在此处输入图片说明

几个问题:

  1. 这是怎么回事,我哪里出错了?

  2. 我如何解决这个问题,这意味着如何摆脱一开始的问题,因为我一开始就已经有一个空分区。

我试过删除文件(在它为空时工作)和文件组,但文件组说它无法删除。

有人可以解释一下这是如何发生的以及如何摆脱分区 2 条目吗?

sql-server sql-server-2008-r2 partitioning

10
推荐指数
1
解决办法
211
查看次数

重置 SQL Server 使用情况

在我的开发环境中,我正在处理查询。为此,我需要重置 SQL Server 内存、计划等,这可以确保我的查询是所有值重置的服务器上唯一的压力/工作过程

我正在做的事情很少

  • 射击检查点
  • DBCC 删除缓冲区;
  • DBCC FREEPROCCACHE;
  • DBCC FLUSHPROCINDB
  • DBCC 自由会话缓存
  • DBCC SQLPERF("sys.dm_os_wait_stats",CLEAR);

我做得对吗?或者我需要更多的东西来清除或查看新的统计数据?

performance sql-server performance-testing

10
推荐指数
1
解决办法
2411
查看次数

连接多个表会导致重复的行

我得到的行比我期望的查询返回的行多。

我相信这与我的 join 语句有关。

有多个表,其中包含不同的信息。 Person保存有关此人的主要信息,但不保存地址、电话或电子邮件。这是因为最初的设计师希望桌子能够容纳多个电话号码、电子邮件和地址。

SELECT (person.FirstName + ' ' + person.LastName) as FullName
    ,ISNULL(Person.isClient, '')
    ,ISNULL(Person.UDF1, '')
    ,ISNULL(Address.City, '')
    ,ISNULL(Address.state, '')
    ,PersonAddress.Person
    ,PersonAddress.Address
    ,ISNULL(Phone.PhoneNumber, 'N/A')
    ,Email.Email
    ,Person.Website
FROM Person
    left join PersonAddress on Person.ID = PersonAddress.Person
    left join Address on PersonAddress.Address = Address.ID
    left join PersonPhone on Person.ID = PersonPhone.Person
    left join Phone on PersonPhone.Person = Phone.ID
    left join Email with (nolock) on Person.ID = Email.Person
WHERE (
        isclient = 'prospect'
        or isclient = 'client'
        )
    and …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 join sql-server t-sql

10
推荐指数
1
解决办法
9万
查看次数

查询计划更改 SQL Server 2014 中的性能更糟

我们最近将我们的服务器从 SQL Server 2008R2 升级到 SQL Server 2014。我们有一个查询在 2008R2 中运行良好,但现在在 2014 年运行速度非常慢并且执行计划很糟糕。

我做了几次测试...

  1. 将 2014 DB 切换回 2008/2012 兼容模式。
  2. 使用分页测试查询。

这两者都导致查询运行与 SQL Server 2008R2 相同且速度快。

为什么 SQL Server 2014 中的计划如此糟糕且查询运行时间如此之长?

估计/实际

此图显示了 2 个查询,一个使用 rownumber 其在 2008R2 中运行的方式,然后第二个是使用分页进行修复。两者都在 2014 年运行,两者都非常不同,但在 2008 年,我们看到的性能与 2014 年使用分页相同。

sql-server execution-plan sql-server-2014

10
推荐指数
1
解决办法
3770
查看次数

为 SQL Server 和 NUMA 配置 RAM

意外的数据库管理员在这里。

题:

即使该服务器的唯一目的是仅为 SQL Server 数据库引擎提供服务,您是否仍会手动限制 SQL Server 的最大 RAM?

我有 Microsoft Windows 2012 R2 Server、SQL Server 2012 Std、32GB RAM。

管理员不断登录到 SQL Server 以使用其控制台和所有内容。

其次,您如何检查此 Windows 服务器是否启用了 NUMA?

sql-server memory sql-server-2012 numa

10
推荐指数
2
解决办法
1558
查看次数

为什么在这个查询中没有使用主(集群)键?

我有一个 SQL Server 2008 R2 表,其架构结构如下所示:

CREATE TABLE [dbo].[CDSIM_BE]
(
    [ID] [bigint] NOT NULL,
    [EquipmentID] [varchar](50) NOT NULL,
    [SerialNumber] [varchar](50) NULL,
    [PyrID] [varchar](50) NULL,
    [MeasMode] [varchar](50) NULL,
    [ReadTime] [datetime] NOT NULL,
    [SubID] [varchar](15) NULL,
    [ProbePosition] [float] NULL,
    [DataPoint] [int] NULL,

    CONSTRAINT [PK_CDSIM_BE] 
    PRIMARY KEY CLUSTERED ([ID] ASC, [EquipmentID] ASC, [ReadTime] ASC)
         WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, 
               IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, 
               ALLOW_PAGE_LOCKS = ON) ON [MonthlyArchiveScheme9]([ReadTime])
) ON [MonthlyArchiveScheme9]([ReadTime])

CREATE NONCLUSTERED INDEX [idx_CDSIM_BE__SubID_ProbePosition] 
ON [dbo].[CDSIM_BE] ([SubID] ASC, …
Run Code Online (Sandbox Code Playgroud)

performance sql-server optimization execution-plan sql-server-2008-r2 query-performance

10
推荐指数
1
解决办法
716
查看次数

为什么我的 Azure SQL Server 这么慢?

我们目前有一个功能非常不足的 VM,并建议迁移到具有更好规格的 Azure VM。问题是,Azure VM 比原始 VM 慢得多,即使它的规格更高。

原始服务器是一个具有 2GB 内存的 2 核 VM,它也是一个 Web 服务器。它运行的是 Microsoft SQL Server Web Edition 2008 R2,并且由于该服务器用于其他用途,我们不得不将 SQL Server 中的最大服务器内存限制为512MB

新服务器是一个具有 7GB 内存的 4 核 VM,它只是一个数据库服务器。它运行的是 Microsoft SQL Server Standard Edition 2008 R2,我们没有限制 SQL Server 可以使用的内存量。

这是在镜像环境中设置的两台服务器之一,但我正在运行测试的数据库没有镜像。该服务器上的其他数据库目前没有太多流量(实际上,当我运行这些测试时,活动监视器没有显示其他数据库上的活动)。

我确实意识到 Azure VM 的一个问题是硬盘驱动器是一种网络资源,因此这将是减速的根源,但即使 IO 统计数据中显示 0 次物理读取,它仍然更慢。

我在 Azure VM上遵循了此页面上的调整建议,包括对磁盘进行条带化(每个驱动器两个磁盘)并将日志和数据文件放在不同的驱动器上。

我唯一没有做的事情是启用页面压缩、限制数据库的自动增长以及将 SQL 服务器错误日志和跟踪文件目录移动到数据磁盘。我也没有在旧服务器上这样做。

旧服务器没有进行任何调整,日志和数据文件位于未条带化的同一驱动器上。

当前服务器上的数据库是 65 GB(45 条数据和 20 条日志),这对于传输到新服务器来说有点太大了,所以我正在一个较小的数据库上进行测试(6 条数据和 13.5 条日志)

旧服务器上的结果CPU time = 1311 ms, elapsed time = …

performance sql-server azure-vm

10
推荐指数
1
解决办法
8590
查看次数

I/O 在数据库上被冻结,并且 I/O 在数据库上每天都在日志中恢复,并具有完整的备份

我想说的是,我每天都在日志文件中收到消息。

首先 I/O 被冻结在数据库 (DatabaseName) 消息出现在日志中。消息就像

I/O 在数据库 (DatabaseName) 上被冻结。不需要用户操作。但是,如果 I/O 没有立即恢复,您可以取消备份。

然后 I/O 在 Database(DatabaseName) 消息上恢复,如下所示

数据库 (DatabaseName) 上的 I/O 已恢复。无需用户操作。

最后备份已经成功完成了数据库,就像这条消息

无需用户操作

这是我的生产审计数据库,软件环境如下:

Windows Server 2012 R2
SQL Server 2012
VMware Tools
Run Code Online (Sandbox Code Playgroud)

我的生产数据库“恢复模式”是“完整”恢复模式。并从 SQL Server 中的哪个登录 ID 设置维护计划备份。它对所有数据库具有“系统管理员”权限。

备份已通过“维护计划”备份在特定时间安排(例如每天下午 4 点)进行设置。并且 Always Backup 在他们的计划时间间隔内成功完成。

为什么在计划备份时间会生成这种日志消息。这种消息是否会影响我的生产数据库性能。我的生产数据库中的(备份/恢复)数据一致性会有任何问题。

任何建议将不胜感激。

sql-server backup sql-server-2012 maintenance-plans

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

SQL Server 使用活动连接还原数据库

我正在尝试在 SQL Server 实例上运行此 SQL 脚本,以将测试数据库恢复到实时数据库的较新副本。

RESTORE FILELISTONLY
   FROM disk = '\\staging_server\path\to\db_backup.bak'    
-- Restore the files for 
RESTORE DATABASE Test_DB
   FROM disk = '\\staging_server\path\to\db_backup.bak'
   WITH replace,
   MOVE 'Test_DB' TO 'D:\R2_BIN\Test_DB.mdf', 
   MOVE 'Test_DB_log' TO 'D:\R2_BIN\Test_DB_log.ldf', 
   stats = 5
GO
Run Code Online (Sandbox Code Playgroud)

但是,在运行脚本时,我收到以下错误。

消息 3101,级别 16,状态 1,第 5 行
,无法获得独占访问权限,因为数据库正在使用中。
消息 3013,级别 16,状态 1,第 5 行
RESTORE DATABASE 异常终止。

有什么方法可以强制执行此操作,并终止完成它所需的任何连接?我试图关闭任何可能连接到数据库的应用程序,但我根本无法识别一些连接。我的用户名中有几个,但我只打开了一个 SQL Server Management Studio 实例。

无论如何,有没有办法杀死与特定数据库的所有连接?这个实例上运行着相当多的数据库,所以如果我能帮上忙,我不想只是关闭并重新启动实例。

sql-server sql-server-2008-r2

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