存储引擎组件

简介: 存储引擎组件

  存储引擎组件

  下面是存储引擎几个重要的的组件:

  WAL 和 WAL Manager

  WAL Manager是来管理日志文件的。存储引擎用预写式日志(WAL) 来保证数据的原子性和持久性。当CUD操作发生时,存储引擎先写WAL,再写到对应tablet的MemTable中,等到MemTable积累到一定的规模或者到了一定的时间,就会把这个MemTable切换为不可更改的flushing MemTable, 并新开一个 MemTable接收新的写入请求。 而这个不可更改的flushing MemTable就可以刷磁盘,变成不可更改的文件; 当不可更改的文件生成后,数据就可以算持久化。 当系统发生错误崩溃后,系统重启时会去WAL读日志,恢复还没有持久化的数据。 只有当一个日志文件对应的数据都持久化后,WAL Manager才会把这个日志文件删除。

  文件存储

  每个tablet会把数据存在一组文件中,这些文件是存在DFS里 (阿里巴巴盘古或者Apache HDFS )。 行存文件的存储方式是Sorted String Table(SST) 格式。 列存文件支持两种存储格式: 一种是类似PAX的自研格式, 另外一种是改进版的Apache ORC格式 (在AliORC的基础上针对Hologres的场景做了很多优化)。 这两种列存格式都针对文件扫描的场景做了优化。

  Block Cache (Read Cache)

  为了避免每次读数据都用IO到文件中取,存储引擎通过BlockCache把常用和最近用的数据放在内存中,减少不必要的IO,加快读的性能。在同一个节点内,所有的Shard共享一个Block Cache。 Block Cache有两种淘汰策略: LRU (Least Recently Used,最近最少使用) 和 LFU (Least Frequently Used, 最近不常用)。 顾名思义,LRU算法是首先淘汰最长时间未被使用的Block,而LFU是先淘汰一定时间内被访问次数最少的Block。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
9月前
|
存储 安全 关系型数据库
什么是存储引擎
什么是存储引擎
554 0
|
2月前
|
存储 关系型数据库 MySQL
InnoDB 引擎底层事务的原理
InnoDB 引擎底层事务的原理
|
3月前
|
存储 NoSQL 关系型数据库
LSM设计一个数据库引擎
LSM设计一个数据库引擎
39 0
|
4月前
|
存储 缓存 关系型数据库
MySQL基本组件与存储引擎
简单来说 MySQL 主要分为 Server 层和存储引擎层: Server 层:主要包括连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图,函数等,还有一个通用的日志模块 binlog 日志模块。 存储引擎: 主要负责数据的存储和读取,采用可以替换的插件式架构,支持 InnoDB、MyISAM、Memory 等多个存储引擎,其中 InnoDB 引擎有自有的日志模块 redolog 模块。现在最常用的存储引擎是 InnoDB,它从 MySQL 5.5 版本开始就被当做默认存储引擎了。
|
10月前
|
存储 缓存 Oracle
第05章_存储引擎
第05章_存储引擎
62 0
|
存储 算法 数据库
【数据库系列】存储引擎(二)B树概述
注:在本文中“结点”和“节点”同义,在B树部分,“节点”和“页”同义。 背景知识 很多数据库都是基于B树 传统树的特点回顾 由数据结构与算法的知识可知,BST(二叉搜索树)的左子树的值<根值<右子树的值。
95 0
|
存储 SQL 关系型数据库
关于数据库的主从、索引以及存储引擎的核心原理
数据库的主从、索引以及存储引擎讲解
166 0
|
存储 SQL 缓存
LSMT存储引擎浅析
LSMT存储引擎浅析
432 1
LSMT存储引擎浅析
|
存储 SQL 安全
InnoDB存储引擎简介
存储引擎是数据库的核心,对于 MySQL 来说,存储引擎是以插件的形式运行的。虽然 MySQL 支持种类繁多的存储引擎,但最常用的当属 InnoDB 了,本篇文章将主要介绍 InnoDB 存储引擎相关知识。
136 0
|
存储 NoSQL Go
从零实现一个 k-v 存储引擎
写这篇文章的目的,是为了帮助更多的人理解 rosedb,我会从零开始实现一个简单的包含 PUT、GET、DELETE 操作的 k-v 存储引擎,你可以将其看做是一个简易版本的 rosedb,就叫它 minidb 吧(mini 版本的 rosedb)。
224 0
从零实现一个 k-v 存储引擎