2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

Brent Ozar 谈如何提高 SQL Server 的生产力

  • 2013-03-04
  • 本文字数:916 字

    阅读完需:约 3 分钟

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 Ozar on Improving Productivity with SQL Server


感谢臧秀涛对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2013-03-04 06:571546
用户头像

发布了 428 篇内容, 共 189.6 次阅读, 收获喜欢 39 次。

关注

评论

发布
暂无评论
发现更多内容

前端基础四之JavaScriptDOM与事件

ベ布小禅

8月日更

抖音快手短视频SEO系统开发

web技术分享| 实现WebRTC多个对等连接

anyRTC开发者

音视频 WebRTC JavaScrip web技术分享

华为海外女科学家为您揭秘:GaussDB(for MySQL)云栈垂直集成的力量有多大?

华为云开发者联盟

数据库 云数据库 GaussDB(for MySQL) 云栈 事务数据库服务

接口测试的时候如何一键获取cookie,并在其他接口引用

与风逐梦

软件测试 接口测试 Cookie

抖音快手短视频询盘系统开发

抖音快手短视频SEO营销系统软件开发价格

Android SDK 启动退出方案演进

神策技术社区

大前端 后端 代码 数据采集

Swift 实现聚光灯动效

fuyoufang

swift 8月日更

【LeetCode】反转字符串中的元音字母Java题解

Albert

算法 LeetCode 8月日更

一文带你了解NB-IoT标准演进与产业发展

华为云开发者联盟

物联网 IoT NB-IoT

抖音快手短视频平台获客系统开发内容

Go 语言, 一文彻底搞懂 map 实现原理

微客鸟窝

Go 语言 8月日更

Go语言那些事儿之浅谈协程并发竞争资源问题

Regan Yue

Go 语言 8月日更

神策数据微信小程序 SDK 架构解析

神策技术社区

大前端 后端 数据 代码 数据采集

李欲晓:加强关键信息基础设施安全保护的法治基石

郑州埃文科技

用手机写代码:基于Serverless的在线编程能力探索

刘宇

基于Serverless架构的社区文章管理小工具

刘宇

接口管理工具APIPOST的预/后执行脚本里,常见的响应参数变量和常用方法集合——apipost

Proud lion

大前端 后端 Postman 开发工具 接口文档

netty系列之:内置的Frame detection

程序那些事

Java Netty 程序那些事

JNI 提示

Changing Lin

8月日更

缓存 | Redis 缓存避坑指南

RadonDB

数据库 redis

接口文档生成工具 一键生成文档 ApiPost

CodeNongXiaoW

项目管理 大前端 测试 后端 接口管理工具

你真的了解二叉树吗?(树形结构基础篇)

有道技术团队

技术 二叉树 网易

测试开发之系统篇-Docker常用操作

禅道项目管理

Docker 容器 测试开发

SpringApplication启动run了啥

Rubble

8月日更

fil价格走势分析?fil为什么会大涨?

区块链 分布式存储 IPFS fil价格走势 fil大涨

从源码角度解析线程池中顶层接口和抽象类

华为云开发者联盟

Java 线程 软件开发 高并发 线程池

fil为什么会暴涨?fil暴涨还会持续吗?

区块链 分布式存储 IPFS fil币价行情 fil币会大涨吗?

LeetCode题解:27. 移除元素,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

抖音快手短视频营销软件系统开发案例

Brent Ozar谈如何提高SQL Server的生产力_语言 & 开发_Anand Narayanaswamy_InfoQ精选文章