Faster system?

February 10th, 2007 | Categories: Boring | Tags:

数据库优化是DBA的主要工作之一,包括优化数据库逻辑和物理设计,优化应用程序设计和编码,优化网络,SQL调优等等。在优化过程中,你是否遇见如下问题:

优化应用中的某些SQL后,应用程序并没有性能提高。而公司为此项工作支付了你工资。
又或者通过修改初始化参数使某个模块得到性能提高,但应用程序性能反而更慢,消耗更多的系统资源和时间。
又或者优化了某个模块后,该应用程序得到了性能改进,而其他的应用程序受到影响导致性能下降?
又或者投入资金购买供应商promise的更popular的硬件,而应用程序依旧如此,客户并不领情。
大部分情况可能是,你认为数据库运行良好,而客户却在抱怨他们缓慢的application.于是你去抱怨给developer,network admin,storage admin etc.大家开了半天会也找不到问题的所在。
又或者你很好学而且工作努力,优化了某些SQL后,降低了数据库50%的buffer gets,然后你报告给你的Manager“通过XXX,我们的数据库快了50%”;可是你不够幸运,客户并没有感觉到他们的应用有什么变化。

那我们如何去做去优化,才能实现“Faster system”?

首先,“Faster system”从来没有存在过,存在的只有faster (application) task , scalable system.

faster (application) task 是针对某一个end user来说的。比方说,用户在访问taobao.com登陆物品的时候,他所感知的就是submit以后,多长时间后返回确认信息;用户的这一个操作,涉及到网络传输,应用服务器business逻辑处理,数据库记录的插入等很多模块;每个模块都是一个child task;只有每个child task都得到高效的处理,用户才能获得faster task的体验。

让用户感觉到faster task,我们必须有针对性进行调整,找到task的主要瓶颈,然后step by sub task地进行优化。最终实现整个User task的faster. 作为DBA,优化数据库,我们所追求的应该是以最小的成本实现最佳的系统吞吐量,最佳的应用response time和客户的满意。但优化数据库只能优化到数据库这个sub task,如果系统主要瓶颈不在数据库,又或者我们怎么去判断/怎么去找到task不能faster的瓶颈到底在哪里?

这就需要这个User Task有类似Oracle的“Wait Events”的task profile了。Task profile说白了就是log,记录User Task在各个sub task上的资源&时间分配:sub task作了什么(event name),执行了多少次(executions),多长时间(event time)etc. 这就需要User task在设计的时候,就有明确的蓝图:为sub task添加必要的Instrumentation。这就是Profile.

instrumentation 对DBA来说,当然很好的就是,一眼就能看到User Task的流程,很容易找到它的瓶颈;出问题的时候不但有alert.log,还有application log。

instrumentation 对QA来说,当然很好的就是,测试的时候能够更好地了解User Task,更符合实际的测试用例。

instrumentation 对Developer来说,当然是添加一点麻烦,但同样方便了debug.

对Oracle PL/SQL code的instrumentation ,我们可以用dbms_output,debug.f,Log4plsql等。

有了类似Oracle Wait Event的User Profile,我们就可以像优化Oracle一样去优化User Task,我们就可以给manager报告,经过优化XXX后,用户的task提高了XX时间($$).

最后再简单说一下Scalable system,它和faster (application) task有区别。faster (application) task是针对某个用户来说的;而Scalable system是真对使用这个系统的所有User (application) task来说的。有可能的情况是,为了faster某个用户的(application) task,分配更多的资源给这个用户,从而降低了其他用户的可用资源,影响到其他用户的(application) task性能,导致系统不能Scalable. 当然faster (application) task是Scalable system的前提。我将会在以后介绍Scalable system。

可参考hotsos_profile.pdf

Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪 ViVi 365Key 网摘 天极网摘 和讯网摘 博拉网 POCO 网摘 饭否 QQ 书签 Digbuzz 我挖网 Mister Wong
  1. anysql
    February 11th, 2007 at 17:03
    Quote | #1

    不要在网上说自已公司的事.

  2. xrumuvk
    May 26th, 2007 at 13:03
    Quote | #2

    [Cool staff!||Hi! I think this need for || Help me with - ||Hello….||I find this - || It`s realy cool!]