|
为了在有限的时间解决问题,甲方IT部门的老大亲自挂帅,组织了一支全球性的技术团队,成员包括甲方自己的IT人员,软件供应商,系统集成商,专业数据库服务商,专业压力测试商等等,人员更加是五花八门,很跨亚欧美澳各大洲,技术人员,业务人员,管理人员都有。每天的工作几乎就是不停的开会,英语好的,不好的,懂技术的,不懂技术的都啪啦啪啦的上来讲一堆,由于人数众多,且彼此不熟悉,效率可想而知。
DBA面对的不仅仅是数据库。从上例看技术人员和项目管理人员角色非常完备。首先DBA要找出能帮助自己的人。我个人喜欢找出以下人员合作。(1)项目经理,他帮助你跟进其他人进度和获取你所需要人员和资源。 (2) 服务器管理人员,帮助你了解虚拟层和SAN层面的架构,排查IO瓶颈。是否虚拟层配置正确? (3)网络管理人员,帮助你大致了解网络每日的吞吐量,是否有其他大型应用同时占用网络资源,数据是否可以在网络上缓存?(4)软件供应商,询问类似状况是否发生在其他的客户身上?
目前的硬件,架构的基础上,并发性能已经最大化了,不能进一步提升
这个是真的吗?我们公司用的是VM,可以很快的提升CPU 和 Memory的大小。作为最快的解决方案。我会优先将发生问题的性能测试作为Baseline, 然后要求服务器管理人员将vMemory, vCPU全部增加两倍,并且将虚拟cpu, memory全部lock,不允许共享。再去看性能提高了多少。这么做能快速排查内存和cpu瓶颈。遇到过真实案例,VM memory 应为VM host 物理内存不够,每个VM client被要求balloon memory, 而SQL Buffer Pool特性是占用了就不放,这造成VM host从客户端的操作系统回收memory, 操作系统不开心了,SQL也别想跑的快。
你的硬件是否真的配合了SQL? 我这里不谈物理机,因为已经不是趋势了。要知道企业级的Server , Virutal Host, SAN,Network 的设计不是单单针对SQL的。DBA所能做的是,努力告诉服务器管理人员,这样配置更有利于SQL。什么事情都是有利弊的。我们的一个案例是,SAN 的switch端口是有限的,同一时间的吞吐量太大,造成IO 慢。 另外的案例是VM 虚拟网卡版本太低,造成cluter disk 偶发的吊线。 你用了SAN却再SQL上设置了auto grow, auto shrink ,造成大量磁盘碎片。 你部署了VM SQL,确不知到SQL文件放在了哪个VM Pool里,这个VM Host 怎么分配了LUN 给SQL 这些不知情,都可能造成DBA的误判。存储和服务器管理人员是没有义务告诉你这些的。他们的目标和DBA 不一样。他们的目标是努力共享一切物理资源,少买硬件。而DBA的目标是努力抓一切物理资源不放,被SQL独占。所以遇到问题多和他们交流,不要去不明就里就说什么VM架构或存储架构不好。它们的设计不是针对SQL的。
你的网络缓存了吗。我遇到过的一个案例是,大型的内容发布,造成了SQL的高访问,十分缓慢。提出的解决方案就是在网络层面缓存内容。应为几千个用户都访问基本一致的内容。没有必要再次访问数据库了。还遇到一个其他的大型第三方应用在白天定期的复制数据,造成网络缓慢,影响其他应用。
软件供应商,系统集成商
这里我要说一下DBA偏见。不要去责怪什么软件开发糟糕。作为一个从事过JAVA开发转DBA的人,我深有感触地是,软件开发是讲Scope的。当初说好针对同时在线300人的应用,你现在变成3000人,不在当初的scope里。这就需要再设计,再开发。那可是钱啊。再想想SQL都要更新版本打补丁,何况应用软件呢,总会有BUG的。
作为DBA,我常和第三方软件供应商打交道。遇到性能问题我会第一时间联系他们,报告问题。看看是不是他们知道类似的案例,有没有解决方案。有时候你会无奈的接受一个回答:目前版本不能解决,耐性等待下个结果。有时候,你通过exec plan 发现missing index, overhead index 或者 不适合的server side trigger ,说不定他们会帮你解决。 总结第三方软件供应商的最大作用是让DBA了解应用数据的特性。例如,我们一个大型应用,部署了7台distributed SQL. 这个软件挂着20多个数据库,分散在这些SQL Server 上。你把自己想成application DBA, 软件供应商能让你很好的理解这些数据库是干嘛的。尤其是一些配置数据库和日志数据库。有时候看看日志数据的日志和改改配置的事情,不需要大动干戈排查内存拉,cpu拉,IO.
我就想谈一下DBA根不同人打交道的方式。理解他们的角色定位,目标和工作性质很重要。和他们一起工作能让你成长为资深的SYSTEM DBA 或者Application DBA. DBA绝对不是一个独立的世界。
当然作为DBA 性能排查的方法很多,我也不是大师, 多看书,多遇事,多想想,建立排查问题的思维模式 (俗语:套路)。总抛砖引玉 |
|