我正在将数据库从一个实例移动到另一个实例(通过从第一个实例分离数据库,将MDF文件移动并记录到另一个位置,并将它们附加到新实例),不幸的是无法附加其中的一些,并且错过了计算的数据库数量有问题,如何MDF从特定目录检查所有未附加到 SQL 服务器的文件。
查看性能数据,我意识到在 VMWare 上运行的 Sql Server 2016 SP1 上的页面预期寿命突然下降,消耗 58982 MB 的 64 GB RAM。PLE 的先前值约为 133,000,突然下降到 7,300 秒。
看起来候选人只有一个查询会导致这种情况。我上传了执行计划。
该查询在早上很早就运行,因此看起来系统上几乎没有其他活动。它需要 01:27 m:s 运行时间并导致 600,000 次读取。
为什么这个查询会导致 PLE 的下降?
下降的后果是什么?
我有一种情况,我对 TempDB 的大小有限制,不能超过 350 GB。我autogrowth 10在 TempDB 上使用(百分比),因为我读到它应该是超过 500 MB 的数据库的最佳实践。
当我使用
dbcc checkdb with estimateonly
Run Code Online (Sandbox Code Playgroud)
在每个数据库上,我注意到 TempDB 的估计需求比我目前的需求低得多。将 返回的值相加dbcc checkdb with estimateonly得到大约 75 GB 的值。
TempDB 的大小目前为 300 GB。我无法进一步增加 TempDB 的允许大小。
我听说我们公司以前有一个 SQL 作业,如果它超过某个值,它会自动缩小 TempDB,但它没有在我们的新环境中使用。然而,我很矛盾,对缩小 TempDB 过于宽松可能会导致问题。
使用这篇文章中的信息,如果当前大小超过 200 GB 左右,将 TempDB 自动收缩到 200 GB 大小是否存在任何重大风险,看到dbcc checkdb with estimateonly返回的估计最小大小为 75 GB,这将导致这一个相当高的相对缓冲?
我读过这不是缩小 TempDB 的最佳做法,但在这种情况下,参考 TempDB 的估计最小大小,它可能更“合法”吗?
编辑
我做了以下查询,例如,internal object MB space, internal object dealloc MB space, statement text(查询), total …
一周前我制定了一个维护计划,并且每晚都执行得很好。现在数据库收缩任务已停止工作并抛出此错误:
属性大小不可用于数据库“[foo]”。此对象可能不存在此属性,或者可能由于访问权限不足而无法检索。
昨天我安装了几个由 Windows 更新提供的 SQL Server 修补程序(4411 和 4457,如果有的话)。这是我可能做出的唯一改变。
我的任务是这样的:
我的一些发现:
问题是什么?
我如何说服我的 DBA 存在 SQL Server 的零星问题?
问题:基本上,主要减速......一些查询,生成执行计划,甚至生成现有数据库对象的脚本有时可能需要永远。即使是应该没有性能问题的操作,比如生成创建表脚本,有时也可能需要很长时间。
情况 - 我有一个 SQL Server 数据库,我可以在其中创建表/视图/等。
该数据库托管在由公司 IT 管理的 SQL Server (MS SQL Server 2016) 上。
我已经让他研究一下,我相信他一直在认真检查日志,他说服务器上的负载有时我注意到大量的性能问题没有显示出任何异常。事实上,他说这都在 5% 以下(非常低)。
我在暂存和开发环境中运行完全相同的代码和查询,在那里很好 - 相对于生产环境,它甚至超快。
老实说,我不知道这可能是什么问题。我不知道从哪里开始。
我在我的数据库中记录了最慢的查询,其中一个让我感到惊讶,在列表中显示了很多次,并且执行通常需要很多秒。
UPDATE books SET last_read='2018-12-31 11:23:45' WHERE book_id='15'
Run Code Online (Sandbox Code Playgroud)
book_id 是 int 身份 PK(集群),last_read 是日期时间。查询是用单引号中的 15 编写的,因此需要转换,但我无法想象这是一个大问题,因为每个查询只进行一次转换。表上有 6 个索引,但列 last_read 未涉及或包含在其中任何一个中。PK 在 book_id 上,没什么特别的。
估计的执行计划告诉我:
UPDATE: 0%
Clustered Index Update (on the PK constraint): 100%
Run Code Online (Sandbox Code Playgroud)
我不希望查询更新任何索引,因为 last_read 没有以任何方式编入索引,并且 book_id 没有更改。
我错过了什么?
目前我正在使用 ola hallengren 备份和维护脚本。
我有个问题:
我在一台服务器上有 5 个大数据库。每天大约需要 10 多个小时才能完成完整备份。目前它正在按顺序写入磁盘。
我想并行写入所有备份以减少时间。有什么办法可以并行编写备份吗?
我正在压缩并仅验证备份到网络位置
在我现在的环境中,我有很多存储过程的实例,就像下图所示的那样,将一堆参数传递给过程,然后在过程select exists中运行a ,并根据结果运行不同的逻辑路径在存储过程中。
我对以下程序有几个问题:
1)它是参数嗅探的好选择吗?
2)我怎么能option(recompile)在代码中添加?
在代码中添加选项(重新编译)与使用重新编译创建存储过程之间存在差异。
option(recompile)如果可能的话,我会更热衷于。
ALTER PROCEDURE [dbo].[usp_upd_activity]
@activityId INT,
@title VARCHAR(100),
@description VARCHAR(MAX),
@inclusions VARCHAR(MAX),
@locationId INT,
@imageUriMain VARCHAR(255),
@uploadToBucket VARCHAR(200),
@path VARCHAR(200)
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRAN
BEGIN TRY
DECLARE @documentId INT
IF NOT EXISTS (SELECT 1
FROM document
WHERE activityId = @activityId)
BEGIN
INSERT INTO document
( [uploadToBucket], [path], [activityId])
VALUES (@uploadToBucket, @path, @activityId)
SET @documentId = SCOPE_IDENTITY();
END
ELSE
BEGIN
UPDATE document
SET uploadToBucket = @uploadToBucket, …Run Code Online (Sandbox Code Playgroud) sql-server stored-procedures optimization sql-server-2016 parameter-sniffing
我只是想在我的其中一台生产数据库服务器上配置“资源调控器”,我们已经在其中实现了 AlwaysOn。
许多应用程序(如 SSRS、Web App 和 SSIS)连接到数据库服务器。
我可以使用APP_NAME()函数获取 SSRS、Web 应用程序和 SSIS 的应用程序名称,但无法获取 AlwaysOn 进程的应用程序名称。
有什么方法可以识别它,以便我们可以通过资源调控器监视/限制 AlwaysOn 正在/将使用多少资源。
DELETE我的生产 SQL 服务器中的查询导致死锁。我知道 DELETE 导致了这种情况,因为我检查了扩展事件并检查了死锁 XML 并发现此 DELETE 正在阻塞,这最终导致死锁。
所以DELETE是发生在两个表格,TB1和TB2。tb1 的主键在 tb2 中可用作外键,并CASCADE DELETE在 tb2 外键中使用。
我什Allow Page Locks至FALSE在 tb1 和 tb2 中创建了聚集索引,但仍然没有运气。
我想READ COMMITTED SNAPSHOT在我的数据库中尝试之前尝试所有其他选项。
任何帮助将不胜感激。
附加信息:
使用READ COMMITTED SNAPSHOT也是一个挑战,因为它涉及风险。
这是 XDL
<deadlock>
<victim-list>
<victimProcess id="process257a65d6ca8" />
</victim-list>
<process-list>
<process id="process257a65d6ca8" taskpriority="0" logused="6024" waitresource="KEY: 6:72057794784329728 (bb7a6e52eae1)" waittime="4485" ownerId="45816472292" transactionname="user_transaction" lasttranstarted="2019-01-08T11:30:06.837" XDES="0x24883ec2a70" lockMode="RangeS-U" schedulerid="26" kpid="39320" status="suspended" spid="217" sbid="2" …Run Code Online (Sandbox Code Playgroud) sql-server-2016 ×10
sql-server ×9
backup ×1
deadlock ×1
delete ×1
locking ×1
memory ×1
optimization ×1
performance ×1
shrink ×1
ssms ×1
tempdb ×1