MySQL学习【第10篇】MySQL的存储引擎

版权声明:本文为博主原创文章,未经博主允许不得转载。 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>;

猜你喜欢

转载自blog.csdn.net/weixin_44558760/article/details/88846308