本次博客带领大家学习mysql数据库中的表类型和存储引擎。
- 基本介绍:
- MySQL的表类型由存储引擎(Storage Engines)决定,主要包括MyISAM、innoDB、Memory等。
- MySQL数据表主要支持六种类型,分别是:CSV、Memory、ARCHIVE、MRG_MYISAM、MYISAM、InnoBDB。
- 这六种又分为两类,一类是"事务安全型"(transaction-safe),比如:InnoDB;其余都属于第二类,称为"非事务安全型"(non-transaction-safe),比如mysiam 和 memory。
- 主要的存储引擎/表类型特点:
- 细节说明:
- MyISAM不支持事务、也不支持外键,但其访问速度快,对事务完整性没有要求。
- InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是比起MyISAM存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。
- MEMORY存储引擎使用存在内存中的内容来创建表。每个MEMORY表只实际对应一个磁盘文件。MEMORY类型的表访问非常快,因为它的数据是放在内存中的,并且默认使用HASH索引。但是一旦MySQL服务关闭,表中的数据就会丢失掉,表的结构还在。
- 如何选择表的存储引擎:
- 如果你的应用不需要事务,处理的只是基本的CRUD操作,那么MyISAM是不二选择,速度快。
- 如果需要支持事务,选择InnoDB。
- Memory 存储引擎就是将数据存储在内存中,由于没有磁盘I/O的等待,速度极快。但由于是内存存储引擎,所做的任何修改在服务器重启后都将消失。
- 修改存储引擎
alter table `表名` ENGINE = 存储引擎;
-- 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.数据存储在内存中 2.执行速度很快(没有IO读写) 3.默认支持索引(hash表)
CREATE TABLE t29(
id INT,
`name` VARCHAR(32)) ENGINE MEMORY
INSERT INTO t29 VALUES(1,'jack'),(2,'tom'),(3,'ld');
SELECT * FROM t29;
-- 指令修改存储引擎
ALTER TABLE t29 ENGINE = INNODB;