---
title: "MemTable - OceanBase 数据库 V4.2.3 | OceanBase 文档中心"
description: MemTable MemTable 中的数据结构 OceanBase 数据库的内存存储引擎 MemTable 由 BTree 和 Hashtable 组成，在插入/更新/删除数据时，数据被写入内存块，在 HashTable 和 BTree 中存储的均为指向对应数据的指针。 两种数据结构的特点 数据结构 优点 缺点 H…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.2.3

# MemTable

更新时间：2024-04-24 14:53:01

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.2.3/zh-CN/700.reference/100.oceanbase-database-concepts/900.storage-architecture/200.data-storage/200.MEMTable.md)  

## MemTable 中的数据结构

OceanBase 数据库的内存存储引擎 MemTable 由 BTree 和 Hashtable 组成，在插入/更新/删除数据时，数据被写入内存块，在 HashTable 和 BTree 中存储的均为指向对应数据的指针。

![memtable-structure.png](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.2.1/700.reference/100.oceanbase-database-concepts/900.storage-architecture/200.data-storage/memtable-structure.png)

## 两种数据结构的特点

| 数据结构 | 优点 | 缺点 |
| --- | --- | --- |
| HashTable | 插入一行数据的时候，需要先检查此行数据是否已经存在，当且仅当数据不存在时才能插入，检查冲突时，用 Hashtable 要比 BTree 快。 事务在插入或更新一行数据的时候，需要找到此行并对其进行上锁，防止其它事务修改此行，OceanBase 数据库的行锁放在行头数据结构中，需要先找到它，才能上锁。 | 不适合对范围查询使用 HashTable。 |
| BTree | 范围查找时，由于 BTree 中的数据都是有序的，因此只需要搜索局部的数据就可以了。 | 单行的查找，也需要进行大量的主键比较，从根结点找到叶子结点，而主键比较性能是较差的，因此理论上性能比 HashTable 慢很多。 |

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
