锁粒度
较大粒度可减少锁管理元数据,但可能扩大冲突范围;短事务不等于低冲突
内存布局、并发恢复和异构执行需要协同设计
完成本节后,你应该能够
同一 ORDER 表可以用不同布局服务事务、分析和追加
行存储与列存储是典型适配,具体结构取决于负载;行组属于列存储,是可增长的组织单元
行处理、列处理、向量化和实时编译分别摊薄不同的重复开销
等价算法的硬件代价可能不同
| 技术 | 关注的硬件问题 | 直观收益 |
|---|---|---|
| CSB+ 树 | 按 Cache line 连续组织节点组,减少指针和地址跳转 | 缓存友好的索引访问 |
| Radix 哈希连接 | 分区后让哈希表更接近 Cache 容量,减少 Cache 和 TLB 失效 | 分区探测局部性更好;付出分区时间和空间 |
| NUMA-aware 排序合并 | 先在节点内局部排序,再处理跨节点归并 | 减少远程访问;仍需承担归并协调 |
硬件敏感算法通过布局、分区和归并改善局部性;收益取决于数据规模、带宽和跨节点竞争
锁粒度、乐观并发控制、无锁结构和快照隔离分别改变协调方式
较大粒度可减少锁管理元数据,但可能扩大冲突范围;短事务不等于低冲突
乐观并发控制在低冲突负载下可减少等待;提交检查失败时需要重试或回滚
无锁结构用原子操作降低锁竞争,但仍需处理同步、可见性和内存回收成本
快照隔离为 OLAP 只读查询提供一致视图;它是并发隔离机制,不是恢复快照
当订单更新与长分析共享数据时,需要同时判断冲突范围、读视图、提交检查和资源占用
快照隔离处理并发读视图;恢复根据日志和检查点重建可用状态
并行恢复可以缩短等待,但持久性写入、检查点、重做顺序和并行协调仍有代价
三种方案是并列的架构选择,适用条件取决于负载、迁移成本和硬件边界
| 方案 | 基础边界 | 迁移/同步代价 | 适用条件与限制 |
|---|---|---|---|
| 混合加速引擎 | 在传统系统旁增加内存行/列路径 | 接口复用;仍有副本、转换和资源竞争 | 适合渐进升级;仍需隔离事务与分析 |
| 独立内存数据库 | 重做存储、索引和执行底层 | 迁移与运维边界较大 | 适合愿意重做系统的低延迟事务或分析 |
| GPU 数据库 | CPU 与 GPU 异构执行 | 需要承担数据传输、恢复和控制流成本 | 适合规则、大批量、计算密集型分析 |
判断路线时,要看数据放在哪里、各引擎执行什么,以及迁移和同步的代价
混合引擎保留已有订单系统接口,可增加内存行/列路径;副本同步和资源隔离仍有代价
独立系统适合事务与分析都要求低延迟且愿意重做布局、索引和恢复的场景;迁移与运维边界更大
区域销售汇总等规则、大批量的分析适合 GPU;数据传输、控制流和恢复路径必须可控
方案选择取决于负载、数据规模、迁移成本和 CPU/GPU 边界,三类方案是并列路线
硬件机会需要数据库重新设计存储、执行和恢复,统一引擎并非必然结果
DRAM 与 NVM 按访问频率、容量、成本和持久性分工;数据放置本身有代价
CPU、GPU、FPGA 等处理器按算子和并行度分工;并非所有查询都适合加速
PCIe、RDMA、NVLink 等可降低传输代价,但不能消除数据移动、同步和恢复问题
异构数据库仍需同时优化数据放置、查询执行、恢复和资源调度
行列布局、数据可见性和资源隔离共同决定 HTAP 的实现边界
事务行存与分析列存可以并存或转换;行列适配是典型路线,不是 HTAP 的唯一形式
日志、副本、提交语义和查询调度共同决定分析何时看到最新事实
长分析不能挤占短事务;CPU/GPU 调度能缓解冲突,但不保证零延迟
HTAP 的实现需要在存储、可见性和资源隔离之间做取舍,不保证单一物理存储、始终读取最新数据或自动消除资源竞争
性能取决于硬件敏感优化,故障恢复取决于恢复设计,方案选择受迁移和负载边界约束
行列布局与行组的选择取决于负载和增长方式
列处理、向量化和实时编译降低重复执行与 Cache 访问代价
并发控制、日志、检查点、热点优先和并行恢复共同决定故障后的恢复路径
混合、独立和 GPU 方案都要处理 HTAP 的同步与资源隔离
性能优化和恢复设计必须同时考虑;方案选择还要看局部性、负载边界和迁移成本