mysql存储引擎的创建与修改(关于MySQL Memory存储引擎的相关知识)
mysql存储引擎的创建与修改
关于MySQL Memory存储引擎的相关知识关于Memory存储引擎的知识点
Memory存储引擎在日常的工作中使用的是比较少的,但是在MySQL的某些语法中,会用到memory引擎的内存表,它有以下几个特点:
1、内存表的建表语法是create table … engine=memory。
2、这种表的数据都保存在内存里,系统重启的时候会被清空,但是表结构还在。
2、Memory存储引擎的数据和索引是分开的。memory存储引擎的表也可以有主键,主键id上存储的是每个数据的位置,主键id是哈希索引,索引上的key也不是连续的。
这种数据和索引分开存放的数据组织形式,我们称之为"堆组织表",这点区别于Innodb 存储引擎的"索引组织表"
Innodb和memory存储引擎的区别
1、Memory存储引擎的数据存储顺序和插入顺序相同,而innodb存储引擎的数据存储顺序是按照聚集索引有序排列的。举例如下:
|
mysql> create table t1(id int primary key , c int ) engine=Memory; Query OK, 0 rows affected (0.00 sec) mysql> insert into t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(0,0); Query OK, 10 rows affected (0.00 sec) Records: 10 Duplicates: 0 Warnings: 0 mysql> select * from t1; + ----+------+ | id | c | + ----+------+ | 1 | 1 | | 2 | 2 | | 3 | 3 | | 4 | 4 | | 5 | 5 | | 6 | 6 | | 7 | 7 | | 8 | 8 | | 9 | 9 | | 0 | 0 | + ----+------+ 10 rows in set (0.00 sec) mysql> create table t2(id int primary key , c int ) engine=innodb; Query OK, 0 rows affected (0.01 sec) mysql> insert into t2 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(0,0); Query OK, 10 rows affected (0.00 sec) Records: 10 Duplicates: 0 Warnings: 0 mysql> select * from t2; + ----+------+ | id | c | + ----+------+ | 0 | 0 | | 1 | 1 | | 2 | 2 | | 3 | 3 | | 4 | 4 | | 5 | 5 | | 6 | 6 | | 7 | 7 | | 8 | 8 | | 9 | 9 | + ----+------+ 10 rows in set (0.00 sec) |
可以看到,memory存储引擎的结果中,(0,0)这条记录是在最后面的,和插入顺序一致,而innodb存储引擎的结果中,是按照记录的顺序进行排列的。
2、当数据文件有空洞的时候,innodb存储引擎插入数据需要在指定的位置插入,而memory存储引擎只要找到空隙就可以插入
3、当数据位置发生变化的时候,memory存储引擎需要修改所有的索引,而innodb存储引擎仅需要修改主键索引即可。
4、innodb存储引擎查询的时候有"回表",而memory存储引擎不需要回表。
5、innodb存储引擎支持varchar,而memory存储引擎不支持,所有的varchar都当做char处理,除此之外,memory存储引擎还不支持blob和text字段。
6、范围查询的时候,memory存储引擎无法支持。因为它的索引类型是哈希索引
在生产环境上,一般不建议使用内存表,理由主要有以下两点:
1、内存表不支持行锁,只支持表锁,一旦该表有更新,就会阻塞该表的其他操作,包括读操作;这就意味着这种表的并发性能不好。
2、数据持久性不好,一旦数据库宕机,内存表中的数据会丢失,他会忘往binlog中写入一条delete from table的语句,但是表结构还是存在的。这个delete语句在双M的环境下,从库宕机有可能污染主库的临时表数据,是比较危险的操作。
以上就是关于MySQL Memory存储引擎的相关知识的详细内容,更多关于MySQL Memory存储引擎的资料请关注开心学习网其它相关文章!
原文链接:https://cloud.tencent.com/developer/article/1651589
- navicat15激活页面不显示(Navicat for MySQL 15注册激活详细教程)
- mysql中timestamp类型的CURRENT_TIMESTAMP 和ON UPDATE CURRENT_TIMESTAMP属性
- mysql所有用户命令(MySQL用户管理与PostgreSQL用户管理的区别说明)
- innodb和myisam(Mysql InnoDB和MyISAM区别原理解析)
- mysql水平拓展的瓶颈(MySQL令人大跌眼镜的隐式转换)
- mysql自定义函数怎么设置(MySQL自定义变量?学不废不收费~)
- 如何找到mysqlroot密码(WDCP管理面板忘记MYSQL ROOT密码及重置后台登录密码的方法汇总)
- mysql数据库数据分析(详解MySQL数据库千万级数据查询和存储)
- mysql中mergeinto的用法(MySQL中exists、in及any的基本用法)
- 织梦源码安装数据库怎么填(Mysql修改端口号 织梦DedeCMS设置教程)
- python在mysql创建数据库(python3对接mysql数据库实例详解)
- mysql基础操作报告(gorm操作MySql数据库的方法)
- mysql 分片键规则(MySql8 WITH RECURSIVE递归查询父子集的方法)
- mysql 高效分页(MySQL 分页查询的优化技巧)
- mysql一主两从架构(MySQL主从搭建多主一从的实现思路与步骤)
- mysql字符类型长度限制
- 男人犯的错,为什么要女人来承担(为什么要女人来承担)
- 心理学 四个金蟾,哪个最招财 测你今生的运势有多棒(心理学四个金蟾)
- 吉善缘《聚宝金蟾》金蟾招财摆件 三足全铜蟾蜍客厅店铺开业礼品(吉善缘聚宝金蟾金蟾招财摆件)
- 招财化煞神兽,金蟾变了(招财化煞神兽金蟾变了)
- 26岁杨紫的白素贞遇上24岁鞠婧祎,哪个最美(26岁杨紫的白素贞遇上24岁鞠婧祎)
- 鞠婧祎和杨紫两种风格的女生,你心里谁比较美(鞠婧祎和杨紫两种风格的女生)
热门推荐
- html5 meta标签
- 云服务备份后怎么恢复数据(云服务器的数据被删除还能恢复吗?)
- dedecms最新手册(在自己的php页面中使用dedecms标签的代码示例)
- vue和springboot分页开发实现(解决Vue+SpringBoot+Shiro跨域问题)
- 详解如何获取localStorage最大存储大小的方法(详解如何获取localStorage最大存储大小的方法)
- jenkins回滚docker容器(关于docker部署的jenkins跑git上的程序的问题)
- html样式中css怎么设置行高(CSS设置HTML元素的高度与宽度的各种情况总结)
- SQL Server中找出执行时间过长的作业
- 缓存系统机制(Smarty缓存机制实例详解三种缓存方式)
- reacthooks基础使用(React 小技巧教你如何摆脱hooks依赖烦恼)