欢迎来到天天文库
浏览记录
ID:5287838
大小:3.86 MB
页数:13页
时间:2017-12-07
《使用terarkdb提升mysql性能和压缩率》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、使用TerarkDB提升MySQL的性能和压缩率主讲人:Terark联合创始人郭宽宽互联网和大数据带来的挑战海量用户带来的海量随机访问•写入性能目前通过单节点的持续写入,多节点只读,一般能满足需求(如阿里云的PolarDB)•绝大多数互联网用户对在线服务的访问偏向于随机读•比如新闻资讯、搜索引擎、舆情监控、电商类商品检索等•对大量随机读的优化,目前没有很好的解决方案(目前只能增加内存或建立额外的索引缓解)•非随机读的场景,往往允许离线进行处理,一般不要求事务,暂时还可以忍内存和SSD依然很贵•公司每个月的数据增长没有几个T,都不好意思跟人打招呼•SSD的价格依
2、然是机械硬盘的数倍,容量越大,价格差距越大•SSD的寿命非常有限数据库领域的探索没有止境数据库MySQLMongoDBTiDBCockroachDBCassandraPostgreSQLMariaDBPolarDBHBase存储引擎TerarkDBInnoDBRocksDBLevelDBWiredTiger为什么从引擎层优化●目前的存储引擎底层算法,针对随机读较多、内存受限的场景,还有很大的改进空间○块压缩对随机访问很不友好○压缩率太低●引擎层的修改不触及用户现有数据库的使用逻辑,更加透明●引擎层更加通用,可以适应各类数据库产品,应用范围更广,也能和现有的数据
3、库产品充分整合,设计各类解决方案TerarkDB对MySQL的改进方式MySQL●MySQL以RocksDB作为存储引擎是发挥了RocksDB的LSM随机写速度快的优势,也是Facebook目前使用的主要方InnoDBMyISAMMyRocks法(MySQLonRocksDB,简称MyRocks)●TerarkDB基于RocksDB的接口,将自己的算法适配到了MyRocks中,进一步支TerarkDB持了MySQL数据库“块压缩”的问题块数据块数据块数据解压前的块数据块数据块数据块数据解压后的块数据块数据块数据块数据●存在双缓存问题及无效解压问题●块的尺寸决定
4、压缩率和无效解压的损块数据块数据块数据失Terark可检索压缩算法单条目标记录全局压缩不需要解压即可提取单条记录●不需要常见的数据库使用的DBCache层来缓存解压后的块●压缩率逼近理论上限(相当于块压缩中的块就是整个库)Terark可检索压缩算法Terark的可检索压缩算法,由以下两部分组成:●索引压缩算法:CO-Index(CompressedOrderedIndex)○树结构高度压缩○具有通过ID反查KEY的功能(区别于传统B+树)●数据压缩算法:PA-Zip(PointAccessibleZip)○全局压缩○提取单条数据时无需多余解压索引压缩算法:CO
5、-IndexSuccinctDataStructure●Succinct数据结构历史悠久,但是并未引起大家的重视,对于相同的树结构,对比基于指针技术,它仅仅需要1/30的内存●使用位向量来表达树结构,开源实现有SuccinctDataStructureLibrary,缺点是性能较指针更低,需要通过工程上大幅度优化来接近指针性能NestedPatriciaTrie●原生的Patricia支持路径压缩,通过把一串仅包含一个孩子的节点,压缩成一个包含多个字符的节点●我们对其进行了更进一步的嵌套压缩:把压缩后的路径构建成一个全新的PatriciaTrie,进一步提升数
6、据的压缩率。数据压缩算法:PA-ZipLZ系列算法的变种●基于LZ系列算法进行了大幅度的改进,使用“全局字典”+“局部字典”的方式,将压缩率达到最理想的程度●采用滑动窗口的方式进行数据压缩●根据实际测试,全局字典的尺寸限制为12GB以内,效果比较理想,更大的字典对压缩率的帮助很有限数据压缩算法的缺点●由于需要进行大量的计算,在数据写入过程中对CPU的消耗会比较高○目前可以采用写入限流的方式减轻CPU负载(大多数情况下,并不需要全速写入)○在大型系统架构下,可以采用计算和存储分离的逻辑,单独进行数据压缩集成进入MySQL数据库TerarkDB通过Facebook
7、推出的MyRocks适配进入MySQL,整合了RocksDB本身的优秀调度层和TerarkDB的底层算法:MySQLServerAbstractStorageEngineLayerAdapterMyRocks(RocksDBAdapter)RocksDBInnoDBBlockBasedTablePlainTable…TerarkZipTableOperatingSystem性能和压缩率对比AmazonMovieReviewsOpenDataset,原始数据9.1GBPageSizeBlockSize=16K=16K谢谢各位!●目前可以通过官网直接下载试用●和M
8、yRocks100%兼容○MyRock
此文档下载收益归作者所有