欢迎光临澳大利亚新华书店网 [登录 | 免费注册]

    • 大数据SQL优化(原理与实践)/数据之力技术丛书
      • 作者:陈鹤//杨国栋|责编:孙海亮
      • 出版社:机械工业
      • ISBN:9787111767039
      • 出版日期:2025/01/01
      • 页数:374
    • 售价:39.6
  • 内容大纲

        这是一本站在一线开发人员的视角,从SQL的本质出发,采用理论与实践相结合、案例与分析相结合、作者经验与一线需求相结合的方式,深度解读大数据SQL优化核心技术和解决方案的工具书。本书主要面向大数据初中级技术人员,期望帮大家深度理解大数据SQL优化原理,掌握SQL优化的落地实践方法,从而真正“玩转”大数据SQL优化技术,根据实际问题和需求设计出有针对性的提升SQL性能的解决方案。
        本书共分为4篇,包括10章。
        认知篇(第1章)主要面向初学者阐述为什么大数据计算或存储引擎发展至今最终选择SQL作为统一查询语言的原因及利弊,大数据SQL从业者目前面临的主要问题,以及调优的两个根本目标。
        原理篇(第2章)以深入浅出的方式解读SQL的本质。为了降低读者理解的门槛,本篇还以Hive、Spark和Flink这三个主流的引擎为例,从源码的角度探索SQL执行背后的秘密。
        实践篇(第3~9章)首先深入解读引擎查询优化器的两大优化策略——基于规则的优化和基于代价的优化的实现原理、示例和局限性,然后以Hive、Spark、Flink等主流引擎为蓝本,探索SQL优化(包括结构与参数调优、子查询优化、连接优化、聚合优化)的解决思路和方法论,并给出作者多年总结的一些“坑”。
        案例篇(第10章)以实践篇的各种真实需求调优历程为基础,以点带面,以小明大,分享电商、金融、银行这三个典型行业的典型公司大数据SQL调优案例,还给出了内容平台数仓、查询高可用、实时性数仓等业务场景的解决方案。
  • 作者介绍

  • 目录

    前言
    认知篇
      第1章  概述
        1.1  大数据的发展历程
        1.2  大数据为什么选用SQL
          1.2.1  标准化语言
          1.2.2  声明式编程
          1.2.3  借鉴关系数据库成熟理论
        1.3  大数据SQL的弊端
          1.3.1  易学难精
          1.3.2  表达能力有限
          1.3.3  与关系型数据库求同存异
        1.4  为什么要调优
          1.4.1  降本提效
          1.4.2  知其然并知其所以然
    原理篇
      第2章  SQL的本质
        2.1  执行过程提炼
        2.2  抽象语法树
        2.3  SQL抽象语法树
        2.4  Hive执行原理
          2.4.1  词法解析
          2.4.2  语义分析
          2.4.3  逻辑优化
          2.4.4  物理优化
        2.5  Spark执行原理
          2.5.1  词法解析
          2.5.2  语义分析
          2.5.3  逻辑优化
          2.5.4  物理优化
        2.6  Flink执行原理
          2.6.1  词法解析
          2.6.2  语义分析
          2.6.3  逻辑优化
          2.6.4  物理优化
    实践篇
      第3章  任劳任怨的引擎
        3.1  基于规则优化概述
          3.1.1  谓词下推
          3.1.2  常量堆叠
          3.1.3  常量传递
          3.1.4  等式传递
          3.1.5  布尔表达式简化
          3.1.6  BETWEEN-AND重写
          3.1.7  NOT取反重写
          3.1.8  简化IF/CASE WHEN条件表达式
          3.1.9  优化LIKE正则表达式
          3.1.10  简化CAST表达式
          3.1.11  简化UPPER/LOWER表达式
          3.1.12  优化二元表达式

          3.1.13  简化复杂类型数据结构的操作符
          3.1.14  合并投影
          3.1.15  列裁剪
          3.1.16  优化冗余别名
          3.1.17  替换NULL表达式
          3.1.18  CONCAT合并
          3.1.19  等式变换
          3.1.20  不等式变换
        3.2  基于代价优化的简析
        3.3  两种优化的局限性
      第4章  调优解决方案
        4.1  理解业务,选择需求
        4.2  利用执行计划
        4.3  利用统计信息
        4.4  利用日志
        4.5  利用分析工具
          4.5.1  Dr.Elephant
          4.5.2  火焰图
          4.5.3  Prometheus
        4.6  等价重写思想
          4.6.1  关系代数
          4.6.2  等价变换规则
      第5章  结构与参数调优
        5.1  参数调优
          5.1.1  并行执行
          5.1.2  预聚合
          5.1.3  扩大并行度
          5.1.4  内存分配
          5.1.5  数据重用
          5.1.6  Kafka限流
        5.2  利用Hint
        5.3  合理的表设计
          5.3.1  小文件合并
          5.3.2  分区表
          5.3.3  分桶表
          5.3.4  物化视图
        5.4  存储调整
          5.4.1  存储格式
          5.4.2  压缩类型
      第6章  子查询优化案例解析
        6.1  案例分享
          6.1.1  子查询改写为JOIN
          6.1.2  避免全表扫描
          6.1.3  避免无效过滤条件
          6.1.4  子查询改写为窗口函数
          6.1.5  复杂UDF缓存
          6.1.6  子查询改写为半连接
        6.2  深度剖析
          6.2.1  让人又爱又恨的子查询
          6.2.2  子查询消除算法

          6.2.3  子查询合并算法
      第7章  连接优化案例解析
        7.1  案例分享
          7.1.1  改写为UNION
          7.1.2  强制广播
          7.1.3  使用Bucket Join
          7.1.4  数据打散
          7.1.5  谨慎对待关联键的数据类型
          7.1.6  倾斜数据分离
          7.1.7  慎用外连接
          7.1.8  流Join的实现
          7.1.9  手动过滤下推
          7.1.10  先聚合,再关联
          7.1.11  一对一再膨胀策略
        7.2  深度剖析
          7.2.1  连接实现
          7.2.2  外连接消除算法
          7.2.3  连接排序算法
      第8章  聚合优化案例解析
        8.1  分而治之
        8.2  两阶段聚合
        8.3  多维聚合转UNION
        8.4  异常值过滤
        8.5  去重转为求和/计数
        8.6  使用其他结构去重
        8.7  善用标签
        8.8  避免使用FINAL
        8.9  转为二进制处理
        8.10  行列互置的处理办法
        8.11  炸裂函数中的谓词下推
        8.12  数据膨胀导致的任务异常
        8.13  用MAX替换排序
      第9章  SQL优化的“最后一公里”
        9.1  谨慎操作NULL值
        9.2  决定性能的关键—Shuffle
        9.3  数据倾斜的危害
        9.4  切莫盲目升级版本
        9.5  引擎自优化的利弊
    案例篇
      第10章  实战案例分享
        10.1  某电商业务营销活动实时指标优化方案
        10.2  某金融业务风控行为实时指标优化方案
        10.3  某银行监管项目实时指标优化方案
        10.4  某内容平台数仓建设历程
          10.4.1  建模指导思想
          10.4.2  数仓架构设计
          10.4.3  数仓建设理论
          10.4.4  通用设计方法
          10.4.5  数仓规范
          10.4.6  各层级具体实施过程

        10.5  订单冷备数据查询高可用方案
        10.6  浅谈实时数仓建设
          10.6.1  各类架构的利弊
          10.6.2  分层有没有意义
          10.6.3  确定性计算不等于正确结果
          10.6.4  模糊的正好一次
          10.6.5  流表相对性