开启read_committed_snapshot 读快照隔离级别的方法

--修改sqlserver 数据库隔离级别

--开启read_committed_snapshot 读快照隔离级别,推荐值是1

--可以解决sqlserver大多数无脑死锁现象

select name,is_read_committed_snapshot_on from sys.databases where name = 'kingdee_prod'

use master
declare @dbname as sysname
declare @sql varchar(max)

set @dbname='kingdee_prod'

set @sql=''
select @sql=@sql+' kill '+cast(spid as varchar)+';' from master..sysprocesses where dbid=db_id(@dbname);
set @sql=@sql+'alter database '+@dbname+' set read_committed_snapshot on ' ;

exec(@sql);

----------------------------------------------------------------------------------------------------------------------

--最大内物理内存-4GB== sqlserver 应该给的最大内存

--锁定内存页(组策略),用户为启动SQL Server的用户
路径:Windows设置-安全设置-本地策略-用户权限分配-锁定内存页

--调整最大并行度,建议修改为1,也可在数据库直接执行,修改方法如下:
sp_configure 'show advanced options', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
sp_configure 'max degree of parallelism', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO

--调整针对即席工作负荷进行优化=True,也可在数据库直接执行,修改方法如下:
sp_configure 'show advanced options', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
sp_configure 'Optimize for Ad hoc Workloads', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO

 

--重建索引   查看数据库表索引碎片超过30%的表的数量,如果该值大于100,说明索引碎片较高,需要管理员根据情况进行处理。
--在对应的业务数据库全表执行下列的语句,排除临时表和Z表:
declare @sql varchar(max)
set @sql='' select @sql=@sql+'dbcc dbreindex(['+name+']);'+char(13)+char(10) from sys.tables where name NOT LIKE 'TMP%' AND NAME NOT LIKE 'Z[_]%'
exec(@sql)
注意:
打补丁后,特别是跨度较大的补丁,建议手工重建一次;
请在业务空闲期执行重建索引的语句或任务;

--临时表数量统计
SELECT count(T.NAME) AS COUNT_DEL
FROM
SYS.TABLES T
WHERE
EXISTS (SELECT 1
FROM
T_BAS_TEMPORARYTABLENAME
WHERE
FTABLENAME = T.NAME
AND (FCREATEDATE <= getdate() - 1
OR FPROCESSTYPE = 1))


-- 查看系统所有临时表占用的总空间
select cast(sum(a.total_pages)*8/1024 as varchar)+' MB' total
from sys.partitions p join sys.allocation_units a on p.partition_id = a.container_id
join sys.tables it on p.object_id = it.object_id
where it.name like 'TMP%'

-- 查询系统中每个临时表占用的空间大小统计
select it.name, cast(sum(a.total_pages)*8 as varchar)+'KB' total
from sys.partitions p join sys.allocation_units a on p.partition_id = a.container_id
join sys.tables it on p.object_id = it.object_id
where it.name like 'tm%'
group by it.name
order by sum(a.total_pages)*8 desc

posted @ 2023-09-14 20:02  walkersss  阅读(314)  评论(0编辑  收藏  举报