怎样让数据库再快一点?
本文来源:微信公众号:腾讯云数据库
原文地址:;mid=2247488667 --tt-darkmode-bgcolor: #131313;">作者 张鹏义 , 腾讯云数据库高级工程师 , 曾参与华为Taurus分布式数据研发及腾讯CynosDB for PG研发工作 , 现从事腾讯云Redis数据库研发工作 。
存储体系结构
回顾一下计算机的存储体系结构 。 正如下图所示 , 计算机存储设备根据访问速度及容量等形成了一个金字塔形的层次结构 。 在这个层次结构中 , 从上到下 , 设备的访问时延越来越大 , 容量也越来越大 , 而每字节的造价也越来越便宜 。 在这个层次结构中 , 每一层都被看作是其下一层次的缓存 。
文章插图
同时在这个层次结构中存在一个明显的分界线 , 如图中绿色的虚线 。 在分界线以上都是易失性的设备 , 掉电数据丢失 , CPU通过load/store指令访问存储设备 , 即数据直接以cache line(64 byte)的粒度从寄存器中copy到存储设备中 , 或者从存储设备中copy到寄存器 。 而分界线以下都是可持久化的存储设备 , 通过向I/O控制器发送命令 , 以block的粒度将数据换入换出到DRAM中 , 然后才能直接被CPU访问 。
随着近互联网的发展 , 数据密集型应用已然成为主流 , 其主要特点表现为数据容量大 , 对数据分析的实时性及数据存储的高效性提出了更高的要求 , 以spark、redis为代表的基于内存的数据分析与存储系统广受欢迎 。
但是DRAM的容量受限于晶体管-电容式(1T1C)单元的密度 , 以及难以扩展的动态刷新(refresh)操作 , DRAM的容量没办法做得很大 , 服务器上主流的DRAM一般为16G或32G , 容量再大功耗相应也会增加 。 而且DRAM的价格比较高 , 数据不能持久化 。
对于SSD等一些块设备来说 , 确实能够满足大容量持久化的要求 , 但是访问延迟却是DRAM的1000多倍 , 同时块设备存在随机访问能力比较差的问题 。 虽然近些年来出现了以rocksdb/leveldb为代表的LSM-Tree结构的存储系统从一定程度上解决了块设备低效的写问题 , 但同时又引入了一个比较严重的写放大问题 。
SSD与DRAM的访问延迟差异导致在分界线处形成了一条巨大的鸿沟 , 持久化内存的出现正好给填补上了 。
持久化内存在存储体系层次结构中的位置如下图所示 , 它位于DRAM与SSD之间 , 同时注意到它是横跨在分界线上的 ,它模糊了传统层次结构中内存与外存的边界, 它既具有DRAM一样的数据访问方式 , 也具有SSD一样的持久化特性 。 所以可以把它当成内存或者持久化的存储使用 。
文章插图
文章插图
Intel optane DC persistent memory是Intel推出的基于3D Xpoint技术的持久化内存产品 , 其代号为Apace Pass (AEP) 。 AEP的物理封装为DIMM , 直接插在内存插槽上 , 单条AEP的容量目前已经达到了512G , 如上图所示 , 如果一半的插槽插上AEP , 那么单个CPU内存容量很轻松的就可以扩展到3TB以上 。 IMC(integrated memory controller)与AEP之间以cache line大小的粒度传输数据 , 但是AEP的ECC(E rror correction code ) size为256字节 , 即AEP内部的controller与介质之间是以256字节(4个cache line)为单位进行读写 。 同时AEP的读写不对称 , 读性能明显优于写性能 , 所以应该避免频率的写入小对象 。
AEP工作模式
AEP有两种工作模式:Memory Mode和App Direct Mode , 如果细分就还有Storage Over App Direct 。
文章插图
- 今年过年不回家的你 应该怎样度过七天假期?
- 手机照片、视频怎样添加文字?原来很简单,4种方法一分钟搞定
- 怎样提高苹果6的运行速度?有这些问题就别救了,你用了几年了?
- DataPipeline亮相2020数据库技术大会,揽获「技术卓越奖」
- 跟风苹果取消附赠充电器引争议,小米会怎样体面地把手机卖了?
- WPC数据库中发现华为Mate 40E新型号 搭载麒麟990E芯片
- 数据|新基建时代,高大全的数据管理解决方案是怎样“炼”成的?
- MySQL数据库数据归档回收工具使用场景分享-爱可生
- 小鹏和特斯拉隔空“对喷”的背后又透露出怎样的信息?
- 屏幕面前 我们的双眼都经历了怎样的折磨?