存储引擎1.基本介绍
- 基本介绍
- MySQL的表类型由存储引擎(Storage Engines)决定 , 主要包括MyISAM、innoDB、Memory等
- MySQL数据表主要支持六种类型 , 分别是:CSV , Memory , ARCHIVE , MRG_MYISAM , MYISAM , InnoBDB 。
- 这六种又分为两类 , 一类是”事务安全型“(transaction-safe) , 例如:InnoDB 。
剩下的五种都是第二类 , 称为“非事务安全型”(non-transaction-safe)
文章插图
数据库中的表也应该有不同的类型 , 表的类型不同 , 会对应mysql不同的存取机制 , 表类型又称为存储引擎 。
- 主要的存储引擎(表类型)特点
- 细节说明
- MyISAM不支持事务 , 也不支持外键 , 但是其访问速度快 , 对事务完整性没有要求
- InnoDB存储引擎提供了具有提交、回滚和崩溃能力的事务安全 。但是比起MyISAM存储引擎 , InnoDB写得处理效率差一些 , 并且会占用更多的磁盘空间以保留数据和索引
- MEMORY存储引擎使用存在内存中的内容来创建表 。每个MEMORY表只实际对应一个磁盘文件 。MEMORY类型的表访问非常地快 , 因为它的数据是存放在内存中的 , 并且默认使用HASH索引 。但是一旦MySQL服务关闭 , 表中的数据就会丢失 , 表的结构还在 。
- 三种存储引擎表使用案例
对于前面我们提到的三种存储引擎 , 我们举例说明
-- 表类型和存储引擎-- 查看所有的存储引擎SHOW ENGINES-- InnoDB存储引擎是前面使用过的-- 1.支持事务 2.支持外键 3.支持行级锁-- myisam存储引擎CREATE TABLE t28( id INT, `name` VARCHAR(32)) ENGINE MYISAM-- 1.添加速度快 2.不支持外键和事务 3.支持表级锁START TRANSACTION;SAVEPOINT a;INSERT INTO t28 VALUES(1,'jack');SELECT * FROM t28;ROLLBACK TO a; -- 失败 , myisam不支持事务-- memory存储引擎-- 1.数据存储在内存中[关闭了mysql服务表数据就会丢失 , 但是表结构还在]-- 2.执行速度佷快(没有IO读写) 3.默认支持索引(hash表)CREATE TABLE t29( id INT, `name` VARCHAR(32)) ENGINE MEMORYINSERT INTO t29 VALUES(1,'tom'),(2,'jack'),(3,'hsp');SELECT * FROM t29;-- 重启mysql服务之后DESC t29; -- 表结构还在SELECT * FROM t29;-- 表数据丢失了
- 如何选择表的存储引擎
- 如果你的应用不需要事务 , 处理的只是基本的CRUD操作 , 那么MyISAM是不二选择 , 速度快
- 如果需要支持事务 , 选择InnoDB
- Memory存储引擎就是将数据存储在内存中 , 由于没有磁盘IO的等待 , 速度极快 。但由于是内存存储引擎 , 所做的任何修改在服务器重启后都将消失 。(经典用法:用户的在线状态)
文章插图
- 指令修改存储引擎
alter table table_name engine = 存储引擎名;
例子
-- 表类型和存储引擎-- 查看所有的存储引擎SHOW ENGINES-- InnoDB存储引擎是前面使用过的-- 1.支持事务 2.支持外键 3.支持行级锁-- myisam存储引擎CREATE TABLE t28( id INT, `name` VARCHAR(32)) ENGINE MYISAM-- 1.添加速度快 2.不支持外键和事务 3.支持表级锁START TRANSACTION;SAVEPOINT a;INSERT INTO t28 VALUES(1,'jack');SELECT * FROM t28;ROLLBACK TO a; -- 失败 , myisam不支持事务-- memory存储引擎-- 1.数据存储在内存中[关闭了mysql服务表数据就会丢失 , 但是表结构还在]-- 2.执行速度佷快(没有IO读写) 3.默认支持索引(hash表)CREATE TABLE t29( id INT, `name` VARCHAR(32)) ENGINE MEMORYINSERT INTO t29 VALUES(1,'tom'),(2,'jack'),(3,'hsp');SELECT * FROM t29;-- 重启mysql服务之后DESC t29; -- 表结构还在SELECT * FROM t29;-- 表数据丢失了-- 修改存储引擎名ALTER TABLE t29 ENGINE = INNODB;
经验总结扩展阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 分布式存储系统之Ceph集群CephFS基础使用
- 07 ClickHouseClickHouse数据库引擎解析
- 分布式存储系统之Ceph集群RBD基础使用
- 大葱过冬的存储方法
- 分布式存储系统之Ceph集群CephX认证和授权
- 分布式存储系统之Ceph集群存储池操作
- 分布式存储系统之Ceph集群存储池、PG 与 CRUSH
- 引擎之旅 Chapter.4 日志系统
- 分布式存储系统之Ceph集群状态获取及ceph配置文件说明
- 分布式存储系统之Ceph集群访问接口启用