加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLServer优化与配置

发布时间:2020-12-12 12:57:12 所属栏目:MsSql教程 来源:网络整理
导读:/* SQLServer 优化与配置 */ ? -- 读写快照 : 适用于读取与写入的比例可能是几十一或者数百 -- 查看当前已提交读快照状态 --is_read_committed_snapshot_on : 0 未启用 1 已启用 Select Name , is_read_committed_snapshot_on From Sys . Databases Where N

/* SQLServer优化与配置*/

?

--读写快照:适用于读取与写入的比例可能是几十一或者数百

--查看当前已提交读快照状态

--is_read_committed_snapshot_on0 未启用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

?

--最大与最小内存设置

--限制最大内存使用量,单位为MG=92*1024=94208

SP_Configure 'max server memory (MB)',94208

Reconfigure

Go

--设定最小内存使用量,单位为MG=32*1024=32768

SP_Configure 'min server memory (MB)',32768

Reconfigure

Go

?

--启用调用操作系统命令或程序

SP_Configure 'xp_cmdshell',1

Reconfigure

Go

?

--WINDOWS 分区设置为NTFS 格式

?

--禁用服务器限制会话连接:程式一段时间不操作,就会中断报错

--控制面板――本地安全策略――Microsoft网络服务器暂停会话前所需的空闲时间数量设置为

?

--锁定内存页(如果Server为专门SQL专用,不需设置) 与执行卷维护任务

--控制面板――本地安全策略――用户权利分配锁定内存页/执行卷维护任务添加用户组

?

--设置虚拟内存

?

--尽量使用存储过程,因为存储过程只产生一次执行计划,而普通查询语句会每次都产生执行计划(即席查询)

--避免在语句中隐式转换(无法使用索引),同样like 后面是%XX 是无法使用索引的

?

--设置IO分离,将数据文件、临时数据库文件、日记文件分别存放在不通的磁盘驱动器或RAID

--日记IO的特点是连续写入,磁头读写顺序性

?

--TempDB 文件

-- 移动到独立磁盘

-- 视情况增加文件到- 8 个,目地减少文件头标志修改而导致的热页争用(并不是文件越多越好,看情况)

--先修改临时文件大小

Alter Database TempDB

Modify File (Name=TempDev,Filename='D:TempDBTempDev.mdf',Size=100MB,FileGrowth=20MB)

--再增长临时文件

Alter Database TempDB

Add File (Name=TempDev2,FileName='D:TempDBTempDev2.ndf',FileGrowth=20MB)

GO

Alter Database TempDB

Add File (Name=TempDev3,FileName='D:TempDBTempDev3.ndf',FileGrowth=20MB)

GO

Alter Database TempDB

Add File (Name=TempDev4,FileName='D:TempDBTempDev4.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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读