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
- 设置mysql字符集语句(MySQL修改字符集的实战教程)
- mysql存储过程limit参数(MySQL存储过程in、out和inout参数示例和总结)
- 分享mysql设计规范(MySQL 可扩展设计的基本原则)
- mysql字符串默认长度(MySQL 字符类型大小写敏感)
- oracle如何用脚本文件创建表空间(MySQL版oracle下scott用户建表语句实例)
- visual studio怎么连接数据库(使用Visual Studio Code连接MySql数据库并进行查询)
- mysql binlog日志位置(开启MySQL的binlog日志的方法步骤)
- 怎样查看mysql的安装路径(MySQL中查看数据库安装路径的方法)
- mysql的innodb设置(修改MySQL数据库引擎为InnoDB的操作)
- 如何正常查看mysql存储数据文件(Mysql文件存储图文详解)
- 数据库mysql基本知识(深入理解r2dbc在mysql中的使用)
- mysql把重复数据删掉(mysql查找删除重复数据并只保留一条实例详解)
- mysql中行列转换(mysql 行列转换的示例代码)
- mysql权限管理详解(Mysql 用户权限管理实现)
- mysql数据库的备份与恢复的方法(详解Mysql之mysqlbackup备份与恢复实践)
- mysql语句性能分析(聊聊MySQL的COUNT*的性能)
- 盘点那些年让人称奇的年终奖 最后一个赢辣条毫无悬念(盘点那些年让人称奇的年终奖)
- 你还没有升职吗 他竟因为几套激励理论,升职了(你还没有升职吗)
- 某知名企业绩效管理体系及薪酬分配体系操作手册(某知名企业绩效管理体系及薪酬分配体系操作手册)
- 职场人改不掉这4个习惯,只会越混越穷,一辈子也翻不了身(职场人改不掉这4个习惯)
- 华为 联想等46家公司笔试面试题,涉及各行各业,建议收藏(联想等46家公司笔试面试题)
- ()
热门推荐
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9