数据库性能调优(三)

影响数据库性能的主要因素
服务器硬件的因素:
_服务器数量
_内存 cpu 磁盘

cpu:单台双cpu
磁盘:高转速(越高越高,1w以上)
硬盘的插槽支持双通道,内存型号一样.

网络环境:尽可能组建分布式的平台,使用raid
数据库设计
数据查询

服务器硬件及网络的建议
增加服务器的数量,组建分布式平台
增加CPU数量
增加内存容量和频率,打开双通道等
硬盘更换为多块、高速(10000+转)的硬盘
网络选用千兆以上带宽,有可能的话可选用光线
网络线路最好专线专用,避免其他网络数据(如BT)占用

数据库设计原则的建议
规范命名
三少原则(数据表\字段\组合主键)
控制字段引用
库表的重复控制
并发控制(锁)
必要的讨论
数据小组的审核
头文件的处理

数据库设计工作的建议
分类拆分数据量大的表(减少单表记录数)
适当考虑分布式分区
合理的索引设计
数据操作的优化
数据库参数的调整
避免长事务(分解事务,减少负荷,提高效率)
适当超前(考虑未来扩展)
必要的工具

数据库性能调优的原则
尽可能排除资源瓶颈(CPU RAM I/O Network)
尽可能减少数据库的I/O
尽可能使用Index Seek,避免使用Index Scan
减少阻塞 死锁和不恰当的索引
尽可能不用游标
尽可能不用触发器而使用存储过程

数据查询优化的方法
减少数据库访问量和数据传输量
避免使用不兼容的数据类型
避免在where子句中的“=”左侧使用表达式
避免使用!=或<>、IS NULL或IS NOT NULL、IN或NOT IN
避免在索引字段中使用非字符打头的搜索,如’%Abc%’
尽可能使用UNION方案替换OR条件
尽量考虑where及order by子句间的顺序按索引顺序
尽量使用数字型字段
尽量使用>=替换>
合理使用EXISTS和NOT EXISTS
合理使用视图(嵌套视图嵌套越多,性能越差.另外尤其是索引视图尽量避免使用嵌套视图.)
合理算法的使用
必要时强制使用索引
适当考虑物理分开存储
使用合适的工具

SQL Server 2005的几个特性
varchar(MAX)/nvarchar(MAX)/varbinary(MAX),分别替换已有的text、ntext、image
XML类型
计算字段的持久化
索引附加字段
索引视图,可对视图建立索引,提高效率,但是该视图不能有视图引用
2005支持动态指示top的数量
行号,注意最后面再跟order by的情况。ROW_NUMBER / RANK / DENSE_RANK / NTILE
临时视图With(实现递归查询)
分区PARTITION

demo
通过执行计划来查看开销在那些方面

like "2006%" 避免使用like "%2006"方式的

http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-432&locale=en-us#tab3

在 2000中select top @count是不允许的.
select top (@count)在sql 2005中添加括弧即可.

分页查询:
select * from(
select ROW_NUMBER() over(order by Id Desc) as rowid * from News
) tb
where tb.rowid between 10 and 18
)

posted @ 2009-12-21 23:16  风影极光  阅读(448)  评论(0编辑  收藏  举报