LSMT 存储引擎浅析

240 阅读2分钟

1.LSMT通过Append-only Write+择机Compact来维护结构的索引树

image.png 2. 什么是存储引擎
MySQL 的核心就是存储引擎,存储引擎,负责MySQL中数据的存储和提取。数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。现在许多数据库管理系统都支持多种不同的存储引擎。
InnoDB 事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键。MySQL 5.5.5 之后,InnoDB 作为默认存储引擎。
MyISAM 是基于 ISAM 的存储引擎,并对其进行扩展,是在 Web、数据仓储和其他应用环境下最常使用的存储引擎之一。
MyISAM 拥有较高的插入、查询速度,但不支持事务。
MySQL 提供了多个不同的存储引擎,包括处理事务安全表的引擎和处理非事务安全表的引擎。在 MySQL 中,不需要在整个服务器中使用同一种存储引擎,针对具体的要求,可以对每一个表使用不同的存储引擎。
3.LSMT与B+Tree的异同

image.png

在B+Tree数据插入是原地更新 B+Tree 在发生不平衡或者节点容量达到阈值后,必须立即进行分裂来平衡 LSMT与B+Tree 可以用统一模型描述 从高层次的数据结构角度来看,两者没有什么异同 工程实践上还是用LSMT来表示一个Append-only 与Lazy Compact的索引树B+Tree 来表示一个Inplace-Update和Instant Compact的索引树 Append-only 与Lazy Compact更符合现代计算机设备的特性