我为现有表做了一个表分区。 你可以建议最好的优化,因为我的事务日志已经完全运行下面的表分区查询
BEGIN TRANSACTION
CREATE PARTITION FUNCTION [pfDimHeader_HIST](nvarchar(6)) AS RANGE LEFT FOR VALUES ( N'201401', N'201501', N'201601', N'201602', N'201603', N'201604', N'201605', N'201606', N'201607', N'201608', N'201609', N'201610', N'201611', N'201612', N'201701', N'201702', N'201703', N'201704', N'201705', N'201706', N'201707')
CREATE PARTITION SCHEME [psDimHeader_HIST] AS PARTITION [pfDimHeader_HIST] TO ([PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY])
SET ANSI_PADDING ON
CREATE CLUSTERED INDEX [ClusteredIndex_on_psDimHeader_HIST_636336478362776789] ON [cdw].[DimHeader_HIST]
(
[ReportingPeriod]
)WITH (SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [psDimHeader_HIST]([ReportingPeriod])
DROP INDEX [ClusteredIndex_on_psDimHeader_HIST_636336478362776789] ON [cdw].[DimHeader_HIST]
COMMIT TRANSACTION
答案 0 :(得分:0)
[0]一般来说,为了降低对事务日志的影响,事务应该更小。因此,不是使用单个事务来创建索引然后删除(相同的索引;对我来说没有意义 - 至少在这一刻)你可以使用两个单独的事务(例如)。
[1]我会使用以下查询
SELECT db.name, db.log_reuse_wait_desc
FROM sys.databases db
WHERE db.name = DB_NAME()
查看日志大小增加的主要原因。
[2]最可能的原因是[2.1]数据库恢复模型为FULL
/ BULK LOGGED
(与FULL
恢复模型相同,但针对BULK
操作进行了优化)和[2.2]缺少日志备份和/或[2.3]低频日志备份。在这种情况下,我将为备份事务日志创建维护计划,或者[如果存在]我将执行SQL代理作业。
注意:如果答案不够清楚,请发表评论。