作家
登录

MySQL MEMORY引擎及性能比对

作者: 来源: 2017-11-07 11:09:48 阅读 我要评论

MySQL启动时,参加--init-file选项,将下列敕令参加到这个文件中,包管启动后内存表中稀有据。

  • INSERT INTO ... SELECT
  • LOAD DATA INFILE

内存表和复制(Replication)

办事看重启会导致内存表数据损掉。如不雅是主库,大年夜库没有意识到主库表中数据已被情况,所以在大年夜库你看到的是过时数据。

重启后,主大年夜库若何同步内存表数据?

当主库应用内存表,主库启动后,一条DELETE语句会写入到主库的binary log中,大年夜库接到敕令后清空内存表。

主库重启时代,大年夜库照样有攫取到过时数据的情况。为了避免这种情况,主库启动时参加--init-file参数,如许主库启动主动将数据加载到内存表中。(官方文档写的不严谨,我认为仅限于内存表只读场景。如不雅不是只读,即使参加--init-file参数也无法包管主库内存表数据一致)。

治理内存应用情况

办事器必须有足够内存,来知足多张内存表的应用。

根据不合的SQL萌芽,须要创建内存表的默认hash索引(基于独一键的单个值萌芽),或者B-tree索引(等值萌芽、不等值萌芽或者范围萌芽)。

MEMORY 存储引擎特点

如不雅大年夜内存表中删除零丁的行,并不会收受接收内存。当全部内存表删除时,才收受接收内存。同一张内存表,之前删除行占用的空间,会被新的行复竽暌姑。履行DELETE、TRUNCATE TABLE来释放内存表占用空间,如不雅表不在应用可应用DROP TABLE敕令。释放正在应用的内存表占用的内存,可以应用 ALTER TABLE XX ENGINE=MEMORY 强迫重建表。

SUM_OVER_ALL_BTREE_KEYS(max_length_of_key + sizeof(char*) * 4)

+ SUM_OVER_ALL_HASH_KEYS(sizeof(char*) * 2)

+ ALIGN(length_of_row+1, sizeof(char*))

ALIGN()表示一个round-up因子,其会导致行长度等于char指针大年夜小的精确倍数。sizeof(char*)在32位机械上是4,64位则为8。

前面提到, max_heap_table_size 体系变量决定了内存表的最大年夜尺寸。在创建内存之前,可设置该变量控制每个内存表的最大年夜尺寸。(不建议修改全局 max_heap_table_size 的大年夜小,不然所有会话的内存表最大年夜尺寸都为该值 )。

下面的例子创建了2个内存表,最大年夜尺寸为1M和2M

  1. mysql> SET max_heap_table_size = 1024*1024; 
  2. Query OK, 0 rows affected (0.00 sec) 
  3.  
  4. mysql> CREATE TABLE t1 (id INTUNIQUE(id)) ENGINE = MEMORY; 
  5. Query OK, 0 rows affected (0.01 sec) 
  6.  
  7. mysql> SET max_heap_table_size = 1024*1024*2; 
  8. Query OK, 0 rows affected (0.00 sec) 
  9.  
  10. mysql> CREATE TABLE t2 (id INTUNIQUE(id)) ENGINE = MEMORY; 
  11. Query OK, 0 rows affected (0.00 sec) 

办事看重启后,每个表的尺寸都变成了全局 max_heap_table_size 变量的值大年夜小。

压测结不雅

经由过程sysbench压测,InnoDB 写机能完爆MEMORY引擎,MEMORY的读机能略高于InnoDB。InnoDB的综合机能更好,足够知足日常应用。推敲到MEMORY引擎的雷点太多,建议不应用MEMORY引擎。

【编辑推荐】

  1. Oracle和MySQL的高可用筹划比较(一)
  2. 11 月全球数据库排名:PostgreSQL保持上升趋势 一路高涨
  3. 毕竟为什么要惹人数据库中心件
  4. 数据库高可用筹划PK:选择Oracle照样MySQL?
  5. 进步MySQL机能的7个技能
【义务编辑:庞桂玉 TEL:(010)68476606】

  推荐阅读

  双11准备买家用打印机 怎么双面打印?

11.11的脚步近了,是不是该囤货了,作为一个资深陪读爸妈是不是预备给本身,哦不,给孩子买一台家用功课打印机,毕竟师长教师如今很多多少都是发电子功课了......特别提示:如不雅小同伙的>>>详细阅读


本文标题:MySQL MEMORY引擎及性能比对

地址:http://www.17bianji.com/lsqh/38542.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)