影响数据库性能的主要因素
    服务器硬件因素
        -服务器数量
        -内存,CPU,磁盘
    网络环境
    数据库设计
    数据查询
服务器硬件及网络的建议
    增加服务器的数量,组件分布式平台
    增加cpu数量
    增加内存容量和频率,打开双通道等
    硬盘更换为多块高速硬盘
    网络选用千兆以上带宽,有可能的话可选用光线
    网络线路最好专线专用,避免其他网络数据(BT)占用
数据库设计原则的建议
    规范命名
    三少原则(数据表,字段,组合主键)
    控制字段引用
    库表的重复控制
    并发控制
    必要的讨论
    数据小组的审核
    头文件的处理
数据库设计工作的建议
    分类拆分数据量大的表(减少单表记录数)
    适当考虑分布式分区
    合理的索引设计
    数据操作的优化
    数据库参数的调整
    避免长事务(分解事务,减少负荷,提高效率)
    适当超前(考虑未来扩展)
    必要的工具
数据库性能调优的原则
    尽可能排除资源瓶颈(cpu,ram,i/o,network)
    尽可能减少数据库的i/o
    尽可能使用index seek,避免使用index scan
    减少阻塞,死锁和不恰当的索引
    尽可能不用游标
    尽可能不用触发器而使用存储过程
数据查询优化的方法
    减少数据库访问量和数据传输量
    避免使用不兼容的数据类型
    避免在where子句中的'='左侧使用表达式
    避免使用!=或<>,IS NULL或IS NOT NULL,IN或NOT IN(这些没法让表示用索引,只能扫描表)
    避免在索引字段中使用非字符打头的搜索,如'%Abc%'
    尽可能使用UNION方案替换或条件(也是影响优化查询)
    尽量考虑where及order by子句间的顺序按索引顺序
    尽量使用数字型字段
    尽量使用>=替换>
    合理使用exists和not exists(if exists(select * from News where Id=111) begin select

12 end)
    合理使用视图(建议不要做视图嵌套)
    合理算法的使用
    必要时强制使用索引
    适当考虑物理分开存储
    使用适合的工具
    执行计划(如果大多数是索引查找,证明优化得很好)
    优化一般使用SQL Server Profiler(一般只看Completed和Batch Completed的事件)
    主要看cpu,duration,reads,writes

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

(select ROW_NUMBER() over(order by Id desc) as rowid,* from News) where rowid>100 )
    临时视图with
    分区PARTITION

小结
    使用合适的方法,做合适的事儿
    熟能生巧
    凡事从多角度考虑一下

posted on 2010-01-16 21:16  IT Person  阅读(199)  评论(0编辑  收藏  举报