版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_44558760/article/details/88846308
一、存储引擎简介
1、什么是存储引擎?
存储引擎就是存储数据,建立索引,更新查询数据等等技术的实现方;
存储引擎是基于表的,而不是基于库的。所以存储引擎也可被称为表类型;
总之,存储引擎的各项特性就是为了保障数据库的安全和性能设计结构。
2、什么是文件系统?
文件系统是操作系统组织和存取数据的一种机制,文件系统是一种软件;
不管使用什么文件系统,数据内容不会变化;
不同的是:存储空间、大小、速度。
3、文件系统类型有哪些?
文件系统类型:ext2、ext3、 ext4(centos6)、xfs(centos7)数据;
4、MySQL引擎是什么?
MySQL引擎可以理解为:MySQL的“文件系统”,只不过功能更加强大;
MySQL引擎功能:除了可以提供基本的存取功能,还有更多功能事务功能、锁定、备份和恢复、优化以及特殊功能。
二、MySQL自带存储引擎类型
1、MySQL提供以下存储引擎:
- InnoDB #重要
- MyISAM #了解
- MEMORY #Hash算法
- ARCHIVE
- FEDERATED
- EXAMPLE
- BLACKHOLE
- MERGE
- NDBCLUSTER
- CSV
2、第三方存储引擎:
- MySQL当中插件式的存储引擎类型
- MySQL的两个分支:perconaDB、mariaDB
#查看当前MySQL支持的存储引擎类型
mysql> show engines;
#查看innodb的表有哪些
mysql> select table_schema,table_name,engine from information_schema.tables where engine='innodb';
#查看myisam的表有哪些
mysql> select table_schema,table_name,engine from information_schema.tables where engine='myisam';
3、innodb和myisam的区别
物理上的区别:
#进入mysql目录(Myisam)
[root@db01~l]# cd /application/mysql/data/mysql
#查看所有user的文件
[root@db01 mysql]# ll user.*
-rw-rw---- 1 mysql mysql 10684 Mar 6 2017 user.frm
-rw-rw---- 1 mysql mysql 960 Aug 14 01:15 user.MYD
-rw-rw---- 1 mysql mysql 2048 Aug 14 01:15 user.MYI
#进入word目录(Innodb)
[root@db01 world]# cd /application/mysql/data/world/
#查看所有city的文件
[root@db01 world]# ll city.*
-rw-rw---- 1 mysql mysql 8710 Aug 14 16:23 city.frm
-rw-rw---- 1 mysql mysql 688128 Aug 14 16:23 city.ibd
4、innodb简介
在MySQL5.5版本之后,innodb是默认的存储引擎,提供高可靠性和高性能:
- 事务安全(遵从 ACID)
- MVCC(Multi-Versioning Concurrency Control,多版本并发控制)
- InnoDB 行级别锁定
- Oracle 样式一致非锁定读取
- 表数据进行整理来优化基于主键的查询
- 支持外键引用完整性约束
- 大型数据卷上的最大性能
- 将对表的查询与不同存储引擎混合
- 出现故障后快速自动恢复
- 用于在内存中缓存数据和索引的缓冲区池
重点:MVCC、事务、行级锁、热备份、Crash Safe Recovery(自动故障恢复)
5、查看存储引擎
1)使用 SELECT 确认会话存储引擎
#查询默认存储引擎
SELECT @@default_storage_engine;
2)使用 SHOW 确认每个表的存储引擎
#查看表的存储引擎
SHOW CREATE TABLE City\G
SHOW TABLE STATUS LIKE 'CountryLanguage'\G
3)使用 INFORMATION_SCHEMA 确认每个表的存储引擎
#查看表的存储引擎
SELECT TABLE_NAME, ENGINE FROM
INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'City'
AND TABLE_SCHEMA = 'world'\G
6、存储引擎的设置
1)在启动配置文件中设置服务器存储引擎
#在配置文件的[mysqld]标签下添加
[mysqld]
default-storage-engine=<Storage Engine>
2)使用 SET 命令为当前客户机会话设置
#在MySQL命令行中临时设置
SET @@storage_engine=<Storage Engine>
3)在CREATE TABLE 语句指定
#建表的时候指定存储引擎
CREATE TABLE t (i INT) ENGINE = <Storage Engine>;