赣州新闻网

首页 / 科技

Kafka 的这些原理你懂吗

2020-02-09 · 赣州新闻网 · 科技

深度 | 读PolarDB论文有感 : 异构计算和数据库软硬一体化设计

作者简介:

作者:熊中哲,现任才云科技工程VP,负责产品和研发工作。曾就职于阿里巴巴、沃趣科技、美团。超过12年数据库领域的工作经历,目前对云原生,机a 2 Q s r M % B器学习和异构计N . 1 X Ccle DBA都对“log file sync”和“log parallel wirte”~ 0 V两个等待事件极为熟悉,基于实践“log file sync”延时超过3ms,访问数据库的应用就会觉得”慢“。固态盘(SSD)简单粗暴的大幅度降低loS H , k @ d }g写入延时。当时写入放大(Write Amplifi8 L a *cation,简称WA)和垃圾回收(Garbage Collection,简称GC)的问题还比较明显,甚至连SSD写入寿命的监控接口都还没有$ l n n Q D,但是大家b : i p K w H w 都意识到对于数据库而言这是p ` 3革命性的技术! 7 Q O ] *变革。也有人早早做出判断SSD是最近10年数据库(当时多指关系型数据库)领域最大的技术革命。


这个阶段的明显特点就是”拿来主义“。Infiniband 和 SSD并不需要针对数据库做优化就可以获得显著收益。

简单定制

任何软件技术都很难脱离硬件技术凭空臆想,关系型数据库理论诞生I r v - 4 I ^于60年a H c a f 4 M Y t代末70年代初,其设计思路受限于当时的磁盘技术。


仅以 MySQL 数据持久化中的一个场景展开。MySQL 实例会将内存中的脏数据(被修改过)以数据页为单位写入磁盘持久化。一s ! ~ T n个数据页的大小是16KB,假设写入2KB时服务器异常掉电,这时数据页的前2KB已被更新,剩下的14KB还未被更新,那么该数据页因为部分写(parti3 2 ] :al write)问题被写坏。而 MySQL rej | g N X F gdo log 不能修复此类坏数据页,导致数据丢失。


受限于机械磁盘只能提供512B的原子写(Atomic Write),Innodb Engk 9 j ~ine 通过 Double Write 机制解决该问题,副作用也很明显,不仅增加存储引擎代码复杂度,也引入额外的磁盘写入 d b A Z .压力,让宝贵的存储资源(IOPS)更加紧张。


如果MySQL依赖的9 V h存储介质可以提供可配置写入大小的原子写(Atomic Write),可以直接关闭Double Write,这会在以下几个方面带来巨大收益:

  • 直接提升TPS,以 MariaDB(MySQL 分支) 为例.关闭 Double Write 能带来30%左右的提升,如下图所示:
深度 | 读PolarDB论文有感 : 异构计算和数据库软硬一体化设计


  • 简化写入链路也间接优化实4 _ E i o R例恢复逻辑,: 0 ; l f } $ Z下推(pushdown)到具有计算能力(基于FPGA)的存储介质,论文中又叫近存储计算(Compu% a x o 4 u = gtan C . : Y u n Stional Storage),如下图所示:

    深度 | 读PolarDB论文有感 : 异构计算和数据库软硬一体化设计


    更多细节请移步论文《POLARDB Meets Computational Storage: Efficiently Support Analytical Workloads in Cloud-Nati/ g ) x / ,ve Relational Database》。Scaleflux 首席科学家张彤教授也在FAST 2020上做了专题演讲,感兴趣的# @ m 6 %读者也应该一并阅读。


    表扫描(Table scan)下推对 MySQL DBA并不陌生,MySQL 5.6 推出 Index Condition Pushdown(简称ICP)特性。未启用ICP特性时,会按照第一个索引条件列到存储引擎查找数据,并把5 8 8 $ r F整行数据提取到实例层,实例层再X 3 q c @ { H c `根据Where后其他的条件过滤数据行。启用ICP特性, @ H @ D U p 9后,如果Where条件中同时包含检索列和过滤列,且这些列上创建了一个多列索引的情况下,那么实例层会把这些过滤列同时下推到存储引擎层,在存储引擎层过滤掉不满足的数据,只读取并返回需要的数据,减少存储引擎层和实例层之间的数据传输和回表请求,通常情况下可以大幅提升查询效率。下图可以很直观的看到ICP启用前后的数据链路:

    • 关闭 ICP
    深度 | 读PolarDB论文有感 : 异构计算和数据库软硬一体化设计

    • 启用 ICP
    深度 | 读PolarDB论文有感 : 异构计算和数据库软硬一体化设计

    试想,如果把类似“Index Condition Pushdown”的工作下推(pushdown)给具备计算能力的存* J 0 & / 7储介质,会不会得到类似P M i :OLARDB的收益呢?

    在过去,只有Oracle才具备软硬一体化设计的实力。Exadata 无疑是一体化设计的先驱,其吸纳大量”异构“硬件,其在10年前就引入PCIe SSD(又叫H j D Flash),还在 X4 版本推出基于PCIe SSD的”透明“压缩(Exadata Flash Cache Compression),试图在易用、成本和性能三者之中找到完美平衡,功能描述如下:

    Flash cache compressioJ & Y rn dynamically increases the logical capacity of the flash cache by transparently cx ] | Compressing user data as it is loaded into the flash cache. This allows much more data to be kept in flash, and decreases the need to access data on disk drives.

    虽然该特性既不足够透明也不便宜,但足见其软硬通吃的野心。

    开始的结束

    历经50年的发展,海量的公司和研发K g 5在关系型数据库上构建无数的关键应用,朝夕相处让他们对数据库的痛点如数家X G j B h 4珍,而这些痛点在传递到硬件厂商的过程中严重衰减,即便融合也是极少数巨头秘而不宣的独门秘籍。POLARDB无疑在异构计算和数据库搭建一座更多人可以经过的桥梁,Q G ` J借用丘吉尔的名言,相信这仅仅只是”开始的L a u l } W ` G结束“。

    Now this is not the end. it is not even the beginning of the end. but it is peh - jrhaps the enn M G Y . / )d of the beginning。

发展工作文章请求接口交易能力于都原理