[名人堂] ITPUB名人堂:人生在勤 不索何获 yxyup数据库性能调优技术分享

2021-12-13 00:00:00 数据库 优化 系统 性能 主菜


本期我们邀请采访的是拥有多年系统运维经验的数据库工程师杨向勇,Oracle数据库管理版版主,ID:yxyup。现主要负责网站后端系统架构规划设计、系统维护管理、性能优化等工作。擅长于Oracle技术、需求分析、系统分析与设计。长期负责后台数据库(OLTP)以及数据仓库(OLAP)的维护和开发支持 ,实战经验丰富,精通数据库管理、备份与恢复、容灾等高可用性设计与规划;精通高可用环境下的数据库优化与维护,特别是高并发、高压力访问下的OLTP数据库环境的优化与维护。具备的数据库构架设计能力与创新能力。

arron刘:
各位PUBer大家好,本期的名人堂采访人物是来自某知名网站的系统架构师杨向勇(ID:yxyup)先生。yxyup您好,请简单的介绍一下自己,以及您的工作经验。
yxyup:
谢谢arron.
说起我的工作经历,基本上用一句话就可以说清楚了,呵呵。之前在一家游戏公司,后来到现在这家公司,在这也有5年多了。
在家游戏公司时主要负责玩家信息、冲值计费等系统后端的Oracle数据库维护、管理、性能调整等工作。刚开始对Oracle RDBMS、OS、小型机、存储都不太懂,但机会很机遇不错,可以接触到很多再加起带我的师傅人也很nice技术也很good。在这家公司几年不仅学习了一些技能、也逐步意识到规范操作的重要性,这点对我后来的工作帮助非常大。现在想想真是受益匪浅。后来到了现在这家公司,前两年还是主要负责数据库系统,现在主要负责系统运维管理(包括DB、系统、网络、监控、安全)、后端系统架构设计一些工作。

arron刘:
现在数据库使用Cache的地方很多,那么您能不能给我讲讲如何利用Cache机制提高数据库访问速度、如何性能调优?
yxyup:
现在用到cache地方随处可见,对于一个基于数据库的应用系统来说,cache为王一点都不假。一套架构合理的应用系统从前端到后台每个重要的环节都有自己的cache,例如网站应用系统,从开始发起请求的IE浏览器到中间层,再到数据终存放的存储都有自己的cache。cache虽然是多样的,但它们的终目标是一致的,都是为了提高访问数据的效率,提升用户的体验。
至于如何利用cache,我个人认为一是要合理使用cache将热点数据缓存来,二是要根据应用设计出合理有效的缓存数据过期策略,三是要防止cache系统雪崩后带来的影响。

arron刘:
我们知道Web I/O也是一个优化很重要的方面,有没有需要特别注意的或是有哪些好的解决方案?
yxyup:
是的。大多的数据库应用系统瓶颈基本上都是在IO上。在IO方面一般会格外注意,一般采取的策略是分散访问热点,分离开读和写。比如,在数据库层上一般会采取将少量的读和写路由到一套库上,将其余的读操作会路由到另一套库上,用这种分流的方式来分散IO。Oracle有Dataguard(特别是Oracle 11g),Mysql有master-salve,sql server有复制。另外,文件级的IO也是不容忽略的,特别是在互联网行业。文件小而多,像电商网站查看一件商品详情时会打开很多小文件,这样当用户并发量在时,访问文件很快就会成为瓶颈。不过对于这种情况目前也都有比较成熟的解决方案了,比如分布式文件系统现在开源的有很多,都可以根据自己应用特点来选择合适的来使用。

arron刘:
在应用调优这一块是如何做的?如果有问题,是你们及时反馈给开发团队让他们去调优,还是他们会自己去找问题再反馈给你们?
yxyup:
这个不是的,要看情况,有时因人而异,有时因问题而异。这么说吧,一个相对经验相对丰富的DBA,做事态度又比较积极同时又比较喜欢做事。一般遇上性能问题都会找出问题并提出优化建议,甚至拿出详细具体的解决方案。而同样的问题如是一位相对工作经历少些的DBA,也许只能查找出问题所在,没有办法给出优化建议,所以也只有将问题反馈给开发团队请他们来优化了。不过在我们目前的团队中还是要求找出问题并拿出解决方案的,对于上面的第二种情况,我们会要求这部分同事在和开发同事沟通前,先内部沟通解决出方案。

arron刘:
请给读者简单分享一下在性能调优方面的一些佳实践,包括特别需要注意的地方。
yxyup:
关于数据库性能优化调整技能这方面的话题之前讨论很多了,很多前辈专家都讲了很多丰富经验,网上这方面的文章也随地可见,我就不再熬述了。
今天就分享一个从应用业务角度分析系统的案例吧。某个系统在进入系统主菜单的时候,展示了一些复杂的实时统计分析数据,而这个统计分析数据只有很少数的人会真正关心,由于这个系统有几百万用户在使用,而主菜单是进入其他每个模块的必经之路,因此系统运行一段时间后,就出现了CPU 方面的瓶颈。为了解决这个问题,想尽了一切方法对SQL语句进行优化,但是收效甚微。后来经过分析应用后提出了一个方案,重新修改了主菜单的界面,缺省情况下不显示实时统计数据,而只是提供一个显示实时统计数据结果的链接。而对于需要每次进入主菜单都显示实时统计结果的用户,只需要在自己的帐户设置中设置好该选项就可以了。主菜单修改后,使用实时统计的用户只有1%左右,CPU 的瓶颈问题也就迎刃而解了。这本是一个在业务需求分析阶段就应该避免的问题,后来搞到了系统出现瓶颈后被动地来优化调整,我想这就是一个DBA应该注意的地方之一吧,谢谢。

arron刘:谢谢yxyup给我们带来的精彩的经验分享,大家要是有什么问题的话可以在下面留帖提问。

嘉宾介绍:

姓名:杨向勇
社区ID:yxyup
个人简介:ITPUB社区版主。现任职知名网络招聘公司系统运维负责人,Itpub.net Oracle数据库管理版版主(网名yxyup).7+年的工作经历,现主要负责网站后端系统架构规划设计、系统维护管理、性能优化等工作。


相关文章