我们目前在固态驱动器上有 tempdb(8 个文件)。
我们知道建议主 mdf 和事务日志 ndf 位于不同的驱动器上,以减少争用。tempdb 文件应该在不同的驱动器上以保持一致的原则,还是可以都在同一个驱动器上?
以下文章指出它们都在同一个驱动器上,但正在寻找背景技术解释。 对多个 tempdb 文件的建议
ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev2', FILENAME = N'G:\tempdb2.ndf' , SIZE = 12288000KB , MAXSIZE = UNLIMITED, FILEGROWTH = 0 )
GO
ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev3', FILENAME = N'G:\tempdb3.ndf' , SIZE = 12288000KB , MAXSIZE = UNLIMITED, FILEGROWTH = 0 )
....
Run Code Online (Sandbox Code Playgroud) performance sql-server sql-server-2012 tempdb performance-tuning
我有一个 After Update 触发器,其中触发器在同一个表中插入一个值以查找持续时间列。我的目标是每当插入 end_time 值时,触发器将找到hh:mm:ss格式的持续时间并插入到持续时间列中。
问题-触发器导致如此多的死锁,从而阻塞了另一个进程。
列数据类型信息..
Start_time datetime, End_time datetime, Duration time(3)
ALTER TRIGGER [dbo].[GET_DURATION] ON [dbo].[INBOUND_CALL_xxx]
AFTER UPDATE AS
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
Begin Transaction
UPDATE INBOUND_CALL_xxx
SET DURATION = convert(time(0),(END_TIME- START_TIME))
FROM INBOUND_CALL_xxx with (nolock)
Commit;
Run Code Online (Sandbox Code Playgroud) performance sql-server-2008 sql-server sql-server-2012 performance-tuning
如果我理解正确,索引一列会提高 SELECT 速度,但会降低 INSERT 速度。
假设您的应用程序是新的,并且您已经确定了适合编制索引的列(基于您查看视图的方式,例如 WHERE / JOINS)。
您是否必须在发现性能问题之前立即索引这些列?或者稍后再做这些操作而不影响 INSERT 是否有意义?
mysql performance optimization query-performance performance-tuning
我正在使用 MongoDB Atlas,我有一个 3 个集群,具有 M30 和 100gb 的存储空间。
我当前的用例如下: - 用户在我的平台中分派一个搜索 - 平台将此搜索分派给其他提供商 (12) - 对于此搜索,每个提供商获得 2k 份文档
对于配置,我在 3 个副本集集群(M30 = 8 GB RAM • 100 GB 存储)中使用 Mongodb Atlas。我还有一个 TTL 索引,用于根据每个文档中的日期字段 (searchStartedAt) 使我用来在 10 分钟后删除文档的唯一数据库/集合中的文档过期。
我试图理解的是我收到的这个警报(“复制操作日志窗口已经低于 1 小时”),如果我做对了,主节点可以在从节点失去同步之前继续接收数据多长时间。
我想检查一下我的理解是否正确,是否有任何调整可以避免这种情况。
有人可以给我一个提示吗?如果任何其他信息可以对此提供帮助,请告诉我,我会更新问题。
非常感谢您提供有关它的任何提示。
一个巨大的表导致了一个非常重要的生产数据库(MS SQL Server 2016 SP1 标准版)上的严重性能问题。
您将如何提高这种有问题的表的性能?您会在建议的性能调整步骤中添加或删除哪些内容?
非常感谢并提前感谢。
好的,我不想一一回复所有评论。所以我正在编辑问题并添加更多信息。
第一:我不是专家 DBA。我会说一个高级初学者。这就是为什么我在这里尽可能多地向社区学习。
第二:我们两周前才得到这个客户,我自己还没有完全访问环境。这个关于问题的信息(事实),关于表直接来自客户的系统管理员。
第三:因此,我不知道为什么该表是堆的第一手,没有索引,他们让它在没有任何分区的情况下增长这么多,等等。
第四:建议的解决方案和建议的步骤不是我自己的,而是直接来自整个系统的制造商(这是一个众所周知的统一通信系统,制造商在这方面是最好的。我想你们都知道哪个)。
5th:我希望下周可以完全访问环境,在此之前我只是想分享我手头的东西,并在陷入困境之前尝试获得尽可能多的意见/建议。
第 6 名:因为不幸的是,我将把这个烂摊子从这里拿走,并试图让它更好、更顺畅地工作。
感谢所有已经抽出时间并回复的人。我已经有了一些见识。一旦我手头有更多信息,我肯定会分享更多信息。
使用 Demo from here重现我的问题,更改表结构如下,并将演示分区函数修改为 datetime
CREATE TABLE [dbo].[DemoPartitionedTable](
[DemoID] [int] IDENTITY(1,1) NOT NULL,
[SomeData] [sysname] NOT NULL,
[CaptureDate] [datetime] NULL,
CONSTRAINT [PK_DemoPartitionedTable] UNIQUE NONCLUSTERED
(
[DemoID] ASC,
[CaptureDate] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
)
GO
Run Code Online (Sandbox Code Playgroud)
用户运行如下查询(查询 1)
SELECT [DemoID], [SomeData], [CaptureDate] FROM
[dbo].[DemoPartitionedTable] WHERE (1=1) and (1=1) and
CONVERT(varchar(10),CaptureDate,112) between 20190912 and 20190912
Run Code Online (Sandbox Code Playgroud)
计划是https://www.brentozar.com/pastetheplan/?id=r1veZhovH
大约需要 4 小时才能返回 500 万行
如果我使用如下分区键来改进上面的代码(查询 2)
SELECT [DemoID], [SomeData], [CaptureDate] FROM …Run Code Online (Sandbox Code Playgroud) performance sql-server partitioning sql-server-2012 query-performance performance-tuning
我有一个过程,它在数百个数据库中动态运行查询,这些数据库都具有相同的确切架构,并将结果聚合到临时表中。该查询仅涉及 3 个表(每个表都在数百万行的 10 到 100 之间,但我总共只提取了大约 50,000 行数据)。
在查看查询的汇总 IO 统计信息(通过 StatisticsParser.com - 大声喊出 Richie Rump)时,它显示创建了一个工作表,并且该工作表上有大约 550,000 个 LOB 逻辑读取。查询中所有表的常规逻辑读取总数略低于大约 400,000 次逻辑读取。
查询中的实际表都没有使用任何 LOB 数据类型,那么这到底意味着什么,它是否是我查询中瓶颈的潜在来源?
(顺便说一句,我拉回的 50,000 行数据仅相当于大约 3 MB 的数据,但我的查询在第一次运行时需要大约 10 秒才能运行(例如,当表的数据页仍在加载到内存中时) ),然后在后续运行中不到一半的时间,因此尝试查看我是否可以始终接近 <= 4s 基准测试,以及这些 LOB 逻辑读取是否与之相关。)
更新:这是一个类似的示例查询(再次查看它,我可能会发现 LOB 逻辑读取的来源)。
过程签名: sp_StoredProc_ToGetData (@IdsTable TVP (Id INT), @StartDate DateTime, @EndDate DateTime)
sp_StoredProc_ToGetData 内部的查询:
SELECT Id
INTO #IdsTableTemp
FROM @IdsTable;
-- This query is ran using dynamic SQL but for the example simplicity this is just the root …Run Code Online (Sandbox Code Playgroud) sql-server statistics dynamic-sql sql-server-2016 performance-tuning
sql-server ×5
performance ×4
alerts ×1
dynamic-sql ×1
heap ×1
index ×1
mongodb ×1
mongodb-4.2 ×1
mysql ×1
optimization ×1
partitioning ×1
statistics ×1
tempdb ×1