SQLServer 性能优化
文章平均质量分 82
薛定谔的DBA
这个作者很懒,什么都没留下…
展开
-
SQL Server 意向锁
现在,假设我们按聚集索引查询某行或几行数据(如下图),此时相应的行数据将加上共享锁(S),而该行数据所在的页、表,将加上意向共享锁(IS)(排它锁或更新锁同理)。而进程对能对同一个资源同时只能持有一个锁,所有只能释放共享锁(S),再加上排它锁(X),如果直接释放,资源可能被其他进程夺走,这种方法不是好的处理方式。类似地,当进程对表具有共享锁(S)并在该表的行上具有更新锁(U)时会发生共享意向更新(SIU),而当进程对表具有更新锁(U)而对行具有排他锁时会发生更新意向排他(UIX)。意向排他共享 (SIX)原创 2023-04-23 09:30:17 · 676 阅读 · 0 评论 -
SQL Server tempdb 闩锁争用
如果争用仍然存在,则将数据文件的数量进一步增加 4 的倍数,不过一旦达到 32 个文件,就可能没什么效果了。121320 是 8088 的倍数,所以它是一个 PFS 页面,如果不是 PFS 页面,我们也可以识别正在等待的页面是 GAM 还是 SGAM 页面。GAM页面是数据文件中的第 2 页,下一个 GAM 页面放置在第一个 GAM 页面之后的 511230 页(GAM 间隔)。SGAM 页面是数据文件中的第 3 页,下一个 SGAM 页面放置在第一个 SGAM 页面之后的 511230 Page 处。原创 2023-04-23 09:28:42 · 557 阅读 · 0 评论 -
SQL Serve 日志体系结构
日志块在 VLF 中有一个 ID,从 1 开始,对于 VLF 中的每个新日志块增量为 1。日志记录在日志块中也有一个 ID,从 1 开始,对于日志块中的每个新日志记录增加 1。因此,事务日志的结构层次结构中的所有三个元素都有一个 ID,它们合并为一个称为日志序列号的三方标识符中,通常简称为LSN。但是,使用这种算法,如果自动增长的大小很小,并且日志文件经历了许多自动增长,它可能会导致大量的小 VLF(称为VLF 碎片),这可能是一个很大的性能问题。这是一个不断增加的标识符,因为 VLF 序列号永远增加。原创 2023-02-12 21:27:37 · 814 阅读 · 0 评论 -
SQL Server 了解日志缓存刷新
在此之前,你可能已经多次听说ACID事务属性了吧。本文主要关注D部分,即持久性。更具体地说,本文关注SQL Server日志记录体系结构的一个方面——日志缓冲区刷新。下面将讨论日志缓冲区提供的功能、SQL Server将日志缓冲区刷新到磁盘的条件、你可以做些什么来优化事务性能原创 2022-10-23 19:31:01 · 1347 阅读 · 0 评论 -
SQL Server 兼容性级别和基数估计
如果你恢复了从 SQL Server 2008 实例到 SQL Server 2012 实例的数据库备份,它会升级数据库的文件版本,但会保留它在 SQL Server 2008 实例上的兼容性级别……原创 2022-08-15 09:52:52 · 1613 阅读 · 1 评论 -
SQL Server TempDB 和 Model 数据库之间的关系和比较
默认情况下,每个 SQL Server 实例都带有四个系统数据库——Master、MSDB、Model 和 TempDB……原创 2022-06-29 23:26:21 · 724 阅读 · 0 评论 -
SQL Server 跟踪标志 3226
在 SQL Server 中,您可能不知道数据库备份消息的一个默认行为。默认情况下,每个数据库成功备份都会在 SQL Server 错误日志中记录一条消息。对所有备份类型、所有数据库都会发生这种情况。如果您有大量数据库且频繁执行事务日志备份,这可能是一个问题。这可能会导致您的 SQL Server 错误日志包含大量不是很有用的信息。您可以使用 SQL Server 跟踪标志 3226 更改此行为。图 1:SQL Server 日志文件查看器早在 2007 年,微软的 Kevin Farlee .原创 2021-11-17 20:46:49 · 2038 阅读 · 0 评论 -
SQLServer 2014 重新生成已分区表的单独分区
SQLServer 2014 重新生成已分区表的单独分区原创 2016-08-20 09:06:29 · 2334 阅读 · 0 评论 -
SQLServer 2014 增量统计信息
SQLServer 2014 允许创建分区级别的增量统计信息,即在分区中,允许对指定的分区进行统计信息更新,避免了全表统计信息的更新原创 2017-04-19 02:30:05 · 1717 阅读 · 0 评论 -
SqlServer 表选项LOCK_ESCALATION对分区的影响
SqlServer 使用锁管理器跟踪数据库对象是否被锁住.通常一个查询将锁住一行或者一页,当锁超过一定范围之后,SqlServer尝试将锁升级为表锁来保证对内存的使用.锁升级有时会导致堵塞或者死锁.在SQL Server profiler中我们可以用[Lock:Escalation]事件来跟踪锁的升级.在SQL Server 2005 中,可以使用跟踪标志 1211 来禁用整个实例中的原创 2015-01-16 11:57:21 · 7702 阅读 · 1 评论 -
SQLServer 中dm_os_ring_buffers(ring_buffer_connectivity)读取XML
select distinct ring_buffer_type from sys.dm_os_ring_buffers/*RING_BUFFER_OOM RING_BUFFER_RESOURCE_MONITOR - 监控资源的使用情况,可以提供分析物理内存压力的信息。RING_BUFFER_SCHEDULER_MONITOR - 监控逻辑调度器的状态,以及健康的记录类型。RING_B原创 2014-12-28 12:39:07 · 2123 阅读 · 0 评论 -
SQLServer Stolen内存优化案例
最近开始观察到 SQLServer.exe 进程占用内存过大,已达到了60GB,如图: 然而,SQLServer 限制的最大内存为 55GB:EXEC sp_configure'max server memory (MB)'可以看到,竟然高出近5GB。 我们知道,’max server memory (MB)’ 限制的是SQLServer buffer pool 的大小,buffer pool原创 2015-06-27 21:52:54 · 4370 阅读 · 0 评论 -
SQL SERVER SQLOS的任务调度
http://blogs.msdn.com/b/apgcdsd/archive/2011/11/24/sql-server-sqlos.aspxSQL Server 通过WORKER, SCHEDULER, TASK等来对任务进行调度和处理。了解这些概念,对于了解SQL Server 内部是如何工作,是非常有帮助的。 通常来讲,SCHEDULER个数是跟CP转载 2014-08-16 19:40:49 · 970 阅读 · 0 评论