【MySQL学生手册】常用存储引擎 – MEMORY

本文地址:https://www.askmac.cn/archives/mysql-storage-engines-memory.html

 

MEMORY配置项:

MEMORY存储引擎作为一个有效且有用的引擎,应该在大多应用设计中考虑其的使用,以提高性能并满足特定的业务需要。以下是是对MEMORY存储引擎最佳实践中的一些建议:

 

 

  • 最小化一张MEMORY表可增长的大小 – 许多应用会使用MEMORY存储引擎来动态倒入,由于没有得到正确的引导而导致表过大,从而产生了较差的性能。这里你可以使用以下解决方案来满足应用需求:
  •    max_heap_table_size – 这个变量设置了MEMORY表被运行增长到的最大大小。此值被用于计算MEMORY表MAX_ROWS值。变量设置对于已存在的MEMORY表没有效果,除非你使用CREATE TABLE进行表重建,或使用ALTER TABLE或TRUNCATE TABLE来进行表修改。
  •    MAX_ROWS – 对于单独MEMORY表,表的最大行数可以在CREATE TABLE(或ALTER TABLE)语句中使用MAX_ROWS语法进行设置。

 

  • 在服务端启动时,将数据装入MEMORY表中 – 和存储一致性数据一样存储MEMORY表,有一种方法可以在服务端启动时来装入数据。就是使用 --init-file启动项。在启动项中指定的文件中,使用命令如LOAD DATA INFILE或INSERT INTO … SELECT,它们会在服务端启动时被执行。这对于服务端崩溃和MySQL复制很有用。

使用主从复制,当主服务端在关闭重启后MEMORY表被清空了。但是,从库并没有意识到这点,当查询从库时候,它会返回过时的数据。在新版本的MySQL中,binary log包括了DELETE FROM语句来实现从库从主库的同步,但是这之间同步的时间取决于服务端的重启和主库MEMORY表的第一次使用(在第一次使用时,会首先执行DELECT语句,这会被同步到从库)。使用 --init-file项则避免了这样的问题,保证了主库启动到MEMORY表中数据重新可用的时间间隔最小化。

 

MEMORY存储引擎优缺点:

 

优点 缺点
Ÿ   极快的读写操作

Ÿ   支持B-tree和Hash索引

Ÿ   主要的内存数据库管理

Ÿ   在服务端被关闭后数据不能持久

Ÿ   不支持事务

Ÿ   不支持外键

Ÿ   不支持full-text及GIS索引支持

Ÿ   表级别锁

Ÿ   不能存储BLOB和Text数据

 

 


Posted

in

by

Tags:

Comments

One response to “【MySQL学生手册】常用存储引擎 – MEMORY”

Leave a Reply

Your email address will not be published. Required fields are marked *