数据库性能调优(三)

影响数据库性能的主要因素
服务器硬件的因素:
_服务器数量
_内存 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
)

转载于:https://www.cnblogs.com/mingle/archive/2009/12/21/mssql-performancetuning3.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值