mysql 表类型和存储引擎

41 mysql 表类型和存储引擎

41.1 基本介绍

  1. MySQL的表类型由存储引擎(Storage Engines)决定,主要包括 MyISAM、innoDB、Memory等。
  2. MySQL 数据库主要支持六种类型,分别是:CSV、Memory、ARCHIVE、MRG_MYISAM、MYISAM、InnoDB。
  3. 这六种又分为两类,一类是 “事务安全型”(transaction-safe),比如:InnoDB;其余都属于第二类,称为 “非事务安全型”(non-transaction-safe)【myisam 和 memory】
  4. 显示当前数据库支持的存储引擎的指令如下:
show engines;

mysql 表类型和存储引擎_第1张图片

41.2 主要的存储引擎/表类型特点

mysql 表类型和存储引擎_第2张图片

41.3 细节说明

这里重点介绍三种: MyISAM、InnoDB、MEMORY

  1. MyISAM 不支持事务、也不支持外键,但是其访问速度快,对事务完整性没有要求。

  2. InnoDB 存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是比起 MyISAM 存储引擎,InnoDB 写的处理效率会差一些,并且会占用更多磁盘空间以保留数据和索引。

  3. MEMORY 存储引擎使用存在内存中的内容来创建表。每个 MEMORY 表只实际对应一个磁盘文件。MEMORY 类型的表访问非常得快,因为它的数据是放在内存中的,并且默认使用 HASH 索引。但是一旦 MySQL 服务关闭,表中数据就会丢失掉,表的结构还在。

41.4 三种存储引擎表使用案例

对前面提到的三种存储引擎,举例说明:

-- 表类型和存储引擎

-- 查看所有的存储引擎
SHOW ENGINES
-- innodb 存储引擎,是前面使用过.
-- 1. 支持事务 2. 支持外键 3. 支持行级锁

-- myisam 存储引擎
CREATE TABLE t28 (
	id INT,
	`name` VARCHAR(32)) ENGINE MYISAM
-- 1. 添加速度快 2. 不支持外键和事务 3. 支持表级锁

START TRANSACTION;
SAVEPOINT t1
INSERT INTO t28 VALUES(1, 'jack');
SELECT * FROM t28;
ROLLBACK TO t1

-- memory 存储引擎
-- 1. 数据存储在内存中[关闭了Mysql服务,数据丢失, 但是表结构还在] 
-- 2. 执行速度很快(没有IO读写) 3. 默认支持索引(hash表)

CREATE TABLE t29 (
	id INT,
	`name` VARCHAR(32)) ENGINE MEMORY
DESC t29
INSERT INTO t29
	VALUES(1,'tom'), (2,'jack'), (3, 'hsp');
SELECT * FROM t29

-- 指令修改存储引擎
ALTER TABLE `t29` ENGINE = INNODB

41.5 如何选择表的存储引擎

  1. 如果你的应用不需要事务,处理的只是基本的 CRUD 操作,那么 myisam 是不二选择,速度快。

  2. 如果需要支持事务,选择 InnoDB 。

  3. memory 存储引擎就是将数据存储在内存中,由于没有磁盘 / I.O 的等待,速度极快。但由于是内存存储引擎,所做的任何修改在服务器重启后都将消失 。(经典用法:用户的在线状态

mysql 表类型和存储引擎_第3张图片

41.6 修改存储引擎

ALTER TABLE `表名` ENGINE = 存储引擎;

你可能感兴趣的:(数据库,mysql,数据库,database)