【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
    15
    mysql> 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
    11
    CREATE 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;

什么是存储引擎

  1. 只在 MySQL 存在(Oracle中有相应的机制,不叫存储引擎,无特殊规定,就是’表的存储方式’)
  2. 每一个都对应一种不同的存储方式,都有优缺点

常见存储引擎

MyISAM

  1. 常用的引擎
  2. 由三个文件组成:表结构(格式文件.frm),表中数据(数据文件.MYD),表的索引(索引文件.MYI)
  3. 灵活的 auto_increment
  4. 可被压缩,可以转化为只读表来节省空间
  5. 不支持事务

InnoDB

  1. 默认的存储引擎
  2. 支持事务,安全
  3. 提供行级锁、外键等
  4. 数据存储在tablespace表空间中(逻辑概念)中,无法被压缩,无法被转化为只读
  5. 在MySQL服务器崩溃后自动恢复
  6. 级联删除,级联更新(父表相应字段删除更改,子表相应记录删除更改)

MEMORY

  1. 不支持事务
  2. 数据容易丢失,数据索引存于内存当中,不过查询速度最快
  3. 以前叫做 HEAP
  4. 不能存储 TEXT(CLOB)和 BLOB
Prev
2022-02-14 08:30:00 # MySQL
Next