【56-60】存储引擎
2022-02-14 08:30:00
# MySQL
概述
查询MySQL可用引擎
- 默认 InnoDB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)
完整的相关建表语句
- 其中就有 ‘ENGINE’ 字段
- 也有 ‘CHARSET’ 字段,字符集
1
2
3
4
5
6
7
8
9
10
11CREATE TABLE `emp` (
`EMPNO` int NOT NULL,
`ENAME` varchar(10) DEFAULT NULL,
`JOB` varchar(9) DEFAULT NULL,
`MGR` int DEFAULT NULL,
`HIREDATE` date DEFAULT NULL,
`SAL` double(7,2) DEFAULT NULL,
`COMM` double(7,2) DEFAULT NULL,
`DEPTNO` int DEFAULT NULL,
PRIMARY KEY (`EMPNO`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
什么是存储引擎
- 只在 MySQL 存在(Oracle中有相应的机制,不叫存储引擎,无特殊规定,就是’表的存储方式’)
- 每一个都对应一种不同的存储方式,都有优缺点
常见存储引擎
MyISAM
- 常用的引擎
- 由三个文件组成:表结构(格式文件.frm),表中数据(数据文件.MYD),表的索引(索引文件.MYI)
- 灵活的 auto_increment
- 可被压缩,可以转化为只读表来节省空间
- 不支持事务
InnoDB
- 默认的存储引擎
- 支持事务,安全
- 提供行级锁、外键等
- 数据存储在tablespace表空间中(逻辑概念)中,无法被压缩,无法被转化为只读
- 在MySQL服务器崩溃后自动恢复
- 级联删除,级联更新(父表相应字段删除更改,子表相应记录删除更改)
MEMORY
- 不支持事务
- 数据容易丢失,数据索引存于内存当中,不过查询速度最快
- 以前叫做 HEAP
- 不能存储 TEXT(CLOB)和 BLOB