我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql关于memory引擎的表的总结

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql关于memory引擎的表的总结

参见官方文档https://dev.mysql.com/doc/refman/5.7/en/memory-storage-engine.html


总结

1、memory引擎表数据只存放在内存中,插入数据后,文件也只有表结构文件,没有表数据文件, 重启后,数据丢失 ,但是表结构还在,表结构文件也还在

2、memory引擎表,一个会话修改了数据,其他会话可以立即看到修改后的数据,和oracle的临时表完全不同

3、要清空memory引擎表,delete、truncate、drop、重启都可以,没有类似oracle这样的flush buffer_cache的直接清空内存的方法

4、memory引擎表最大大小受参数max_heap_table_size的限制,具体见官方文档

https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_max_heap_table_size

5、也就是说,momory引擎的表,除了这两点,表数据放在内存中、重启后数据丢失,其他一切都和普通表一样。

6、生产环境不建议使用memory引擎,因为它有两个最大的缺点,其一它只有表锁没有行锁,这样一旦表有更新操作,就会堵塞其他会话对这张表的读写。其二它的数据存放在内存中,一旦在M-S架构中,S从库重启,S从库数据就会丢失,但是M主库数据还在,继而影响主从同步,因为重启后如果收到一条update语句后,主库正常执行,把该语句发送到从库就会报错找不到更新的行,导致主从同步停止。

7、如果非要用memory引擎的优点,把数据存放在内存中,可以考虑使用memory引擎临时表,正好可以避免上面6的两个缺点。




实验过程

mysql> use test1

mysql> create table tab3 (hid int) engine memory;

mysql> insert into tab3 values (1);

mysql> insert into tab3 values (1);

mysql> insert into tab3 values (1);

mysql> select count(*) from tab3;

+----------+

| count(*) |

+----------+

|        3 |

+----------+


此时查看tab3的数据文件,发现只有表结构

[root@mydb ~]# ll /var/lib/mysql/test1 |grep tab3

-rw-r----- 1 mysql mysql    8558 Sep 30 11:00 tab3.frm


开另一个会话

mysql> select count(*) from test1.tab3;

+----------+

| count(*) |

+----------+

|        3 |

+----------+


重启数据库,再查看tab3的数据

mysql> select count(*) from test1.tab3;

+----------+

| count(*) |

+----------+

|        0 |

+----------+


此时查看tab3的数据文件,表结构还在

[root@mydb ~]# ll /var/lib/mysql/test1 |grep tab3

-rw-r----- 1 mysql mysql    8558 Sep 30 11:00 tab3.frm





会话1

mysql> create table t1 (hid int);

mysql> create table t2 (hid int) engine=memory;

mysql> insert into t1 values(1),(2),(3);

mysql> insert into t2 values(1),(2),(3);

mysql> update t1 set hid=sleep(60) where hid=1;


会话2

mysql> select * from t1;

+------+

| hid  |

+------+

|    1 |

|    2 |

|    3 |

+------+

正常执行,不堵塞


会话1

mysql> update t2 set hid=sleep(60) where hid=1;


会话2

mysql> select * from t2;

--堵塞,直到会话1执行完毕


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql关于memory引擎的表的总结

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

关于MySQL Memory存储引擎的相关知识

关于Memory存储引擎的知识点 Memory存储引擎在日常的工作中使用的是比较少的,但是在MySQL的某些语法中,会用到memory引擎的内存表,它有以下几个特点: 1、内存表的建表语法是create table … engine
2022-05-27

MySql 存储引擎和索引相关知识总结

存储引擎什么是数据库存储引擎? 数据库引擎是数据库底层软件组件,不同的存储引擎提供不同的存储机制,索引技巧,锁定水平等功能,使用不同的数据库引擎,可以获得特定的功能 如何查看引擎?--如何查看数据库支持的引擎 show engines;
2022-05-11

关于Mysql的四种存储引擎

这篇文章主要介绍了关于Mysql的四种存储引擎,MySql的核心就是存储引擎,不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能,需要的朋友可以参考下
2023-05-19

关于MySQL的体系结构及存储引擎图解

目android录一、mysql的体系结构① 结构图② 各结构的功能二、存储引擎① 简介及支持② 建表时,指定引擎三、各存储引擎的特点InnoDBMyISAMMemory四、存储引擎的选择ACID一、MySQL的体系结构① 结构图② 各结
2023-05-23

mysql中Memory引擎指的是什么

这篇文章主要介绍mysql中Memory引擎指的是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mysql中Memory引擎1、说明所有数据保存在内存中,不需要磁盘IO,比MyISAM快一个数量级。支持Hash索
2023-06-15

mysql中关于覆盖索引的知识点总结

如果一个索引包含(或覆盖)所有需要查询的字段的值,称为‘覆盖索引'。 覆盖索引是一种非常强大的工具,能大大提高查询性能,只需要读取索引而不需要读取数据,有以下优点: 1、索引项通常比记录要小,所以MySQL访问更少的数据。 2、索引都按值得
2022-05-17

【mysql】索引相关的个人总结

重点参考:MySQL索引原理及慢查询优化 (美团技术分享网站):原理、示例优化都写的很好。索引很难么?带你从头到尾捋一遍MySQL索引结构,不信你学不会!:原理写的很好。【从入门到入土】令人脱发的数据库底层设计:很详细的底层原理一定要仔细看其中讲的索引原理!!
【mysql】索引相关的个人总结
2016-06-26

关于Mysql索引的数据结构

索引的数据结构1、为什么使用索引概念: 索引是存储索引用于快速找到数据记录的一种数据结构,就好比一本书的目录部分,通过目录中对应的文章的页码,便可以快速定位到需要的文章,Mysql 中也是一样的道理,进行数据查找时首先查看查询条件是否命中某条索引,符合则通过索
关于Mysql索引的数据结构
2017-04-22

mysql中Memory存储引擎的特性有哪些

这篇文章给大家分享的是有关mysql中Memory存储引擎的特性有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、Memory表的每个表可以有多达32个索引。每个索引16列,以及500字节的最大键长度。2、
2023-06-25

关于jboss配置的总结

1、安装/配置apache 2.2.4 和 mod_jk1.1配置负载均衡2、安装/配置jboss2.1 安装jdk1.5.112.2 解压jboss2.3 修改server.xml ,适应负载均衡。2.4 修改server.xml ,配置
2023-06-03

关于C++中的static关键字的总结

C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用
2022-11-15

编程热搜

目录