影响数据库性能的主要因素
服务器硬件因素
-服务器数量
-内存,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
小结
使用合适的方法,做合适的事儿
熟能生巧
凡事从多角度考虑一下
转载于:https://www.cnblogs.com/tongzhiyong/archive/2010/01/16/1649731.html