MySQL体系结构
存储引擎简介
存储引擎就是存储数据,建立索引更新或查询数据等技术的实现方式,存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。MySQL 5.5 之后默认InnoDB。
-- 指定存储引擎
create table tb_name (
列名 数据类型 comment 声明
, ...
) engines = 存储引擎名;
-- 查看当前数据库支持的存储引擎
show engines;
存储引擎特点
InnoDB
- 是一种兼顾高可靠性和高性能的通用存储引擎。
- 特点
- DML操作遵循acid模型支持事务。
- 行级锁,提高并发访问性能。
- 支持外键foreign key约束,保证数据的完整性和正确性。
- 文件:tb_name.ibd:InnoDB引擎的每张表都会对应一个这样的表空间文件,存储该表的表结构(frm、sdi)、数据和索引。【参数 innodb_file_per_table:所有表共用一个表空间文件还是每张表建立一个表空间文件】
如果想查看表的结构,可以打开cmd执行以下语句:-- 查看参数innodb_file_per_table的值 show variables like 'innodb_file_per_table';
- 逻辑存储结构
MyISAM
- 是MySQL早起默认的存储引擎
- 特点
- 不支持事务,不支持外键
- 支持行锁,不支持表锁
- 访问速度快
- 文件
- tb_name.sdi:存储表结构
- tb_name.MYD:存储数据
- tb_name.MYI:存储索引
Memory
- Memory引擎的表述句是存储在内存中的,由于受到硬件问题、断电问题的影响,只能将这些表作为临时表或缓存使用
- 特点
- 内存存放
- 支持hash索引(默认)
- 文件:tb_name.sdi:存储表结构信息
存储引擎选择
- InnoDB:是MySQL的默认存储引擎,支持事务、外键。如果应用对事性有比较高的要求,在民法条件下要求数据的一致性,数据操作除了插入和查询之外,还包含了很多的更新、删除操作,可以选择InnoDB。(绝大情况)
- MyISAM:如果应用是以读操作和插入操作为主,只有很少的更新和删除操作。并且对事物的完整性,并发性要求不是很高,那么选择这个存储引擎是非常合适。
- Memory:将所有数据保存在内存中,访问速度快,通常用于临时表以及缓存。缺陷就是对表的大小有限制,太大的表无法缓存在内存中,而且无法保证数据的安全性。
不总结=白学
THE END