Mr Dk.

Results 159 comments of Mr Dk.

# 8. CTE-Based Optimizations ## 8.1 CTE-Generating Transformations 在一些查询中,隐式使用了 CTE,从而避免了中间结果的重复计算: ```sql SELECT COUNT(DISTINCT cs item sk), AVG(DISTINCT cs qty) FROM catalog sales WHERE cs net profit > 1000; ``` 由于分组聚合需要重复做,可以暂时物化分组的输入,避免表扫描重复执行:...

# 9. Execution 在 MPP 数据库中,查询计划的不同部分可以在不同的进程中执行,进程可以在同一个 host 中,也可以在不同 host 中。在 Orca 优化器输出的执行计划里,保证 CTEConsumer 向 **同一个 host** 下的 CTEProducer (可能是同一个进程,也可能是不同进程) 读取元组。换句话说,保证 CTEConsumer 与 CTEProducer 之间的通信不走网络。网络应该只能通过 Motion 算子完成。 一般来说,CTEProducer 对应多个 CTEConsumer,执行引擎允许它们在同一个进程中被执行,也允许它们在不同进程中被执行。当涉及多进程时,执行引擎提供同步机制,确保 consumer...

## 数据分析解决方案面临的挑战 MySQL 是为 OLTP 业务设计的,而不是 OLAP。如果要进行数据分析,势必需要把 MySQL 中的数据移动到其它数据库中去。这个过程中带来的复杂问题有: - 数据提取的复杂性 - 数据传输的安全性 - 手动维护两份数据一致性的工作 - 管理多个数据库的额外开销

## 部署场景 HeatWave 是一个云上全托管的数据库服务,提供了一个内存分析引擎,使用户可以对存放在 MySQL 中的数据进行直接分析,不需要做额外的 **ETL (Extract, Tranform, Load)**。可以使数据分析更快、更便宜。用户只需要启用 HeatWave 服务,就可以无缝进行 OLAP 和机器学习的任务。 一个 MySQL HeatWave 实例是一个集群,包含: - MySQL 实例 - 多个 HeatWave 节点 当启用 HeatWave 服务时,HeatWave 服务就会在 MySQL...

## HeatWave 架构 HeatWave 架构的五个核心要素: 1. 内存 HCC 分析引擎,并实现了最先进的算法 2. 为 Oracle Cloud Infrastructure(OCI)做了优化 3. 数据可暂存在 OCI 的对象存储上,使系统重启或错误恢复时间加快,并且可以方便地实现节点规模的水平扩展 4. MySQL Autopilot 通过机器学习来管理运维 HeatWave 5. HeatWave ML 提供了类 MySQL 接口来使用机器学习的功能 HeatWave...

# 32.1 Interacting with PostgreSQL ## 32.1.1 Interactive Terminal Interfaces PostgreSQL 内置提供了 **psql** 作为命令行工具,是用户能够与 PostgreSQL 进行交互: - 与 shell 类似,支持变量替换 - SQL 中可以使用冒号 dereference psql 变量 - psql 使用 GNU...

# 32.2 System Architecture **多进程** 架构。**PostMaster** 是中央协调进程,负责系统初始化: - 共享内存分配 - 后台进程启动 也负责系统关闭。另外,还管理与客户端的连接:为每一个新连接的客户端分配一个 backend server 进程。因此 postmaster 进程需要不断监听端口。PostgreSQL 是一个 process-per-connection 模型。 除了 postmaster 和负责对接客户端的 backend server 进程以外,PostgreSQL 还有一些后台工作进程: - Background writter:周期性地将...

# 32.3 Storage and Indexing PostgreSQL 依赖于文件系统的文件作为存储,而不是直接使用物理磁盘分区上的 raw 数据。PostgreSQL 维护了一堆 **目录** 用于存放文件,这些目录被称为 **tablespace**。每个 PostgreSQL 安装完都会被初始化一个 default tablespace。 这种存储系统的设计导致了一些性能局限 - double buffering。文件块首先被操作系统读取到内核空间的文件系统缓存中,然后再被拷贝到 PostgreSQL 共享内存的 buffer pool 中。另一个局限是 PostgreSQL 的 block 是...

# 32.4 Query Processing and Optimization ## 32.4.1 Query Rewrite 规则重写。比如视图,将会根据视图定义把视图查询转换为 select 查询。规则全部被保存在 catalog 中。重写首先处理 update/delete/insert,最终处理 select。可能需要重复或递归处理,直到没有任何规则可以被应用为止。 ## 32.4.2 Query Planning and Optimization 每一个 block 都被视为一个隔离的部分产生 plan,顺序为从底向上,从重写后的计划的最里面的子查询开始进行。PG 的优化器大部分是基于代价的,代价模型的输入为 I/O 开销和...

# 32.5 Transaction Management in PostgreSQL PostgreSQL 的事务管理同时使用以下两种协议: - 对于 DML 使用 *快照隔离 (snapshot isolation)* - 对于 DDL 使用 *两阶段锁定 (two-phase locking)* ## 32.5.1 Concurrency Control ### 32.5.1.1 Isolation Levels...