mysql的四种引擎
查询mysql所有引擎:SHOW ENGINES
查询mysql默认使用的引擎:SHOW VARIABLES LIKE ‘storage_engine’;
mysql常用引擎:InnoDB、MyISAM、Memory和Archive
一、InnoDB
支持事物,支持行锁,支持外键,并支持非锁定读,不支持全文索引。是5.5.8版本之后的默认引擎
特性
1-如果服务器意外宕机,重启数据库即可。
2-有独自的缓存池
3-在实行分表时,可以设置相关的外键来实现参照完整。执行更新或删除数据时,相关的数据也将会被自动的更新或删除
4-如果在磁盘或内存的数据损坏,InnoDB 校验机制在使用此数据之前会提醒数据异常
5-插入,更新,删除操作会被更新缓存执行,可以同时对同一张表读和写,InnoDB 会缓存更新的数据至磁盘
6-当表中同一行数据经常被查询,Adaptive Hash Index 帮助这些查询更快
存储
InnoDB 逻辑存储单元主要分为表空间,段,区,页
层级关系为:表空间 > 段 > 区 > 页
InnoDB 存储引擎表中所有数据都是存在表空间中,表空间包括:
系统表空间、独立表空间、通用表空间、临时表空间
二、MyISAM
在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。有较高的插入、查询速度。不支持事物,表锁设计,支持全文索引
特性
1-不支持事务
2- 可以在不同服务器上拷贝数据文件和索引文件
3-加锁和并发
加锁:对整张表进行加锁,而不是行
并发:在读数据的时候,所有的表上都可以获得共享锁(读锁),每个连接都不互相干扰
4- 修复表。MyISAM支持由于任意意外关闭而损坏的MyISAM表进行检查和修复操作(非事务修复)。
5-列索引。可以基于BLOB或TEXT类型列的前500个字符,创建相关索引
6-延迟更新索引。MyISAM 默认把DELAY_KEY_WRITE开启, 整个选项是MyISAM引擎独有的
7-压缩表。如果MyISAM表是一张很大的只读表,也就是在表创建完并导入数据后,就不会对表进行任何修改操作,那么我就可以对表进行压缩操作。这样可以减少磁盘IO
存储
每一个myisam的表都对应于硬盘上的三个文件:
.frm 文件用于保存表的定义(属于服务器,不属于引擎)
.myd 文件用于保存表的数据
.myi 文件是表的索引文件
三、MEMORY
将表中的数据存放在内存中,查询访问速度快。如果数据库重启,数据会消失。默认使用哈希索引
特性
1-表空间以小块来分配
2-能够使用非唯一键
3-支持hash索引和BTree索引
4-所有字段都是固定长度
5-不支持BLOB和TEXT等大字段
6-支持AUTO_INCREMENT自增列
四、ARCHIVE
只支持查询和插入操作,使用zlib算法进行压缩存储。适合存储归档数据,如日志等
特性
1-支持查询和插入,不支持修改和删除
2-支持BLOB和TEXT等大字段类型
3-支持AUTO_INCREMENT自增列
4-不支持索引
5-支持分区
存储:
每个archive表在磁盘上存在两个文件:
.frm 文件用来存储表定义
.arz 文件用来存储数据
五、存储引擎的选择
功 能 | MYISAM | Memory | InnoDB | Archive |
---|---|---|---|---|
存储限制 | 256TB | RAM | 64TB | None |
支持事物 | No | No | Yes | No |
支持全文索引 | Yes | No | No | No |
支持数索引 | Yes | Yes | Yes | No |
支持哈希索引 | No | Yes | No | No |
支持数据缓存 | No | N/A | Yes | No |
支持外键 | No | No | Yes | No |
使用引擎需要根据需求和性能灵活选择。使用合适的存储引擎,会提高整个数据库的性能
本文地址:https://blog.csdn.net/weixin_45739265/article/details/110489356