存储引擎的介绍及基本管理
一. 存储引擎介绍及基本管理
1. 存储引擎种类
InnoDB
MyISAM
MRG_MyISAM
CSV
MEMORY
SEQUENCE
Aria
PERFORMANCE_SCHEMA
还可以使用第三方存储引擎
插件类存储引擎, 实在表级别设定的
MySQL 5.5 以后默认存储引擎innodb
第三方存储引擎 TokuDB(mariadb 5.7自带) ------> zabbix等监控软件上使用这个存储引擎
insert
操作, 比innodb快 2-3倍
压缩比: 对数据的压缩比达到8-10倍, 而 innodb只有2-3倍
2. Innodb存储引擎与MyISAM区别(面试题)
Innodb | MyISAM |
---|---|
MVCC(多版本并发控制) | 不支持 |
锁(行级别) | 锁(表级别) |
外键 | 不支持 |
事务 | 不支持 |
热备 | 温备 |
CSR(断电时, 故障自动回复) | 不支持 |
3. 查看存储引擎
show engines;
show create table s19.city;
select table_schema,table_name,engine from information_schema.tables where engine='innodb';
select @@default_storage_engine;
4. Innodb存储引擎物理存储方式介绍
表空间(TBS)管理模式:
- 独立表空间: 每个表单独使用表空间存储
-rw-rw----. 1 mysql mysql 1675 10月 6 21:25 city.frm ----->city表的列的相关信息
-rw-rw----. 1 mysql mysql 114688 10月 6 21:25 city.ibd ----->city表的数据和索引
其中.ibd
文件, 被称之为表空间数据文件
- 共享表空间: 所有的表数据统一放在一起
-rw-rw----. 1 mysql mysql 18874368 10月 7 17:24 ibdata1
mysql5.5版本: 表默认管理模式是共享表空间
mysql5.6版本以后: 表默认管理模式是独立表空间, 共享表空间也存在, 负责存一些系统表以及undo日志, tmp临时表
一般在初始化数据的时候就配置好共享表空间
/etc/my.cnf
innodb_data_file_path=ibdata1:512M;ibdata2:512M;autoextend
生产案例:
zabbix使用的是mysql5.5, 默认是共享表空间, 过一段时间, ibdata1文件越来越大, zabbix很慢, 文件容量已经达到500G
建议:
- 升级数据库到5.6或5.7版本
- 使用tokudb存储引擎