[套装书]ClickHouse原理解析与应用实践+HikariCP数据库连接池实战(2册)

作者
朱凯 朱政科
丛书名
数据库技术丛书
出版社
机械工业出版社
ISBN
9782006091050
简要
简介
内容简介书籍计算机书籍 ---------------------------ClickHouse原理解析与应用实践--------------------------- 本书是一本系统介绍Clickhouse的指导型工具书,全书总共分为11章: 第1章 介绍ClickHouse的由来、发展历程、核心特点与核心特点。第2~6章 介绍了ClickHouse基础使用部分,包括整体架构、如何安装、数据定义、数据引擎、数据查询和函数的特性和使用方法。第7~9章介绍了ClickHouse高级特性部分,包括数据库管理操作,数据分片、数据副本和高可用的特性和使用方法。第10~11章介绍了如果自己手动实现ClickHouse中间件的思路和示例,同时也介绍了几款可视化工具与ClickHouse集成的方法。 ---------------------------HikariCP数据库连接池实战--------------------------- 内容简介 这是一本从设计思想、功能使用、原理实现、工程实践、技术扩展5个维度全面讲解数据库连接池HikariCP的著作。得到了褚霸、德哥、张亮、吴晟等近10位来自阿里、京东等互联网企业的技术专家的高度评价,同时也在社区里获得广泛好评。 系统性上,从基本功能,到扩展技术,内容涵盖HikariCP的方方面面;深度上,从原理阐述到源码分析,直击HikariCP的本质;实操性上,不仅有小案例和综合性的大案例,还有对疑难问题的解决方案。 全书共14章,在逻辑上分为四大部分: 准备篇(1~3章) 以阿里连接池极致优化案例展示了不使用连接池和使用连接池的QPS天壤之别,带领读者了解数据库连接池的背景、原理及历史,以及本书的主角HikariCP。 基础篇(4~5章) 系统梳理HikariCP的基础知识,包含参数配置、JDBC等核心模块,这些内容都是HikariCP基础的重中之重。 原理篇(6~9章) 直击HikariCP的“灵魂”,深入浅出地分析了HikariCP的原理。首先,全方位的剖析了HikariCP性能极致的原因,这些都会成为读者面试、工作中的谈资; 其次,从连接原理、参数原理、动态代理与字节码技术等三个维度作为切入口,分别对HikariCP进行了源码级别的解析,这样全方位的剖析不同于单视角的源码解析,更能将HikariCP的原理立体化的展示在读者面前。 . 实战篇(10~14章) 这是本书的精华部分。HikariCP的监控、扩展技术、常见问题等都是读者工作中较为迫切了解到、使用到的知识点,这些内容大多来自作者多年实战经验的积累及大量文献资料的收集整理,内容包罗万象、精妙绝伦。
目录



---------------------------ClickHouse原理解析与应用实践---------------------------


推荐序一
推荐序二
推荐序三
推荐序四
推荐序五
赞誉
前言
第1章 ClickHouse的前世今生1
1.1 传统BI系统之殇2
1.2 现代BI系统的新思潮2
1.3 OLAP常见架构分类4
1.4 OLAP实现技术的演进6
1.5 一匹横空出世的黑马7
1.5.1 天下武功唯快不破8
1.5.2 社区活跃8
1.6 ClickHouse的发展历程8
1.6.1 顺理成章的MySQL时期9
1.6.2 另辟蹊径的Metrage时期10
1.6.3 自我突破的OLAPServer时期10
1.6.4 水到渠成的ClickHouse时代11
1.7 ClickHouse的名称含义12
1.8 ClickHouse适用的场景12
1.9 ClickHouse不适用的场景13
1.10 有谁在使用ClickHouse13
1.11 本章小结13
第2章 ClickHouse架构概述14
2.1 ClickHouse的核心特性14
2.1.1 完备的DBMS功能15
2.1.2 列式存储与数据压缩15
2.1.3 向量化执行引擎16
2.1.4 关系模型与SQL查询17
2.1.5 多样化的表引擎18
2.1.6 多线程与分布式18
2.1.7 多主架构19
2.1.8 在线查询19
2.1.9 数据分片与分布式查询 19
2.2 ClickHouse的架构设计20
2.2.1 Column与Field20
2.2.2 DataType20
2.2.3 Block与Block流21
2.2.4 Table22
2.2.5 Parser与Interpreter22
2.2.6 Functions 与Aggregate Functions22
2.2.7 Cluster与Replication23
2.3 ClickHouse为何如此之快24
2.3.1 着眼硬件,先想后做24
2.3.2 算法在前,抽象在后24
2.3.3 勇于尝鲜,不行就换25
2.3.4 特定场景,特殊优化25
2.3.5 持续测试,持续改进25
2.4 本章小结26
第3章 安装与部署27
3.1 ClickHouse的安装过程27
3.1.1 环境准备27
3.1.2 安装ClickHouse28
3.2 客户端的访问接口31
3.2.1 CLI31
3.2.2 JDBC33
3.3 内置的实用工具35
3.3.1 clickhouse-local35
3.3.2 clickhouse-benchmark36
3.4 本章小结38
第4章 数据定义39
4.1 ClickHouse的数据类型39
4.1.1 基础类型40
4.1.2 复合类型45
4.1.3 特殊类型48
4.2 如何定义数据表49
4.2.1 数据库49
4.2.2 数据表50
4.2.3 默认值表达式52
4.2.4 临时表53
4.2.5 分区表54
4.2.6 视图55
4.3 数据表的基本操作56
4.3.1 追加新字段56
4.3.2 修改数据类型56
4.3.3 修改备注56
4.3.4 删除已有字段57
4.3.5 移动数据表57
4.3.6 清空数据表58
4.4 数据分区的基本操作58
4.4.1 查询分区信息58
4.4.2 删除指定分区58
4.4.3 复制分区数据59
4.4.4 重置分区数据60
4.4.5 卸载与装载分区60
4.4.6 备份与还原分区61
4.5 分布式DDL执行61
4.6 数据的写入61
4.7 数据的删除与修改63
4.8 本章小结64
第5章 数据字典65
5.1 内置字典65
5.1.1 内置字典配置说明65
5.1.2 使用内置字典67
5.2 外部扩展字典67
5.2.1 准备字典数据67
5.2.2 扩展字典配置文件的元素组成68
5.2.3 扩展字典的数据结构69
5.2.4 扩展字典的类型71
5.2.5 扩展字典的数据源79
5.2.6 扩展字典的数据更新策略84
5.2.7 扩展字典的基本操作85
5.3 本章小结87
第6章 MergeTree原理解析88
6.1 MergeTree的创建方式与存储结构89
6.1.1 MergeTree的创建方式89
6.1.2 MergeTree的存储结构91
6.2 数据分区93
6.2.1 数据的分区规则93
6.2.2 分区的命名规则94
6.2.3 分区的合并过程95
6.3 一级索引98
6.3.1 稀疏索引98
6.3.2 索引粒度99
6.3.3 索引数据的生成规则99
6.3.4 索引的查询过程101
6.4 二级索引102
6.4.1 granularity与index_granularity的关系104
6.4.2 跳数索引的类型105
6.5 数据存储106
6.5.1 各列独立存储106
6.5.2 压缩数据块106
6.6 数据标记109
6.6.1 数据标记的生成规则109
6.6.2 数据标记的工作方式110
6.7 对于分区、索引、标记和压缩数据的协同总结113
6.7.1 写入过程113
6.7.2 查询过程114
6.7.3 数据标记与压缩数据块的对应关系114
6.8 本章小结116
第7章 MergeTree系列表引擎117
7.1 MergeTree117
7.1.1 数据TTL117
7.1.2 多路径存储策略121
7.2 ReplacingMergeTree128
7.3 SummingMergeTree130
7.4 AggregatingMergeTree134
7.5 CollapsingMergeTree137
7.6 VersionedCollapsingMergeTree140
7.7 各种MergeTree之间的关系总结141
7.7.1 继承关系141
7.7.2 组合关系143
7.8 本章小结144
第8章 其他常见类型表引擎145
8.1 外部存储类型145
8.1.1 HDFS145
8.1.2 MySQL149
8.1.3 JDBC150
8.1.4 Kafka152
8.1.5 File157
8.2 内存类型158
8.2.1 Memory159
8.2.2 Set159
8.2.3 Join160
8.2.4 Buffer162
8.3 日志类型164
8.3.1 TinyLog164
8.3.2 StripeLog165
8.3.3 Log166
8.4 接口类型167
8.4.1 Merge167
8.4.2 Dictionary168
8.4.3 Distributed169
8.5 其他类型170
8.5.1 Live View170
8.5.2 Null171
8.5.3 URL171
8.6 本章小结173
第9章 数据查询174
9.1 WITH子句175
9.2 FROM子句177
9.3 SAMPLE子句178
9.4 ARRAY JOIN子句180
9.5 JOIN子句183
9.5.1 连接精度184
9.5.2 连接类型186
9.5.3 多表连接189
9.5.4 注意事项190
9.6 WHERE与PREWHERE子句190
9.7 GROUP BY子句193
9.7.1 WITH ROLLUP194
9.7.2 WITH CUBE194
9.7.3 WITH TOTALS195
9.8 HAVING子句195
9.9 ORDER BY子句197
9.10 LIMIT BY子句198
9.11 LIMIT子句199
9.12 SELECT子句200
9.13 DISTINCT子句200
9.14 UNION ALL子句202
9.15 查看SQL执行计划203
9.16 本章小结207
第10章 副本与分片208
10.1 概述208
10.2 数据副本209
10.2.1 副本的特点212
10.2.2 ZooKeeper的配置方式212
10.2.3 副本的定义形式213
10.3 ReplicatedMergeTree原理解析214
10.3.1 数据结构215
10.3.2 副本协同的核心流程217
10.4 数据分片228
10.4.1 集群的配置方式228
10.4.2 基于集群实现分布式DDL232
10.5 Distributed原理解析236
10.5.1 定义形式236
10.5.2 查询的分类237
10.5.3 分片规则238
10.5.4 分布式写入的核心流程239
10.5.5 分布式查询的核心流程245
10.6 本章小结251
第11章 管理与运维252
11.1 用户配置252
11.1.1 用户profile252
11.1.2 配置约束253
11.1.3 用户定义254
11.2 权限管理257
11.2.1 访问权限257
11.2.2 查询权限258
11.2.3 数据行级权限259
11.3 熔断机制261
11.4 数据备份263
11.4.1 导出文件备份263
11.4.2 通过快照表备份264
11.4.3 按分区备份264
11.5 服务监控265
11.5.1 系统表266
11.5.2 查询日志267
11.6 本章小结270



---------------------------HikariCP数据库连接池实战---------------------------


赞誉
前言
第一篇 准备篇
第1章 阿里中间件实战,第一个案例 2
1.1 物联网MQTT单机压测130万参数调优 2
1.2 阿里中间件TCP四次挥手性能调优实战 4
1.2.1 亿级消息网关Rowan架构 4
1.2.2 人脸识别服务:异曲同工的架构 6
1.2.3 “双十一大促”全链路压测发现TCP问题 9
1.2.4 Linux内核网络参数调优 11
1.2.5 Linux TCP参数调优 12
1.2.6 一行代码大幅提升QPS 13
1.3 技术驱动业务,结果为导向 16
1.4 本章小结 17
第2章 数据库连接池江湖 19
2.1 为什么使用数据库连接池 19
2.2 数据库连接池原理 22
2.3 数据库连接池百晓生《兵器谱》 23
2.3.1 c3p0 24
2.3.2 Proxool 29
2.3.3 XAPool 30
2.3.4 DBCP 32
2.3.5 Tomcat JDBC Pool 34
2.3.6 BoneCP 36
2.3.7 Druid 38
2.4 主流数据库连接池对比 41
2.4.1 性能对比 41
2.4.2 代码复杂度 42
2.4.3 功能对比 42
2.4.4 数据库中断 43
2.5 本章小结 46
第3章 初识HikariCP 47
3.1 Hikari背景、特色及前景 47
3.2 SpringBoot数据库连接池加载顺序剖析 51
3.3 SpringBoot整合HikariCP实战 53
3.3.1 Spring Initializr 53
3.3.2 添加HikariCP依赖 55
3.3.3 JdbcTemplate 56
3.3.4 Database Initialization 57
3.3.5 启动运行 59
3.4 本章小结 60
第二篇 基础篇
第4章 HikariCP参数配置 64
4.1 校时 64
4.2 HikariCP配置手册 68
4.2.1 必需配置 69
4.2.2 非必需配置 72
4.3 HikariCP连接池配置多大合适 78
4.4 Fixed Pool Design思想 81
4.5 MySQL高性能配置 82
4.6 Hibernate配置 83
4.7 JNDI配置 85
4.8 本章小结 86
第5章 HikariCP与JDBC 87
5.1 HikariCP JDBC Logging 87
5.2 JDBC 90
5.2.1 JDBC定义 91
5.2.2 JDBC实战案例 93
5.2.3 JDBC剖析 95
5.2.4 PreparedStatement和Statement 100
5.3 JDBC与SPI 101
5.3.1 SPI简介 101
5.3.2 SPI实战案例 102
5.3.3 JDBC的SPI机制 104
5.3.4 SPI高级实战:基于Dubbo的分布式日志链路TraceID追踪 106
5.4 拓展:线程池技术 109
5.4.1 MySQL线程池简介 110
5.4.2 MySQL线程池技术内幕 111
5.4.3 MySQL线程池实战 114
5.5 本章小结 117
第三篇 原理篇
第6章 HikariCP性能揭秘 120
6.1 华山论剑 120
6.2 第三方测评 124
6.2.1 环境配置 125
6.2.2 获取关闭连接性能测试 125
6.2.3 查询一条语句性能测试 127
6.2.4 psCache性能对比 128
6.2.5 测试结论 129
6.3 HikariCP为什么这么快 129
6.3.1 精简字节码 130
6.3.2 FastList 132
6.3.3 ConcurrentBag 134
6.4 本章小结 147
第7章 HikariCP连接原理 148
7.1 获取连接 148
7.2 归还连接 155
7.3 关闭连接 158
7.4 生成连接 163
7.5 扩展阅读:DCL为什么要加volatile 166
7.6 扩展阅读:Log4j2为何性能优秀 169
7.7 本章小结 173
第8章 HikariCP参数源码解析 174
8.1 SpringBoot 2.x HikariCP参数加载原理 174
8.2 allowPoolSuspension 181
8.3 validationTimeout 187
8.4 leakDetectionThreshold 189
8.5 本章小结 202
第9章 HikariCP动态代理与字节码技术 203
9.1 HikariCP字节码工程 203
9.1.1 HikariCP的字节码技术 204
9.1.2 代理技术原理 209
9.1.3 HikariCP JIT方法内联优化 213
9.2 JMH基准测试 216
9.2.1 JMH常用注解 216
9.2.2 JMH实战案例Orika 219
9.3 本章小结 223
第四篇 实战篇
第10章 HikariCP监控实战 226
10.1 监控体系层次 226
10.2 为什么需要数据库连接池监控 228
10.3 HikariCP监控指标 231
10.3.1 hikaricp_pending_threads 233
10.3.2 hikaricp_connection_acquired_nanos 234
10.3.3 hikaricp_idle_connections 235
10.3.4 hikaricp_active_connections 235
10.3.5 hikaricp_connection_usage_millis 235
10.3.6 hikaricp_connection_timeout_total 235
10.3.7 hikaricp_connection_creation_millis 236
10.4 HikariCP监控指标实战 236
10.4.1 连接风暴 236
10.4.2 慢SQL 237
10.4.3 监控指标与参数配置 237
10.5 SpringBoot 2.0暴露HikariCP Metrics 238
10.6 SpringBoot 2.0监控HikariCP JMX 241
10.7 微服务架构下的监控平台选型 246
10.8 本章小结 250
第11章 从HikariCP Metrics谈微服务监控架构实战 252
11.1 HikariCP Metrics 253
11.2 Micrometer 258
11.3 SpringBoot 2.x自定义埋点实战 260
11.3.1 引入依赖 260
11.3.2 配置application.properties 261
11.3.3 注册Metrics 261
11.3.4 支付接口埋点统计总次数 262
11.3.5 查看指标数据 262
11.4 SpringBoot 2.x集成Micrometer源码解析 266
11.5 SpringBoot 1.5.x自定义埋点实战 269
11.5.1 引入Micrometer依赖 269
11.5.2 创建Bean并注册Metrics指标 270
11.5.3 在Controller中进行支付业务埋点 271
11.6 监控架构重点 272
11.6.1 Prometheus 272
11.6.2 Grafana 275
11.7 本章小结 278
第12章 HikariCP扩展技术 280
12.1 Flexy-Pool 280
12.2 Apache ShardingSphere 284
12.3 自研集成HikariCP和Sharding-JDBC数据库中间件 295
12.4 时钟回拨 300
12.5 本章小结 311
第13章 HikariCP常见问题 312
13.1 HikariCP故障分析技巧 312
13.2 leakDetectionThreshold参数解决Spark/Scala连接池泄露 318
13.3 详解JDBC超时 320
13.4 快速恢复 323
13.5 Oracle Connection Reset问题 327
13.6 HikariCP关闭连接的5种情况 329
13.7 如何获取HikariDataSource的active connection 330
13.8 如何对HikariCP配置文件中的服务器名、用户名、密码加密 330
13.9 HikariCP神奇的配置dataSourceProperties 330
13.10 如何获取HikariCP连接池中的原始连接 332
13.11 HikariCP并不是万能工具 332
13.12 本章小结 333
第14章 HikariCP诡案实录 334
14.1 问题描述 334
14.2 Brett经典回答 336
14.3 另一个类似的案例 337
14.4 分析问题 338
14.5 解决问题 344
14.6 本章小结 344



有问题微信扫码联系

推荐

Understand China
桂ICP备20004708号-4