表具有主键聚集索引。死锁在上表中频繁出现,导致数据丢失。在插入行或更新行时,添加哪个索引会更好,哪个性能更好?
表: ID Int标识,EntityID Int,EntityName nvarchar(200),MeasuringID Int,Cratedon datetime
主键集群: ID
每次向表中插入记录的频率都非常高。
**在存储的Insert和update过程中是否有要放置的隔离级别或锁?
发布于 2013-10-25 16:53:19
这可能是一个非常复杂的问题,尤其是与索引性能相关的问题,但在咨询顾问之前,请先询问您的SQL服务器,不要盲目地创建它们,它们只是给您一个提示。还要记住你的填充因子,这可能会有利地影响你的插入性能。需要2008及更高版本,并将为离线重建生成代码。影响超过1k表示需要注意
USE <YourDBName>
SELECT (avg_total_user_cost * avg_user_impact/100.0) * (user_scans +user_seeks ) Impact
, [Table] = [statement]
, [CreateIndexStatement] = 'CREATE NONCLUSTERED INDEX IX_' + sys.objects.name COLLATE DATABASE_DEFAULT + '_'
+ REPLACE(REPLACE(REPLACE(ISNULL(mid.equality_columns,'')+ISNULL(mid.inequality_columns,''), '[', ''), ']',''), ', ','_') + ' ON ' + [statement]
+ REPLACE(' ( ' + IsNull(mid.equality_columns, '')
+ CASE WHEN mid.inequality_columns IS NULL THEN '' ELSE CASE WHEN mid.equality_columns IS NULL THEN '' ELSE ',' END + mid.inequality_columns END + ' ASC ) ' ,',',' ASC ,') + CASE WHEN mid.included_columns IS NULL THEN '' ELSE 'INCLUDE (' + mid.included_columns + ')' END
+ 'WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = ON, SORT_IN_TEMPDB = ON, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON,FILLFACTOR = 90) ON [PRIMARY];'
, mid.equality_columns
, mid.inequality_columns
, mid.included_columns
FROM sys.dm_db_missing_index_group_stats AS migs
INNER JOIN sys.dm_db_missing_index_groups AS mig ON migs.group_handle = mig.index_group_handle
INNER JOIN sys.dm_db_missing_index_details AS mid ON mig.index_handle = mid.index_handle
INNER JOIN sys.objects WITH (nolock) ON mid.OBJECT_ID = sys.objects.OBJECT_ID
WHERE (migs.group_handle IN (SELECT TOP (500) group_handle FROM sys.dm_db_missing_index_group_stats WITH (nolock) ORDER BY (avg_total_user_cost * avg_user_impact) * (user_seeks + user_scans) DESC))
AND OBJECTPROPERTY(sys.objects.OBJECT_ID, 'isusertable') = 1
ORDER BY Impact DESC, [CreateIndexStatement] DESC ;https://stackoverflow.com/questions/19584795
复制相似问题