SQL SERVER性能调优之三(T-SQL优化)
2012-04-29 14:39
246 查看
SQL SERVER性能调优之三(T-SQL优化)
(一)T-SQL原则
1、不要在OLTP服务器做统计和报表运行,应该讲Group by等类似的统计语句放到单独的服务器运行(即OLTP和OLAP分开),可以采用手工或者MS SQL复制将统计的数据分发到OLAP服务器。
2、T-SQL是否返回了过多的数据?客户端真的需要这么多数据吗?返回过多的数据意味很多的IO操作,频繁的执行类似语句对IO CPU均会产生压力。
3、索引是否符合SAGE。
4、是否将频繁执行语句封装成了储存过程?可以减少网络流量,减少执行计划的编译时间。
5、程序员是否执行大量的游标语句?一切关系型数据库都是擅长集合运算。
6、客户端调用的SP中,是否SET NOCOUNT ON?不关闭该选项的话,服务器会发送消息给客户端,增加了网络流量。
7、事务还能更短吗?过长的事务意味持有锁的时间也越长,事务应该越短越好。
(二)优化示例(不断更新中):
1、UNION和UNION ALL比较
View Code
对应的统计信息,消耗差异明显。
表 'SAGE_test'。扫描计数 1,逻辑读取 2 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'SAGE_test'。扫描计数 1,逻辑读取 270 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
(一)T-SQL原则
1、不要在OLTP服务器做统计和报表运行,应该讲Group by等类似的统计语句放到单独的服务器运行(即OLTP和OLAP分开),可以采用手工或者MS SQL复制将统计的数据分发到OLAP服务器。
2、T-SQL是否返回了过多的数据?客户端真的需要这么多数据吗?返回过多的数据意味很多的IO操作,频繁的执行类似语句对IO CPU均会产生压力。
3、索引是否符合SAGE。
4、是否将频繁执行语句封装成了储存过程?可以减少网络流量,减少执行计划的编译时间。
5、程序员是否执行大量的游标语句?一切关系型数据库都是擅长集合运算。
6、客户端调用的SP中,是否SET NOCOUNT ON?不关闭该选项的话,服务器会发送消息给客户端,增加了网络流量。
7、事务还能更短吗?过长的事务意味持有锁的时间也越长,事务应该越短越好。
(二)优化示例(不断更新中):
1、UNION和UNION ALL比较
View Code
--建立示例表 CREATE TABLE SAGE_test ( ID INT ) --建立索引 CREATE INDEX idx_id ON sage_test(ID) --插入示例数据 DECLARE @i INT SET @i=1 WHILE @i < 100000 BEGIN INSERT INTO SAGE_test SELECT @i SET @i=@i + 1 END SET statistics io ON SELECT ID FROM SAGE_test WHERE ID = 3 SELECT ID FROM SAGE_test WHERE Abs(ID) = 3
对应的统计信息,消耗差异明显。
表 'SAGE_test'。扫描计数 1,逻辑读取 2 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'SAGE_test'。扫描计数 1,逻辑读取 270 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
相关文章推荐
- sql优化之(DMV)& 找出性能差的语句 & sql 2005性能调优
- Sql Server CPU 性能排查及优化的相关 Sql
- Sql Server CPU 性能排查及优化的相关 Sql
- 优化 SQL Server CPU 性能(转:http://www.sqlclub.cn/basic/2009-04/2236.htm)
- Sql2005性能工具(SQL Server Profiler和数据库引擎优化顾问)使用方法详解
- SQL调优(SQL TUNING)之远程支持完成性能大幅优化
- SQL Server 性能优化之——T-SQL NOT IN 和 NOT Exists
- sql优化:SQL Server与Oracle性能对比(插入100w条数据时)
- SQL Server 性能优化之——T-SQL NOT IN 和 NOT Exists
- SQL Server 性能优化之——T-SQL 临时表、表变量、UNION
- SQL Server 性能优化之——T-SQL NOT IN 和 NOT Exists
- SQL Server 性能优化之——T-SQL TVF和标量函数
- 性能调优之SQL优化
- SQL优化(SQL TUNING)之10分钟完毕亿级数据量性能优化(SQL调优)
- SQL Server性能调优之执行计划深度剖析 第一节 浅析SQL执行的过程
- SQL Server性能调优之执行计划深度剖析 第一节 浅析SQL执行的过程
- SQL Server 性能优化之——T-SQL NOT IN 和 NOT Exists
- [转载]:SQL Server性能调优之执行计划深度剖析 第一节 浅析SQL执行的过程
- Sql Server CPU 性能排查及优化的相关 Sql
- SQL调优(SQL TUNING)之远程支持完成性能大幅优化