存储引擎
- 存储引擎
- 1.MySQL体系结构
- 2.存储引擎简介
- 3.存储引擎特点
- 3.1 InnoDB
- 3.2 MyISAM
- 3.3 Memory
- 4. 存储引擎选择
存储引擎
1.MySQL体系结构
2.存储引擎简介
存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现。存储引擎是基于表的,而不是基于库的,所以存储引擎也称为表类型。
-- 查询建表语句 默认引擎为InnoDB
show create table account;
返回结果
CREATE TABLE
account
(
id
int(11) NOT NULL AUTO_INCREMENT COMMENT ‘ID’,
name
varchar(10) DEFAULT NULL COMMENT ‘姓名’,
money
int(11) DEFAULT NULL COMMENT ‘账户’,
PRIMARY KEY (id
)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT=‘账户表’
-- 查询当前数据库支持的存储引擎
show engines;
-- 创建my_myisam 并指定MyISAM存储引擎
create table my_myisam(
id int,
name varchar(10)
)engine = MyISAM ;
-- 创建my_memory 指定存储引擎为memory
create table my_mymemory(
id int,
name varchar(10)
)engine = MEMORY ;
3.存储引擎特点
3.1 InnoDB
- 介绍
InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在mysql5.5之后,InnoDB是默认的MySQL存储引擎。
- 特点
DML是遵循ACID模型,支持事务;
行级锁,是提高并发访问性能;
支持外键FOREIGN KEY 约束,保证数据的完整性和正确性;
- 文件
xxx.ibd:xxx代表的表名,InnoDB引擎每张表都会对应一个表空间文件,存储该表的表结构(frm、sdi)、数据和索引。
参数:innodb_file_per_table 决定所有表用一个表空间,还是每张表对应一个表空间(on);
-- 查询innoDB的参数
show variables like 'innodb_file_per_table'
文件存储每个表单独对应一个表结构
- 逻辑存储结构
3.2 MyISAM
- 介绍
MyISAM是MySQL早期支持的默认存储引擎。
- 特点
不支持事务,不支持外键
支持表锁,不支持行锁
访问速度快
- 文件
my_myisam.MYD:存储数据 xxx.MYD
my_myisam.MYI:存储索引 xxx.MYI
my_myisam_417.sdi:存储表结构信息 xx.sdi
3.3 Memory
- 介绍
memory引擎的表数据时存储在内存中的,由于受硬件问题、或断电问题的影响,只能将这些表作为临时表或缓存使用。
- 特点
内存存放
hash索引(默认)
- 文件
xxx.sdi:存储表结构信息
4. 存储引擎选择
在选择存储引擎时,应该根据应用系统的特点选择合适的存储引擎。对于复杂的应用系统,还可以根据实际情况选择多种存储引擎进行组合