MEMORY存储引擎(使用场景,特性,操作,内存管理),CSV存储引擎(操作,修复和检查,限制),ARCHIVE存储引擎(特性),BLACKHOLE存储引擎(特性,用途)

目录

MEMORY存储引擎

介绍

使用场景

特性

支持的

不支持的

操作

创建memory表

插入数据

重启后重新加载数据

内存管理

释放内存资源

计算表中一行数据所需的内存 

大小限制

CSV存储引擎

介绍

操作

创建表

插入数据

修复和检查 

介绍

直接向CSV文件写入

检查和修复损坏的表

修复过程

限制

ARCHIVE存储引擎

介绍

特性

支持的

不支持的

操作

创建表

BLACKHOLE存储引擎

介绍

特性

用途

操作

创建表


MEMORY存储引擎

介绍

MEMORY(原HEAP)存储引擎 是 MySQL 提供的一种存储引擎

  • 它的核心特点是所有数据存储在内存中,因此具有超高的读写速度
  • 但当服务器由于硬件问题 / 断电 / 其他原因崩溃时,数据会丢失

使用场景

适用于保存临时数据,不需要持久化的,访问频率极高但更新不频繁(只读/以读为主)的数据

比如说:

  • 一般用于系统创建的临时表(我们一般不会使用)
  • 会话数据存储(短期的有效验证码,购物车数据)
  • 电子商务平台的实时秒杀商品库存信息
  • 实时排行榜

特性

支持的

内存级别,追求高效率

  • 所以与效率有关的特性它都支持 -- b+树索引 / 哈希索引(默认类型)
  • 哈希索引 -- 适用于等值查询,速度快,但不支持范围查询

使用固定长度的存储格式

  • 可变长度类型(例如varchar)也会使用固定长度存储

支持AUTO_INCREMENT的列

非 TEMPORARY 类型的 MEMORY 表在所有客户端之间共享

  • 非 TEMPORARY 类型 -- 非临时内存表,也就是正常创建的表

MEMORY 存储引擎使用表级锁定机制

  • 在高并发负载下,特别是多个客户端同时执行更新操作时,可能会出现严重的锁竞争,导致性能下降
  • 在这种情况下,InnoDB 等支持行级锁的存储引擎可能表现出更好的性能

不支持的

不能包含BLOB或TEXT列

  • 不能用于保存博客/论坛的正文部分

不支持表分区

  • 表分区 -- 一种磁盘上的操作,将一张大表分为多个小分区,防止表文件过大
  • 查询操作只需处理相关的分区,减少了扫描的数据量,从而提高查询效率

操作

创建memory表

 

  • 因为数据在内存中保存,所以磁盘上不会生成数据文件,只会生成一个sdi文件(表结构描述文件)

插入数据

 依据查询结果集中的字段初始化表结构,并填充数据

查询两张表,虽然结果相同,但一个是从磁盘中查询,一个是从内存中

重启后重新加载数据

每次重启服务器内存表中的数据将被清空,内存表中的数据永远不会写入磁盘

服务器重启后,表中数据就没有了,如何重新加载?

内存管理

释放内存资源

删除单行数据,不会回收内存,只有删除整个表时才会回收内存

  • 当不需要内存表的内容时,要释放该表所使用的所有内存,可以执行DELETE / TRUNCATE table删除所有行
  • 或者使用DROP table删除表

如果要释放被删除行所使用的内存,使用ALTER TABLE ENGINE = MEMORY命令强制重建表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值