MYSQLV1

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

本文地址:http://t.dbdao.com/archives/mysql-storage-engines-memory.html

dbDao 百度贴吧:http://tieba.baidu.com/dbdao

Mysql技术学习QQ群:146959374

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数据

 

by 汪伟华,dbdao.com 数据岛

dbDao.com 引导式IT在线教育

dbDao 百度贴吧:http://tieba.baidu.com/dbdao

扫码关注dbDao 微信公众号:

One thought on “【MySQL学生手册】常用存储引擎 – MEMORY

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">