设为首页 收藏本站
查看: 708|回复: 0

[经验分享] SQL Server 性能优化中的几个见解

[复制链接]

尚未签到

发表于 2018-10-12 07:16:11 | 显示全部楼层 |阅读模式
  在做性能优化项目之前必须找到系统的瓶颈在哪里,定位了问题所在才能解决问题。上面这幅图中列出了影响系统性能的一些因素。在我多年与SQL Server 打交道的经历中,导致系统性能低下最主要的原因是:l  应用逻辑设计不合理l  查询写得不好l  表设计不合理l  索引设计不合理在做二、二、性能优化的流程:性能低下是一种慢性病,比较广泛发生在SQL Server 服务器群中,不具备传染性,没有可能自愈,通常病情会愈加严重。建议早发现早治疗,一般服药两个疗程可以治愈,痊愈后定期检查,平时注意控制……

  呵呵,开个玩笑。性能优化项目大概类似如此,经过收集→分析→设计→实施,最终解决问题。1.    收集阶段使用性能监视器、SQL Server Profiler和一些脚本等,收集性能数据。收集至少24小时甚至更长的时间,可以在月结,报表日等业务高峰时间段额外收集。收集期间会有少许的性能影响。这里要说一下的是,Profiler也就是事件探查器是一个非常强大的收集工具,除了收集T-SQL的执行情况之外,还可以收集死锁和阻塞等。收集到的结果,可以导入性能监视器的数据,组合起来分析,观察在某个参数在峰值的时候数据库干什么。
2.    分析问题从收集的性能数据中进行分析,例如:l  用户在什么时间或者做某个操作的时候,会觉得慢l  硬件中哪个组件是性能瓶颈l  哪些表数据过多l  哪些索引的碎片很严重l  哪些数据库或者服务器的配置不合理l  哪些查询最慢而且执行次数最多,返回的记录数非常多,磁盘的读写非常大l  发生了哪些阻塞和死锁l  ……我们可以将数据整理成看起来一目了然的Excel表格,例如下面这张分析查询的执行时间和次数的表格,可以让我们找到需要优先解决的问题:执行次数很多,平均执行时间很长的语句。
http://img1.51cto.com/album/903896/125380622402.jpg3.    设计优化方案在分析了问题之后,我们需要设计优化方案。有些优化方案对应用和业务没有影响,有些数据库的优化方案可能影响到应用程序,需要开发人员配合。调整的方案可能是:l  调整表的设计:归档数据,分区,添加冗余键等l  索引的调整:去掉不合理的索引,创建必要的索引,创建自动的索引维护计划l  调整配置:调整数据库和操作系统的配置l  调整应用程序:调整不合理的查询,不合理的业务逻辑设计,访问数据的方式,控制访问数据量等等l  ……              各种优化方法和性能影响因素相关性如下:
http://img1.51cto.com/album/903896/125380760127.JPG设计出来的实施方案,需要经过测试和论证。以确认这种修改是否有效,和减少调整所带来的负面影响。4.    实施在系统空闲时间,将调整索引、应用程序、数据库设计等方面的优化方案实施到生产系统上。并记录下来,最后形成一个实施报告。我不认为一次性能解决所有的问题,通常要需要经过两个疗程之后,才能有所好转。以后间隔一个时间进行一次检查,解决我们遗漏的一些问题。三、三、DBA 该做些什么?          在一次管理专家课程开始之前,我让每位同学谈一谈各自对这个角色的看法,主要从两个方面:一是数据库的管理最重要的是什么,二是DBA平时主要的工作是什么?        对于第一点,数据库管理中最重要的是什么?所有的同学的看法几乎一致,可以概括为三个字——稳定性。详细一点就是:数据不要丢失,数据库服务器不能宕机。基本也是如此,只是再加上“安全性”,因为数据安全不只是数据不会损坏,还有信息的机密性。       对于第二点,DBA平时主要的工作是什么?很多同学的看法不同,有人说是管理数据,有人说设计数据库,有人说备份和恢复,有人说建立群集等等高可用性方案,还有人说是做数据的ETL。我的看法有些不同。       设计数据库是谁做的?通常是数据库开发人员或者软件供应商做的;数据管理太过初级,增删改查,这样的数据操作由应用程序来实现了;备份和恢复、数据的ETL只要做一次,设计好作业以后由数据库定期调度就可以了;群集、数据库镜像等也只要做一次就可以了。上面的这些管理任务,DBA必须掌握,掌握了之后,做成自动化的管理计划,就可以让自己解放出来了。http://img1.51cto.com/album/903896/125380623732.jpg DBA     需要定期检查服务器的日志,发现有错误日志,就进行排错;定期检查数据库文件的空间,发现空间不够了,手工扩展一下空间;定期检查一下备份、ETL、索引维护、报表处理、数据归档、复制等自动调度作业是否运行正常等之外,还有一项最重要的工作,就是监视和调整数据库服务器的性能。要不然同学们去找工作的时候,就得先问问对方,贵公司系统有没有性能问题,如果有的话那我就不去了,因为我也做不了。性能问题虽然不是每个企业都会遇到,但是遇到了是让人非常头痛的。一个合格的DBA来说,至少要具有能发现性能问题和找到解决途径的能力。啰啰嗦嗦,也有两千字了。好了,到这里了,就到这里了。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-620505-1-1.html 上篇帖子: SQL Server2005数据同步 下篇帖子: Navicat连接SQL Server报08001的错误
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表