SQL Server 高级技术(四)—— 性能优化

本文探讨了数据库优化策略,包括日期判断的性能对比、数据量控制、索引设计以及表的分割。同时,提出了代码优化建议,如避免不必要的列查询和使用UNIONALL。还提到了服务器层面的优化,如存储位置、内存分配和I/O监测。最后,强调了监控资源使用情况和SQLServer的性能指标以确保高效运行。
摘要由CSDN通过智能技术生成

代码优化建议:

1、日期判断:

		WHERE dt>= '20060211' AND dt<'20060212' 
		--性能优于 
		WHERE CONVERT(VARCHAR(8),dt,112) ='20060211'

2、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)
3、去除查询中不必要的行和列
4、纵向、横向分割表,减少表的尺寸(sp_spaceuse)
5、在使用UNION 语句时,当明确数据不会重复时,使用 UNION ALL 代替 UNION。

数据库优化建议:

1、数据文件不要存放在包含操作系统文件的磁盘驱动器中;
2、将事务日志文件与数据文件分别存放不同驱动器上,增加读取速度;
3、建议将 Tempdb 数据库放在一个独立驱动器上(Raid 1+0 或 Raid 5),并将数据文件拆分成与CPU个数相同以提高并发;
4、

索引优化建议:

1、经常搜索的列、主键列、外键列、经常进行范围搜索、排序和列上创建索引,WHERE 子句中使用的列创建索引
2、很少查询使用的列、列的值变化不大的列、定义为text、image、bit等类型的列、经常性修改的列不做索引
3、不要对有限的几个值的字段建单一索引如性别字段。

1、分析产品业务数据的增长量
2、了解产品业务操作类型,以更新为主还是查询为主,业务高峰期,确定磁盘方案、数据文件、日志文件、系统库文件配置
64位CPU、RAID5
3、适当增加约束,默认值约束,Check约束,唯一约束
4、用于关联但是修改少的字段可冗余
5、UPDATE 语句更新条件要详细,减少更新锁(U锁)或排它锁(X锁)锁定的数据

SQL Server 选择RAID-10(数据镜像分块)性能与RAID-01(数据分块镜像)性能相当,但容错性更好,RAID5需要使用奇偶校验。

服务器级别优化

1、检测 I/O吞吐量小,判断是否是I/O形成了瓶颈效应。
2、内存检测
3、网络带宽检测

问题检测:

SQL Server CPU长期处于繁忙并且IO 偏高,应检测内存是否到达瓶颈。
SQL Server在一般情况下占用CPU在30%左右表示服务器比较空闲,到达50%~60%表示服务器比较繁忙,到达80%表示服务器非常繁忙。
在数据库约束中唯一约束有助于筛选查询,应该至少留一个唯一索引。
对于SQL Server排序操作,创建非聚集索引(ProductId,Qty)比Qty单纯排序大大提高性能。这是由于Scan操作变成了Seek Index操作。
一个应用程序写完后,应该坚持器IO、CPU、内存的使用情况。
32位SQL Server内存瓶颈要注意检查AWE等配置项信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值