/* sqlServer优化与配置*/
--读写快照:适用于读取与写入的比例可能是几十一或者数百
--查看当前已提交读快照状态
--is_read_committed_snapshot_on:0 未启用1 已启用
Select Name,is_read_committed_snapshot_on
From Sys.Databases Where Name='LCWSfis'
Go
--启用已提交读快照
Alter Database LCWSfis Set Read_Committed_Snapshot On
--若当前有其他连接在执行操作,可以指定参数N 秒后回滚其事务
Alter Database LCWSfis Set Read_Committed_Snapshot On
With Rollback After 3
Go
--若当前有其他连接在执行操作,可以指定参数立即回滚其事务
Alter Database LCWSfis Set Read_Committed_Snapshot On
With Rollback IMMEDIATE
Go
--若当前有其他连接在执行操作,可以指定参数中止启用动作
Alter Database LCWSfis Set Read_Committed_Snapshot On
With NO_WAIT
Go
--再确认设定生效
Select Name,is_read_committed_snapshot_on
From Sys.Databases Where Name='LCWSfis'
--打开高级选项
SP_Configure 'show advanced options', 1
Reconfigure
Go
--启用备份默认压缩
--对于纯数据,通常100G数据库以压缩方式生成备份大约30G 左右
SP_Configure 'backup compression default',1
Reconfigure
Go
--cpu 并行使用数
--系统来说,一个系统来说,一个32 核心的系统设置其单个任务最多使用核心甚至核心是比较合理的。
--限制最大并行度,最多使用核心cpu
SP_Configure 'max degree of parallelism',8
Reconfigure
Go
--最大与最小内存设置
--限制最大内存使用量,单位为M,G=92*1024=94208
SP_Configure 'max server memory (MB)',94208
Reconfigure
Go
--设定最小内存使用量,单位为M,G=32*1024=32768
SP_Configure 'min server memory (MB)',32768
Reconfigure
Go
--启用调用操作系统命令或程序
Reconfigure
Go
--WINDOWS 分区设置为NTFS 格式
--禁用服务器限制会话连接:程式一段时间不操作,就会中断报错
--控制面板――本地安全策略――Microsoft网络服务器暂停会话前所需的空闲时间数量设置为
--锁定内存页(如果Server为专门sql专用,不需设置) 与执行卷维护任务
--控制面板――本地安全策略――用户权利分配锁定内存页/执行卷维护任务添加用户组
--设置虚拟内存
--尽量使用存储过程,因为存储过程只产生一次执行计划,而普通查询语句会每次都产生执行计划(即席查询)
--避免在语句中隐式转换(无法使用索引),同样like 后面是%XX 是无法使用索引的
--设置IO分离,将数据文件、临时数据库文件、日记文件分别存放在不通的磁盘驱动器或RAID上
--日记IO的特点是连续写入,磁头读写顺序性
--TempDB 文件
-- 移动到独立磁盘
-- 视情况增加文件到- 8 个,目地减少文件头标志修改而导致的热页争用(并不是文件越多越好,看情况)
Alter Database TempDB
Modify File (Name=TempDev,Filename='D:\TempDB\TempDev.mdf',Size=100MB,FileGrowth=20MB)
--再增长临时文件
Alter Database TempDB
Add File (Name=TempDev2,FileName='D:\TempDB\TempDev2.ndf',FileGrowth=20MB)
GO
Alter Database TempDB
Add File (Name=TempDev3,FileName='D:\TempDB\TempDev3.ndf',FileGrowth=20MB)
GO
Alter Database TempDB
Add File (Name=TempDev4,FileName='D:\TempDB\TempDev4.ndf',FileGrowth=20MB)
GO
--完成后重启sql服务
--利用Profiler 追踪保存至数据表Trctbl,然后分析耗时语句
--跟踪表的TextData 列数据类型为Ntex这不便于字符串操作如LIKE,通常手动将其改为 Varchar(max) :
Alter Table Trc0702 Alter Column TextData Varchar(Max)
--按执行时间倒序
Select TextData,cpu,Reads,Writes,Duration,RowCounts
From Trctbl Order By Duration Desc
--重点关注对表dbo.Product的查询
Select TextData,RowCounts
From Trctbl Where TextData Like '%Product%' Order By Duration Desc
--聚集分析
Select Left(TextData,30) as TextData,Sum(cpu) as cpu,Sum(Reads) as Reads,
Sum(Writes) as Writes,Sum(Duration) as Duration,
Sum(RowCounts) as RowCounts,Count(*) as Cnts
From Trctbl Group By Left(TextData,30) Order By 5 Desc
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。