Brent Ozar谈如何提高SQL Server的生产力
2013-03-05 23:54
288 查看
SQL Server顾问Brent Ozar最近发表了一篇文章,谈到了每个SQL Server开发者在他们日常的编程任务中应该遵循的七种技术。按照Brent的说法,开发者应该尽量避免使用ORDER BY语句,他还建议开发者将所有查询结果放入应用程序内存中再进行排序。
如果数据库要执行数据处理、排序、加载及缓存等任务,理想情况下每项任务应该使用一个独立的数据库。Brent建议这些数据库使用简单恢复模式,而且每天进行一次备份。
他同时建议开发者应有效地利用动态管理视图(DMV), 还建议对于应用程序中的不同场景,如数据读写、5至15分钟前的老数据以及昨天之前的老数据,应该使用3种不同的连接字符串来建立连接。按照Brent的 说法,第一种连接字符串的使用场景不易伸缩,因为我们在SQL Server中并没有多少办法将负载横向扩展到处理写入的多台服务器上。
“对应用来说,已提交读快照隔离(Read-Committed Snapshot Isolation)是比With(Nolock)更好的选择,因为少了很多阻塞的麻烦,同时提供了一致的数据”,Brent说道。
按照Brent所说,你不应该再去参考老版本的书和在线文档,因为它们不会定期更新。“当看到某个听着不错的建议时,我喜欢采取‘质疑Phil博士’(译注:Dr.Phil是美国的一档电视秀,一些观众对主持人的生活观念持有不同意见)这样的策略”,Brent说道。
最后Brent还建议,如果想重用代码,那么最好用存储过程和视图代替函数。他认为函数对数据库层的性能有很大影响。
不过,有些开发者并不同意Brent的建议。
Tyler Burd说道:
我不同意无节制地采用第2条意见(即“避免ORDER BY,而是在应用程序中排序”)。
Brent对Tyler的评论回应道:
为什么不把整个数据集加载到应用程序中并缓存下来呢?
还有个别开发者留言,反对Brent所说的避免函数而使用视图和存储过程的观点。
你是支持还是反对Brent的技巧和建议呢?请在此留言,InfoQ保证将其发给Brent进行处理和回复如何?
如果数据库要执行数据处理、排序、加载及缓存等任务,理想情况下每项任务应该使用一个独立的数据库。Brent建议这些数据库使用简单恢复模式,而且每天进行一次备份。
他同时建议开发者应有效地利用动态管理视图(DMV), 还建议对于应用程序中的不同场景,如数据读写、5至15分钟前的老数据以及昨天之前的老数据,应该使用3种不同的连接字符串来建立连接。按照Brent的 说法,第一种连接字符串的使用场景不易伸缩,因为我们在SQL Server中并没有多少办法将负载横向扩展到处理写入的多台服务器上。
“对应用来说,已提交读快照隔离(Read-Committed Snapshot Isolation)是比With(Nolock)更好的选择,因为少了很多阻塞的麻烦,同时提供了一致的数据”,Brent说道。
按照Brent所说,你不应该再去参考老版本的书和在线文档,因为它们不会定期更新。“当看到某个听着不错的建议时,我喜欢采取‘质疑Phil博士’(译注:Dr.Phil是美国的一档电视秀,一些观众对主持人的生活观念持有不同意见)这样的策略”,Brent说道。
最后Brent还建议,如果想重用代码,那么最好用存储过程和视图代替函数。他认为函数对数据库层的性能有很大影响。
不过,有些开发者并不同意Brent的建议。
Tyler Burd说道:
我不同意无节制地采用第2条意见(即“避免ORDER BY,而是在应用程序中排序”)。
Brent对Tyler的评论回应道:
为什么不把整个数据集加载到应用程序中并缓存下来呢?
还有个别开发者留言,反对Brent所说的避免函数而使用视图和存储过程的观点。
你是支持还是反对Brent的技巧和建议呢?请在此留言,InfoQ保证将其发给Brent进行处理和回复如何?
相关文章推荐
- 如何提高程序员10倍的生产力
- 教你如何提高SQL Server 2000 的性能?
- SQL Server如何提高数据库备份的速度
- 如何提高SQL Server的性能
- 如何提高生产力(四)、兼职为什么很难操作-
- 如何提高程序员10倍的生产力
- 如何提高SQL SERVER的性能
- 如何提高SQL SERVER的性能
- 如何提高程序员10倍的生产力
- 如何使用四个语句来提高 SQL Server 的伸缩性
- 如何利用索引提高 SQL Server 数据处理的效率
- 如何提高SQL Server的安全性
- 如何提高远程访问sql server的速度
- SQL Server如何提高数据库备份的速度
- 如何提高生产力(四)、兼职为什么很难操作?
- SQL SERVER 如何提高备份的速度
- 如何提高生产力
- 如何提高生产力(三)、软件服务的价值
- 如何提高SQL Server的安全性?