第十三章:MySQL的存储引擎
存储引擎是MySQL的组件,用于处理不同表类型的SQL操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。
使用哪一种引擎可以灵活选择,一个数据库中多个表可以使用不同引擎以满足各种性能和实际需求,使用合适的存储引擎,将会提高整个数据库的性能 。
MySQL服务器使用可插拔的存储引擎体系结构,可以从运行中的 MySQL 服务器加载或卸载存储引擎 。
本节目标:理解什么是存储引擎、以及各种存储引擎的特点。
一、什么是存储引擎
数据库存储引擎是数据库底层软件组件。数据库管理系统使用数据引擎进行创建、查询、更新和删除数据的操作。
MYSQL的核心就是存储引擎。
二、MYSQL支持的存储引擎
MYSQL5.7支持的存储引擎有lnnoDB,MylSAM, Memory等。
可以使用SHOW ENGINES语句查看系统所支持的引擎类型。
1、lnnoDB存储引擎
1)、InnoDB给MySQL提供了具有提交、回滚和崩溃恢复能力的事务安全存储引擎。
2)、对于处理巨大数据量的数据拥有很好的性能。
3)、InnoDB存储引擎支持外键完整性约束。
4)、InnoDB被用在众多需要高性能的大型数据库站点上。
2、MylSAM存储引擎
MylSAM拥有较高的插入、查询速度,但不支持事务。
3、MEMORY存储引擎
MEMORY存储引擎将表中的数据存储到内存中,为查询和引用其他表数据提供快速访问。
使用MySQL Memory存储引擎的出发点是速度。为得到最快的响应时间,采用的逻辑存储介质是系统内存。虽然在内存中存储表数据确实会提供很高的性能,但当mysql守护进程崩溃时,所有的Memory数据都会丢失。获得速度的同时也带来了一些缺陷。
本节目标:熟悉存储引擎的设置
一、存储引擎的选择
不同的存储引擎都有各自的特点,以适应不同的需求。
InnoDB:提供提交、回滚和崩溃恢复能力的事务安全能力,可以实现并发控制。
MyISAM:数据表主要用来插入和查询记录,用MylSAM引擎可以提供较高的处理效率。
Memory: 临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory引擎。
1、设置存储引擎
设置服务器的存储引擎。
在配置文件my.ini中的[mysqld]下面设置需要的存储引擎 default-storage-engine=InnoDB
重启mysql服务器。
2、设置存储引擎
设置客户端的存储引擎
SET default_storage_engine = InnoDB;
3、设置存储引擎
创建表时设置存储引擎
例:
Create table mytest(
id int primary key,
name varchar(10)
)ENGINE = InnoDB DEFAULT CHARSET = utf8;
4、设置存储引擎
修改表的存储引擎
Alter table tableName engine =engineName
-- 在客户端设置存储引擎的命令 set default_storage_engine = InnoDB; -- 查看存储引擎 show engines; -- 创建表的同时设置存储引擎 create table myengine( id int primary key, name varchar(10) )engine=MyISAM; -- 查看表的存储引擎信息 show table status from book where name = 'myengine'; -- 更改表的存储引擎 alter table myengine engine = InnoDB; show table status from book where name = 'myengine';