暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

雍正荐书 | Oracle、MySQL 资深专家里程碑之作,数年工作经验结晶

610


关于【雍正荐书】

雍正大人下旨:每个月数次,爱可生开源社区以抽奖或者其他活动方式送出精心挑选的图书,以此来回馈一直支持我们的小伙伴们;

关于华章科技

介绍本月的好书之前,再三感谢 华章科技 友情图书赞助!

华章科技图书品牌成立于1995年,是华章公司创立最早的子品牌,专注于为计算机、电子工程等IT领域的专业读者提供学习解决方案。

25年来出版了计算机科学丛书、数据科学与工程技术丛书、机器人学译丛、计算机类专业系统能力培养系列教材,物联网工程专业规划教材、Java核心技术丛书、智能系统与技术丛书、华章数学译丛、网络空间安全技术丛书等30余个经典套系,在各细分领域均处于较高地位。

成立至今,华章科技一直在IT领域的高等教育市场和专业人才市场处于领先地位,成为中国计算机图书出版社四强之一。在科技出版行业引领风向标,在广大读者心智中建立了高品质的专业形象。

本月好书

DBA攻坚指南
左手Oracle,右手MySQL

叶桦,徐浩,张梦颖,应以峰  著

内容简介

本书是美创科技资深Oracle、MySQL技术专家呕心沥血之作,积作者多年的经验结晶和实践经验,也是目前市场上为数不多Oracle和MySQL相结合的数据库技术书籍。

书中内容主要分为Oracle和MySQL两大部分。第一部分介绍Oracle的日常运维,该部分主要由四个章节构成,内容由浅入深逐步展开。包括生产环境搭建,上线前的压力测试,日常运维以及故障处理,迁移升级,SQL的优化技巧等内容;第二部分是MySQL的运维实战,主要介绍MySQL常用的运维操作及实践,包括软件安装、备份恢复、迁移升级、架构设计、监控和性能优化等。书中提供了全面、实用的建议及具体的操作案例,以保证在复杂的核心生产环境中,能帮助读者可靠且高效地运行Oracle和MySQL数据库。

推荐理由

作者介绍

叶桦,Oracle OCM,MySQL认证专家,超10年乙方数据库维护经验,美创科技运维服务团队负责人。具备丰富的行业经验与技术积累,所服务的对象包括大型运营商、金融机构、政府机关以及制造业等多个行业客户,对于数据库技术具有深刻的理解。精通Oracle和MySQL数据库内核原理、架构规划和调优诊断,擅长Shell和Python自动化运维开发。

徐浩,美创科技运维部经理,Oracle、MySQL、云数据库高级认证专家。拥有8年以上的数据库领域从业经验,TB级高并发数据库与中大型项目的管理经验。对于分布式高可用架构和性能调优有着丰富的实战经验,擅长故障诊断及数据灾难挽救,服务的行业包括运营商、制造业、金融、医疗、政府等。目前,主要负责Oracle、MySQL、阿里云等技术的研究和运维管理,以及数据库智能运维平台的设计开发等工作。

精彩节选

导读:如何查找需要进行优化的异常SQL并进行处理。

影响SQL执行效率的因素主要包括以下几点。

1)统计信息,具体如下
  • 陈旧的统计信息

  • 错误的优化器参数配置

  • 数据库迁移前后优化器的改变

  • 频繁的数据量变化

2)SQL语句编写问题
3)游标共享问题,具体如下
  • 变量窥探

  • 使用常量

4)资源争用问题,具体如下
  • 硬件资源不足

  • 锁或latch等的争用问题

以上几种原因最终都会导致主机CPU的使用率增加、主机I/O异常繁忙、语句执行时间异常增加、数据库整体性能下降、应用超时等问题。

01
定位问题SQL

进行SQL优化的第一步是定位问题SQL。Oracle会在内存中记录每条SQL语句执行所消耗的资源,再由专门的进程(MMON)将这些统计指标定期保存为AWR快照,笔者认为,AWR的快照采集,是Oracle优于其他数据库的一大利器。
两次快照内统计值的差异可以反映快照时间段内资源的消耗情况。Oracle可以通过指定的两个快照来生成性能报告。执行Oracle内置的awrrpt脚本,按照提示逐步进行即可生成AWR报告。AWR报告中有关于SQL的各项排名,如按SQL耗时、CPU消耗、I/O消耗、逻辑读消耗、物理读消耗、执行次数、解析次数、共享内存使用大小、子游标使用量、Cluster等待等进行的排名。
除了通过AWR查找异常SQL之外,我们还可以通过以下方式定位异常SQL。
  • 主机资源异常,找出排行靠前的进程(top process),检查执行的SQL语句,查询命令如下:
    <!--替换对应的SPID即可 -->
    SQL> select p.inst_id,
    p.spid,
    a.sid,
    a.serial#,
    a.sql_id,
    a.event,
    a.status,
    a.program,
    a.machine
    from gv$session a, gv$process p
    where a.inst_id = p.inst_id
    and a.paddr = p.addr
    and p.spid =15883;
    • 业务超时反馈,检查对应的应用模块正在执行的SQL语句。
    • 数据库性能整体下降,检查异常等待事件,查询语句如下:
      <!--替换等待事件名称即可-->
      SQL> select a.inst_id,
      a.process,
      a.sid,
      a.serial#,
      a.sql_id,
      a.event,
      a.status,
      a.program,
      a.machine
      from gv$session a where event = 'db file scattered read';

      02
      SQL健康检查

      接下来介绍SQL调优健康检查(SQL Tuning Health Check,SQLHC)脚本的基础知识,以及如何使用它来收集性能较差SQL的关键信息。SQLHC可以帮助我们专注于特定的SQL,并检查基于成本的优化器统计信息、对象元数据、配置参数和其他可能会影响性能的因素。与SQLT(SQLTXPLAIN)相比,SQLHC不需要在数据库中提前配置脚本,只需要利用已执行语句的SQL_ID生成报告即可。SQLHC适用于Oracle 10g及以上版本,同样也支持RAC。
      对于简单的SQL问题,我们通过执行计划就能判断其优化方向;而对于复杂SQL问题的诊断,则需要借助于更多信息,比如,数据库版本信息、参数设置、表/索引/字段统计信息、统计信息变化情况、当前和历史执行计划、sql path/sql profile/sql plan baseline等。
      好消息是SQLHC不必运行多个脚本来收集数据,单个SQLHC就能收集所有的数据,并以HTML这种易于阅读的格式显示。
      SQLHC的官方下载地址为:SQL Tuning Health-Check Script (SQLHC) (Doc ID:1366133.1)。
      首先从MOS中下载脚本代码并将其上传到服务器,然后找到需要评估的SQL_ID,其可以来自于AWR、ASH报告或V$SQL视图。
      接下来,我们重点介绍SQLHC的使用方法,SQLHC主要包含如下三个文件。
      • sqldx.sql:仅收集信息而不进行任何修改操作,较为常用。

      • sqlhc.sql:收集SQL相关数据字典信息。
      • sqlhcxec.sql:执行SQL,再收集信息,会产生变更操作。

      要想执行以上脚本,我们需要拥有DBA或访问数据字典视图的权限。操作也非常简单,只需要上传sqlhc.sql到数据库服务器指定的目录下执行即可,具体方法如下:
        shell> unzip sqlhc.zip
        Archive: sqlhc.zip
        creating: sqlhc/
        inflating: sqlhc/sqlhc.sql
        inflating: sqlhc/sqldx.sql
        inflating: sqlhc/sqlhcxec.sql
        shell> cd sqlhc
        shell> ls -tlr
        total 2
        -rw-r--r-- 1 mfggprd dba 48747 Nov 11 2013 sqldx.sql
        -rw-r--r-- 1 mfggprd dba 288298 Apr 16 2014 sqlhc.sql
        -rw-r--r-- 1 mfggprd dba 292838 Apr 16 2014 sqlhcxec.sql
        shell> sqlplus as sysdba
        SQL> @sqlhc.sql T d18wwg2f3txc0
        执行时需要输入以下两个参数。
        • Oracle Pack License (Tuning, Diagnostics or None) [T|D|N] (required)。

        • T:调优,较为常用。

        • D:诊断。

        • N:无。

        • SQL_ID:需要诊断的SQL语句。

        下面以SQL d18wwg2f3txc0为例,执行完之后自动打包生成一个压缩文件sqlhc_ 20200303_1555_d18wwg2f3txc0.zip,生成的内容包括health_check、diagnostics、execution plan、sql_detail、10053 trace、sqldx、SQL monitor(可选),如图1所示。

        图1 SQLHC.SQL执行后生成的文件


        图1中的部分内容说明如下。

        • health_check:用于诊断,以及统计信息异常、Index异常、特殊参数设置等。

        • diagnostics:内容包括SQL文本、执行计划绑定情况、当前和历史SQL的相关信息、表格/列/索引/列柱状图详细信息、系统参数、表格创建语句、SQL相关等待事件,等等。

        • execution plan:SQL文本、当前和历史执行计划。

        • sqldx:SQL绑定、直方图、各对象的数据字典信息等。

        • 10053跟踪:SQL的执行方式。

        更多内容,请赢取或购买本书细细品尝哟...

        又到了送书环节

        抽出3本送给小伙伴

        活动时间

        • 即日起至2021年7月30日 16:00

        活动规则

        • 只要是关注爱可生开源社区公众号的用户均可参加;
        • 用户可扫描下方活动程序码,参与抽奖。我们将定时开奖公布中奖名单;

        • 邀请好友助力可增加中奖概率噢~


        获奖说明

        • 2021年7月30日 16:00系统自动开奖。

        • 开奖后的3天内,获奖用户请填写中奖信息和邮寄信息,超时视为放弃。

          本活动最终解释权归爱可生开源社区所有

             


        没有中奖的小伙伴!
        可直接购买哟
        文章转载自爱可生开源社区,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论