存储引擎
1. 介绍
MySQL体系结构
MySQL数据库使用不同的机制存取表文件,包括存储方式、引技巧、锁定水平等不同的功能。这些不同的技术以及配套的功能称为存储引擎。
Oracle、SqlServer等数据库只有一种存储引擎。而MySQL针对不同的需求,配置不同的存储引擎,就会让数据库采取不同处理数据的方式和扩展功能。
MySQL支持的存储引擎有很多,常用的有三种:InnoDB、MyISAM、MEMORY。
特性对比
- MyISAM存储引擎:访问快,不支持事务和外键操作。
- InnoDB存储引擎:支持事务和外键操作,支持并发控制,占用磁盘空间大。(MySQL5.5版本后默认)
- MEMORY存储引擎:内存存储,速度快,不安全。适合小量快速访问的数据。
存储引擎介绍
2. 存储引擎的操作
查询数据库支持的存储引擎
SHOW ENGINES;
查询某个数据库中所有数据表的存储引擎
SHOW TABLE STATUS FROM 数据库名称;
查询某个数据库中某个数据表的存储引擎
SHOW TABLE STATUS FROM 数据库名称WHERE NAME=数据表名称;
创建数据表,指定存储引擎
CREAT ETABLE 表名(
列名,数据类型,
...
)ENGINE=引擎名称;
修改数据表的存储引擎
ALTER TABLE 表名 ENGINE=引擎名称
/*
查询数据库支持的存储引擎
SHOW ENGINES;
*/
-- 查询数据库支持的存储引擎
SHOW ENGINES;
/*
查询某个数据库中所有数据表的存储引擎
SHOW TABLE STATUS FROM 数据库名称;
*/
-- 查询db4数据库所有表的存储引擎
SHOW TABLE STATUS FROM db4;
/*
查询某个数据库中某个表的存储引擎
SHOW TABLE STATUS FROM 数据库名称 WHERE NAME = '数据表名称';
*/
-- 查看db4数据库中category表的存储引擎
SHOW TABLE STATUS FROM db4 WHERE NAME = 'category';
/*
创建数据表指定存储引擎
CREATE TABLE 表名(
列名,数据类型,
...
)ENGINE = 引擎名称;
*/
CREATE TABLE engine_test(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(10)
)ENGINE = MYISAM;
SHOW TABLE STATUS FROM db4;
/*
修改数据表的存储引擎
ALTER TABLE 表名 ENGINE = 引擎名称;
*/
-- 修改engine_test表的存储引擎为InnoDB
ALTER TABLE engine_test ENGINE = INNODB;
3. 存储引擎的选择
MyISAM
特点:不支持事务和外键操作。读取速度快,节约资源。
使用场景:以查询操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不是很高!
InnoDB
特点:MySQL的默认存储引擎,支持事务和外键操作。
使用场景:对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,读写频繁的操作!
MEMORY
特点:将所有数据保存在内存中,在需要快速定位记录和其他类似数据环境下,可以提供更快的访问。
使用场景:通常用于更新不太频繁的小表,用来快速得到访问的结果!
总结:针对不同的需求场景,来选择最适合的存储引擎即可!如果不确定、则使用数据库默认的存储引擎&