新書推薦:
《
不挨饿快速瘦的减脂餐
》
售價:NT$
305.0
《
形而上学与存在论之间:费希特知识学研究(守望者)(德国古典哲学研究译丛)
》
售價:NT$
504.0
《
卫宫家今天的饭9 附画集特装版(含漫画1本+画集1本+卫宫士郎购物清单2张+特制相卡1张)
》
售價:NT$
602.0
《
化妆品学原理
》
售價:NT$
254.0
《
万千教育学前·与幼儿一起解决问题:捕捉幼儿园一日生活中的教育契机
》
售價:NT$
214.0
《
爱你,是我做过最好的事
》
售價:NT$
254.0
《
史铁生:听风八百遍,才知是人间(2)
》
售價:NT$
254.0
《
量子网络的构建与应用
》
售價:NT$
500.0
|
編輯推薦: |
Database In-Memory是Oracle内存计算技术家族中的核心成员,也是Oracle数据库企业版重要的数据库选件之一。Database In-Memory通过独有的双格式数据库架构及一系列内存计算软硬件技术的结合,可以使传统的运营系统即刻开启HTAP(混合事务/分析处理)能力,或者为传统的数据仓库系统提供实时分析的能力。《Oracle Database In-Memory架构与实践》全面深入介绍Database In-Memory 架构和技术,涵盖了从12.1.0.2版本Database In-Memory 诞生到2021年8月发布的21c版本之间所有重要的Database In-Memory 特性。
《Oracle Database In-Memory架构与实践》面向对Oracle数据库和内存计算技术感兴趣的读者,适合的对象包括企业架构师、数据库管理员、数据分析师和应用开发人员,不仅是读者全面学习Database In-Memory 内存计算技术的入门指南,同时也是深入了解Oracle Database In-Memory 的极有价值的参考书籍。
|
內容簡介: |
Database In-Memory是Oracle内存计算技术家族中的核心成员,也是Oracle数据库企业版重要的数据库选件之一。Database In-Memory通过独有的双格式数据库架构及一系列内存计算软硬件技术的结合,可以使传统的运营系统即刻开启HTAP(混合事务/分析处理)能力,或者为传统的数据仓库系统提供实时分析的能力。《Oracle Database In-Memory架构与实践》全面深入介绍Database In-Memory 架构和技术,涵盖了从12.1.0.2版本Database In-Memory 诞生到2021年8月**发布的21c版本之间所有重要的Database In-Memory 特性。 《Oracle Database In-Memory架构与实践》面向对Oracle数据库和内存计算技术感兴趣的读者,适合的对象包括企业架构师、数据库管理员、数据分析师和应用开发人员,不仅是读者全面学习Database In-Memory 内存计算技术的入门指南,同时也是深入了解Oracle Database In-Memory 的极有价值的参考书籍。
|
目錄:
|
第1章 内存计算概述 1
1.1 内存计算的兴起 1
1.1.1 硬件的发展 2
1.1.2 软件的发展 3
1.1.3 企业应用的需求 4
1.2 内存计算技术分类 5
1.2.1 内存数据库 5
1.2.2 内存数据网格 6
1.3 典型内存数据管理产品 7
1.3.1 Oracle TimesTen 7
1.3.2 Oracle Database In-Memory 9
1.3.3 MySQL HeatWave 11
1.3.4 Oracle Coherence 13
1.3.5 SAP HANA 15
1.3.6 Redis 17
第2章 搭建Database In-Memory实验环境 20
2.1 虚拟化引擎Oracle VM VirtualBox 21
2.2 版本控制系统Git 23
2.3 虚拟机环境管理工具Vagrant 23
2.4 安装示例表与数据 26
2.4.1 随书示例 26
2.4.2 Star Schema Benchmark示例 27
2.4.3 Oracle数据库标准示例 30
2.4.4 TPC-H基准示例 30
2.5 命令行编辑工具rlwrap 31
2.6 数据库开发与管理工具SQL Developer 32
2.6.1 Windows下的SQL Developer安装 32
2.6.2 Linux下的SQL Developer安装 33
2.6.3 使用SQL Developer连接数据库 33
2.7 Database In-Memory学习资源 35
2.7.1 文档资源 35
2.7.2 Database In-Memory官方博客 36
2.7.3 动手实验资源 36
2.7.4 My Oracle Support 37
2.7.5 视频学习资源 39
第3章 Database In-Memory基本概念与架构 40
3.1 Oracle数据库基本概念 40
3.1.1 Oracle数据库版本简介 40
3.1.2 Oracle数据库企业版选件 42
3.1.3 数据库管理包 43
3.1.4 数据库版本号 44
3.1.5 数据库升级与更新 44
3.2 Database In-Memory体系架构 48
3.2.1 双格式存储 48
3.2.2 Oracle数据库内存结构与管理 49
3.2.3 Database In-Memory架构 51
3.2.4 内存压缩单元架构 52
3.3 Exadata作为Database In-Memory平台 53
3.4 何时使用Database In-Memory 55
3.4.1 Database In-Memory适用场景 55
3.4.2 分析型查询与应用的考虑 56
第4章 Database In-Memory配置与发布 58
4.1 配置与发布基本流程 58
4.2 启用Database In-Memory 58
4.2.1 In-Memory Area初始设置 58
4.2.2 多租户下的In-Memory Area设置 60
4.2.3 调整In-Memory Area大小 61
4.2.4 Base Level特性 62
4.2.5 常见错误与处理 63
4.3 指定Database In-Memory对象 65
4.3.1 哪些对象可以发布到内存列式存储 65
4.3.2 开启和关闭INMEMORY属性 65
4.4 发布INMEMORY对象 67
4.4.1 确认对象已发布 67
4.4.2 发布优先级与自动发布 69
4.4.3 通过查询手工发布 71
4.4.4 通过PL/SQL子程序手工发布 71
4.4.5 通过初始化参数控制发布 76
4.5 重新发布 76
4.6 发布进程与发布速度 79
4.7 指定内存压缩级别 82
4.8 内存列式存储与行式存储映射 84
4.9 移除数据库对象 91
4.10 禁用Database In-Memory 93
第5章 Database In-Memory管理工具 96
5.1 SQL Developer 96
5.2 Oracle Enterprise Manager 97
5.2.1 In-Memory Central 98
5.2.2 SQL性能分析器 101
5.3 命令行管理工具 103
5.3.1 SQL Plus 103
5.3.2 SQLcl 107
5.3.3 Data Pump 112
5.4 统计信息与执行计划 113
5.4.1 优化器统计信息 113
5.4.2 SQL执行统计信息 115
5.4.3 解读执行计划 117
5.4.4 生成和显示执行计划 118
5.5 Oracle数据库建议器 121
5.5.1 In-Memory建议器 121
5.5.2 压缩建议器 126
5.6 实时SQL监控 128
5.7 Database In-Memory初始化参数 132
5.8 Database In-Memory视图 134
5.8.1 数据字典视图 134
5.8.2 动态性能视图 135
5.8.3 In-Memory视图使用示例 137
5.9 优化器提示 140
第6章 Database In-Memory基础性能优化 142
6.1 列格式组织 142
6.2 内存存储索引 145
6.3 SIMD向量处理 148
6.4 数据压缩 152
6.4.1 行级压缩 152
6.4.2 混合列压缩 157
6.4.3 内存列压缩 160
6.5 操作下推 168
6.5.1 过滤谓词下推 169
6.5.2 聚合下推 170
6.5.3 下推与内存存储索引 173
6.6 In-Memory联结 173
6.6.1 联结方法 173
6.6.2 In-Memory联结与布隆过滤器 175
6.6.3 部分表发布时的In-Memory联结 183
6.7 In-Memory聚合 184
6.7.1 In-Memory聚合基本概念 184
6.7.2 In-Memory聚合性能比较 186
6.8 索引优化 191
第7章 Database In-Memory高级性能优化 194
7.1 In-Memory表达式 194
7.1.1 In-Memory虚拟列 194
7.1.2 In-Memory Expression 198
7.2 In-Memory联结优化 203
7.2.1 联结组(Join Group) 203
7.2.2 In-Memory深度向量化 208
7.3 In-Memory数据类型优化 210
7.3.1 In-Memory JSON列 210
7.3.2 In-Memory优化运算 216
7.3.3 In-Memory全文本列 218
7.3.4 In-Memory Spatial支持 222
7.4 In-Memory扫描优化 226
7.4.1 In-Memory动态扫描 226
7.4.2 In-Memory混合扫描 229
第8章 Database In-Memory与高可用性 233
8.1 Oracle可用性架构 233
8.2 Database In-Memory与RAC 235
8.2.1 利用OCI搭建RAC实验环境 235
8.2.2 利用Vagrant搭建RAC实验环境 237
8.2.3 In-Memory数据分布 243
8.2.4 In-Memory复制 250
8.2.5 In-Memory与并行执行 252
8.2.6 In-Memory与实例子集发布 257
8.2.7 实例失效时的In-Memory重新发布 266
8.3 Database In-Memory与ADG 270
8.3.1 利用OCI搭建ADG实验环境 270
8.3.2 利用Vagrant搭建ADG实验环境 272
8.3.3 ADG基本概念与Database In-Memory参数 275
8.3.4 ADG常用管理和监控命令 276
8.3.5 主备数据库发布相同的对象 279
8.3.6 仅在备数据库发布对象 280
8.3.7 主备数据库发布不同的对象 282
8.3.8 Database In-Memory与ADG主备切换 289
8.4 In-Memory FastStart 293
第9章 Database In-Memory与可管理性 296
9.1 In-Memory自动数据优化 296
9.1.1 自动数据优化基本概念 296
9.1.2 In-Memory自动数据优化 300
9.2 Automatic In-Memory 307
9.2.1 自动In-Memory管理 308
9.2.2 自治In-Memory管理 311
9.3 Database In-Memory与分区 314
9.3.1 分区发布 315
9.3.2 分区裁剪 316
9.3.3 智能分区联结 317
9.3.4 分区交换 319
第10章 Database In-Memory与大数据 322
10.1 Database In-Memory与外部表 322
10.1.1 外部表基本概念 322
10.1.2 In-Memory普通外部表 324
10.1.3 In-Memory分区外部表 333
10.1.4 In-Memory混合分区表 336
10.2 内存优化行存储 338
10.2.1 行存储快速查询 338
10.2.2 行存储快速摄入 342
10.3 Exadata In-Memory列格式支持 345
10.3.1 In-Memory列式缓存基本操作 346
10.3.2 RAC环境下的In-Memory列式缓存 349
10.3.3 In-Memory列式缓存性能比较 351
|
內容試閱:
|
2015年,由于项目的原因,我逐渐开始关注内存计算技术。2017年,我出版了本关于内存计算的书:《TimesTen内存数据库架构与实践》。实际上,Oracle内存计算技术家族还有另一个重要的成员:Database In-Memory。2018年底,在与某物流客户的联合测试中,我次亲身体验了Database In-Memory的易用性,用户启用Database In-Memory实现了查询提速108倍,而应用和查询未做任何修改。2020年初,Oracle中国公司推出了Oracle 19c公益课堂,通过网络为公众介绍Oracle产品和技术。在批拟定的课程主题中,我终选择了Database In-Memory。经过一个多月的精心准备,阅读了大量产品手册、白皮书、博客文章、网络视频与论文,也做了大量的实验。公开课吸引了超过500人参加,课后我在甲骨文云计算公众号上发表了文章“加速度:走进Oracle Database In-Memory”,作为课程的文字版,同时也作为这一个月来学习的总结。2020年底,我开始有了出书的想法,希望可以完整和系统地介绍Database In-Memory。目前市面上仅有的一本介绍Database In-Memory 的书是基于Oracle 12cR2版本的,由Oracle Press于2017年出版。Database In-Memory在12cR2版本之后又发布了很多新特性,所以我觉得一些理论可以更深入展开,也可以增加动手操作的内容,以加深对此项技术的理解。相信我学习Database In-Memory的这些心得体会、经验与教训是值得与大家分享的,我想做的正如我非常喜欢的散文家王鼎钧所说:“我一边赤脚行走,一边把什么地方有荆棘、什么地方有甘泉写下来,放在路旁让后面走过来的人拾去看看”。简而言之,我为什么写这《Oracle Database In-Memory架构与实践》?一是觉得Database In-Memory值得写,二是我有信心能把它写好。
《Oracle Database In-Memory架构与实践》适用于不同类型的读者。如果你是数据库管理员,可以通过此书了解内存计算的基本概念、Database In-Memory 的体系架构和内部运行机制、监控与调优。如果你是架构师,可以了解如何利用新型内存计算技术简化整体架构设计,将Database In-Memory 应用于企业级混合负载业务系统或数据仓库系统,助力构建实时企业。如果你是应用开发人员,可以学习如何充分利用数据库自身的能力,简化应用开发,聚焦于真正创造业务价值的核心问题。
希望《Oracle Database In-Memory架构与实践》能帮助读者编写出更高效的应用,设计出更敏捷的架构。阅读《Oracle Database In-Memory架构与实践》的先决条件是对关系型数据库有基础了解。如果读者具备Oracle数据库管理、关系型数据库应用开发或系统架构设计能力中的一种,或对其他类型的内存数据库有所了解,对于理解《Oracle Database In-Memory架构与实践》内容也将大有裨益。
第1章首先介绍了内存计算技术的发展历史以及推动其发展的软硬件技术和新型企业应用需求,对内存计算技术的概念及分类进行了阐述。后对当前主流的内存数据管理产品做了简要介绍,包括商业和开源领域的内存数据库和内存数据网格产品。
第2章介绍如何搭建Database In-Memory实验环境,包括安装虚拟化引擎VirtualBox、虚拟机环境管理工具Vagrant、下载随书示例、安装示例表和生成并导入测试数据,后续章节中的示例和概念讲解均基于此实验环境展开。接下来介绍了便于开发和测试的管理工具SQL Developer及命令行编辑工具rlwrap。后介绍了Database In-Memory相关的学习资源,包括文档、博客、视频和动手实验资源等。
Database In-Memory是Oracle数据库企业版的选件之一。如果说Database In-Memory 是一片树叶,Oracle数据库则是一棵参天大树。在探索树叶的脉络之前,对这棵大树有一全局的概念是非常必要的。因此第3章首先对Oracle数据库相关的重要基本概念做了简要介绍,包括数据库版本和版本号、选件和管理包体系以及升级和更新的概念。重点介绍了Database In-Memory 中核心的概念,包括行列双格式存储、数据库内存管理、Database In-Memory架构和内存压缩单元架构。
第4章介绍了两个重要的Database In-Memory操作:配置与发布。配置部分包括如何为数据库启用和禁用Database In-Memory,如何开启和关闭数据库对象的INMEMORY属性,如何指定INMEMORY对象的压缩级别和发布优先级。发布方面则涉及发布的基本概念和工作原理、不同的发布方式和发布对象与过程的监控等。
第5章全面介绍了与Database In-Memory相关的管理工具。首先介绍了一些传统的图形化和命令行管理工具,如SQL Developer、Oracle Enterprise Manager、SQL Plus和SQLcl。然后介绍了如何生成优化器统计信息和SQL 执行统计信息,以及生成、显示和解读执行计划,这些概念对于理解Database In-Memory的执行都是非常重要的。Oracle数据库建议器部分介绍了In-Memory建议器和压缩建议器,并解答了两个常见问题,即哪些数据库对象适合使用Database In-Memory,以及如何估算不同压缩级别对于内存的消耗。本章后介绍了用于控制Database In-Memory行为的初始化参数和优化器提示,以及监控Database In-Memory状态的系统视图。
第6章介绍了Database In-Memory基础同时也是核心的性能优化技术,包括内存列式存储格式、压缩、存储索引和SIMD向量处理。然后介绍了操作下推的概念及Database In-Memory所支持的各类下推操作。后介绍了优化器在改进分析查询上的两类增强:In-Memory联结和In-Memory聚合。本章介绍的技术、概念和算法是Database In-Memory提供极速分析性能的关键,也充分体现了Oracle在数据库软件领域的长期和深厚积累。
第7章介绍了Database In-Memory高级性能优化功能,包括通过预计算实现性能提升的In-Memory表达式,通过全局字典避免解压缩和哈希计算的联结组,通过与SIMD指令紧密配合实现的In-Memory深度向量化,针对JSON、NUMBER、全文本和地理空间多种数据类型的优化,以及结合多线程和并行处理等技术实现的In-Memory扫描优化。
高可用性是关键业务系统重要的非功能性需求之一。第8章首先介绍了Oracle可用性架构,然后详细介绍了Database In-Memory如何与RAC集群环境结合,包括数据的分布、复制和数据库服务等重要概念。接下来介绍了Database In-Memory与ADG灾备组件紧密集成的多种场景,以及如何利用数据库服务实现Database In-Memory与灾备角色的绑定。后介绍了FastStart,这是可以在数据库启动时加速内存列式数据发布的功能。
第9章介绍了Database In-Memory与数据可管理性相关的一些功能。首先介绍了自动数据优化,可以将内存列式存储作为新的数据层级,根据制定的策略自动将对象发布到或移出内存列式存储。然后介绍了Automatic In-Memory,可以在内存不足时自动移除“冷”对象,以保证“热”对象的发布;在的21c版本中,即使未设置INMEMORY属性的数据库对象也可以通过其进行管理。
大数据有数据量大、数据类型多、产生速度快3个主要特征。第10章主要关注Database In-Memory与大数据的“量”和“速”的结合。本章首先介绍了Database In-Memory如何与多种形式的外部表协同工作,然后介绍了内存优化行存储。后介绍了Exadata对In-Memory列格式的支持,此功能将Database In-Memory的好处延伸到Exadata存储层的大容量闪存,同时可以保证良好的性能。
《Oracle Database In-Memory架构与实践》的一大特色是理论与动手实践相结合,在计算机旁阅读此书是的方式,这样可以对书中的概念进行验证和探索。全书附带大量脚本和代码,以加深读者对产品特性和基本概念的理解,所有脚本和代码均按章节组织,可以扫描文末二维码自助下载。
衷心感谢我的朋友和同事们在出书过程中给予的帮助与指导,感谢家人对我写作的支持。感谢清华大学出版社的王芳编辑,尽管未曾谋面,但这已经是我们配合的第3本书。感谢Oracle公司的同事Joyce Li、叶大海、段辉、朱俊峰、孙骏,Database In-Memory 产品经理Andy Rivenes,Database In-Memory高级开发经理Gong Weiwei,以及SAP中国公司的Jennifer Jia和Long Sheng,感谢你们通过Oracle内部论坛、电话、邮件及现场对我提出问题的耐心指导和答疑。感谢海信集团IT与数据管理部总经理许敏、副总经理袁俊卿、基础架构及云服务部部长曲栋,网鼎明天科技有限公司的李兆,在Oracle届Database In-Memory高峰会议上无私分享了海信在SAP核心系统使用Database In-Memory的经验和教训,这些来自用户视角的不同观点也给予了我新的启发,并融入《Oracle Database In-Memory架构与实践》的内容当中。后,我想对我的父母说,这本书是献给你们的,感谢你们从小培养了我阅读和思考的习惯,给予我克服困难的勇气和动力,谢谢你们!
萧 宇
2021年9月
代码脚本下载
|
|