• Oracle:《ITPUB名人堂》第1期采访谭怀远先生圆满结束



    hwayw 说(13:55)
    大家好!今天是我们《ITPUB名人堂》第1期,今天很荣幸请到了 谭怀远先生来与大家分享一些经历和职业规划等方面的内容。先请谭怀远先生自我介绍一下吧。
    alantany说(13:56)
    呵呵,大家好,我是谭怀远,一个非常老的DBA。

    hwayw说(13:58)
    alantany在DBA行业算是经验丰富的老手了。您从oracle 8i的版本开始,经历了9i、10g和11g等多个版本,在这些版本更替的过程中,您最深的感受是什么呢?
    alantany说(14:00)
    实际上真的没有太深的感受。
    当我还在热衷研究技术的时候,对于数据库的版本升级非常有兴趣,热衷于研究一些新特性;但是现在更愿意站在用户的角度上来考虑问题,这样看来,数据库版本也就不是那么重要了。
    我认为,对于一个系统来说,数据库版本的改变对系统所带来的影响较之系统的自身设计,显得不是那么重要,我觉得理解这一点很重要,因为我发现很多人把系统性能的改善寄希望于新的数据库版本,实际上这是本末倒置的做法,希望他们能够认识到这一点。
    但是这并不是说数据库自身就不重要,实际上它也很重要,否则我也不会写这样两本专门介绍数据库优化的书了,但是它不是决定性的,决定性的是系统自身的设计,比如架构的设计,功能的实现等等。

    hwayw说(14:08)
    说到这些新的特性,也是开发人员大都比较关心的了,以前大家都是将数据库作为一种存储的工具,目前数据库是处于一种什么样的使用状态?为什么会出现如今的状况?
    alantany说(14:09)
    恩,我负责着很多的数据库,可能有几百台或者更多吧,10几年来都在和它们打交道,我认为数据库的角色正在发生变化,从前它们的确就像是一个盒子,用来装数据用的,就像一个黑盒子一样,没人会理会它们是怎么工作的。
    但是现在很明显,这种状况已经发生改变了,我认为这主要应该是信息化进程飞速发展推动的吧,比如银行交易,网上购物等等,很多实际的东西现在都虚拟化了,人们对信息的依赖度越来越强,作为这些信息的载体----数据库,将不得不满足人们的各种需求,这样数据库不光要存储数据,还要有效的满足用户的各种请求,比如交易,查询等动作,这样它又承担了一个计算功能了,而且这个功能越来越明显,因为人们对它的使用越来越频繁;
    还有其它的功能,比如Oracle 的RAC还可以实现容错,负载均衡或者业务分割的功能,这些功能都是信息化发展的必然结果。

    hwayw说(14:13)
    信息化的飞速的发展对数据库的提出了更多的要求,很多人现在都在讨论要做数据库性能优化,数据库的性能优化主要需要从哪些方面来实施?一般多大的数据量才需要考虑数据库型性能优化?
    alantany说(14:15)
    其实我个人认为,数据库的性能是以用户的满意度为标准的,如果用户满意,那么这个数据库就是O.K.的,当然,这并不一定对,作为技术,不断的创新,不断的改进才具有生命力。但对于一个具体的系统而言,我们的最终目的就是要用户满意,不是吗?哈哈,这个念头可能有些邪恶和不思进取。
    但这是一种思路,我们把用户满意作为数据库优化的一个思路,这样就很有针对性,比如用户抱怨查询慢,那么我们就集中精力来研究用户发出的查询SQL是否有优化的余地?是否绑定了变量,索引是否合理等等,这样优化就很有目的性。
    从这个角度来看,如果DBA不了解业务,是无从谈起优化的,我看到很多DBA在单纯研究数据库,实际上这走弯路的,你要知道,你的数据库是为业务服务的,你连业务都不懂,连用户在数据库中进行了那些操作都不知道,你又如何能让用户的操作快起来呢?
    如果说要讨论一个具体的优化过程,比如说一个用户查询慢的过程,我认为,不妨从以下的几点来入手:
    1.获得用户操作的会话。
    2.获得正在操作的SQL。
    3.查看这个SQL的等待事件(wait event),看看都是一些什么等待。
    4.从这些等待事件来分析SQL是有在正常工作或者是在等待什么资源。
    以上是我通常的一个思路,我想很多DBA应该很清楚这种思路了,还有一些其它的东西,比如你无法确定哪个用户性能差,或者所有用户的性能都差,那这可能是数据库本身性能出了问题,这时候一个AWR或者STATSPACK报告应该可以告诉我们很多问题。
    数据库的性能,的确是需要建立在一定数据量的基础上的,比如对于1000条数据,基本上各种查询都不是问题吧?
    我认为数据量怎么也要到几十G或者更多,这时候可能会出现性能问题,但性能归根结底是业务造成的,最终要看你的业务是如何使用这些数据的,比如对于100G的表,一个全表模糊查询,可能要10几分钟或者更长,但是如果是在一个唯一索引上的搜索,可能不到一秒钟。

    hwayw说(14:20)
    您一直都是在从事oracle数据库方面的工作,ORACLE在大型数据库的应用中主要有哪些应用呢?有哪些优点,以及哪些方面优于其它数据库,ORACLE数据库主要应用的功能是哪些?比如存储过程?还有哪些呢?
    alantany说(14:21)
    我有差不多10年没怎么太接触其它的数据库了,哈哈,应该没有太多话语权。不过多少听到过一些讨论,我认为每个数据库都有自己的特点和优点,比如MYSQL是免费的,易于部署,而且性能也不差;SQL server和Windows平台整合的非常好,这都是它们的优势。
    我认为Oracle数据库在下面几方面比较有优势:
     跨平台性好,几乎所有流行的操作系统上都可以部署Oracle数据库。
     大数据量的管理。
     稳定性也非常好。
     另外,回滚段是Oracle一个挺有特色的技术,不过看到报道,其它的数据库近年也有了相似的技术。
     在线支持(metalink.oracle.com),在这一块,我认为Oracle是做的最好的。
    Oracle中我最喜欢的功能是分区技术,因为我们这里数据量都非常的大,没有这个分区技术,真不知道怎么管理这些数据,我在第二本书里用了很多章节来讨论分区在海量数据库中的应用。
    DataGarud 是另外一个非常棒的技术,它可以在不中断业务的情况下,保证数据的实时备份,并能非常方面的进行主备的切换操作。
    对于很多人推崇的RAC,我对它持有一些意见,我认为它在解决实例级容错的情况下,它的cache fusion会带来一些数据块锁的争用以及数据块需要花时间在实例内存之间复制带来的性能影响,当然,这些可以通过调整改善,但是它的机制没办法改变。

    hwayw说(14:25)
    谈到这里,大家都想知道如何系统详细的学习 Oracle的课程,针对oracle数据库的学习,有哪些经验可以给大家分享一下?
    alantany说(14:26)
    我认为itpub是个很好的平台,如果每天能够把大家提出的问题都认真分析一下,得出一个结论,并且自己能够动手来验证一下,数据库技能的提高会非常快(这好像是Biti大师说过的话吧,被我给借用了).
    另外,如果英语还过得去的话,推荐经常使用asktom.oracle.com网站,里面有很多非常精彩的解答,如果你能耐心的看完里面任何一个话题(thread),你都将收益匪浅。
    但上面的两种却不是一个系统学习Oracle的平台,如果你要想系统的学习Oracle,你需要找一套系统的材料,比如Oracle官方文档就非常不错。
    实际上,我想告诉大家的是,你所有学习的东西最终目的是要解决问题,所以你要认真研究你负责系统的业务,了解了业务,才能了解用户需求,才能有目的和有针对性的去解决问题,这是提高你的业务水平最有效的途径。

    hwayw说(14:29)
    我们在采访开始的时候就提到了您是一个多年的DBA,您作为一个经验丰富的DBA,对正想成为DBA,或未来想成为DBA的网友,什么好的意见和捷径吗?
    alantany说(14:30)
    要有耐心和信心,要对它有兴趣,兴趣是你所有学习的源动力,当然,金钱也算一块,但我认为它不是最根本的,兴趣才是。
    其次是方法得当,有很多快速提高自己技能的方法,上面已经谈到了。
    要动手,不要懒惰,一定要动手操作,一些人认为动手很浪费时间,1个小时打不了几条命令,看一个小时的书可以看很多知识呢。实际上这正好又是本末倒置,要知道,你敲过的每一条命令,不论对错,都牢牢的印在了你的脑子里,不容易忘的,而看过的书,很快就会忘掉,所有经历过Oracle学习的人都有这种体会吧。
    善于给自己提出问题,比如,数据库如果这里坏了,我该怎么办,这个执行计划和另外一种执行计划有什么差别,只有这样不厌其烦的给自己制造问题,然后尝试解决它们,你才能对Oracle有深入的理解。
    建议开始学习Oracle的网友,不要使用第三方的图形化工具,要逼着自己使用“丑陋的”SQL*PLUS,这个过程虽然开始很痛苦,但它会让你记住很多命令和动态视图,这些都是一个合格的DBA必须具备的技能。

    hwayw说(14:35)
    谭总刚刚出版了自己的新书《让oracle跑得更快2—基于海量数据的数据库设计与优化》,先前已经出版了《让oracle跑得更快—oracle 10g性能分析与优化思路》销量也很不错,能给大家简单介绍一下这两本书吗?
    alantany说(14:37)
    第一本书主要是介绍以一种什么样的思路来应对Oracle数据库中出现的性能问题,在这种思路指导下我们应该使用那些工具和技术,最后还有一个附录,是介绍笔者学习Oracle的一些新的体会的。
    第二本书主要是讨论在海量数据的数据库设计和优化中,需要思考的问题,比如分区的选择,索引的选择,或者选择一种什么样的数据库架构,一种什么样的备份方案。
    第二本书更贴近实际,因为现在很多数据库中的数据量都非常大,这给系统设计人员或者DBA带来了更多的麻烦和问题,我就是在这些问题的困扰中成长起来的

    hwayw说(14:39)
    是否会有继续出版第三本的计划呢?
    alantany说(14:40)
    恩,不知道啊,看看吧,脑细胞已经基本上榨干了,如果写,可能写一个非常初级的书,哈哈。

    hwayw说(14:41)
    呵呵
    今天的采访到此结束了。非常感谢alantany接受我们的采访,最后我们希望谭总的书本本畅销,同时也期待潭总的下一本新书能早点与大家见面。
    alantany说(14:42)
    ok,谢谢

  • 相关阅读:
    Rabbitmq 不同系统 间 调用
    《 工作呀工作 之 excel 上传 》
    List 中删除 元素
    springboot jpa 的使用 二
    java中级面试题 之linux 与数据库
    java中级面试题 之基础篇
    git 操作
    eclipse 安装lombok插件
    瑞士轮
    Piggy-Bank
  • 原文地址:https://www.cnblogs.com/tracy/p/2186408.html
Copyright © 2020-2023  润新知