InnoDB存储引擎简介

前言:html

存储引擎是数据库的核心,对于 MySQL 来讲,存储引擎是以插件的形式运行的。虽然 MySQL 支持种类繁多的存储引擎,但最经常使用的当属 InnoDB 了,本篇文章将主要介绍 InnoDB 存储引擎相关知识。mysql

1. InnoDB 简介

MySQL 5.5 版本之后,默认存储引擎就是 InnoDB 了。 InnoDB 是一种兼顾了高可靠性和高性能的通用存储引擎。在 MySQL 5.7 中,除非你配置了其余默认存储引擎,不然执行 CREATE TABLE 不指定 ENGINE 的语句将建立一个 InnoDB 表。sql

# 查看MySQL支持的存储引擎
mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

# 查看默认存储引擎
mysql> show variables like 'default_storage_engine';
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+

2. InnoDB 优点

InnoDB 之因此如此受宠,主要在于其功能方面的较多优点。数据库

1)支持事务安全

InnoDB 最重要的一点就是支持事务,能够说这是 InnoDB 成为 MySQL 中最流行的存储引擎的一个很是重要的缘由。此外 InnoDB 还实现了 4 种隔离级别(READ UNCOMMITTED,READ COMMITTED,REPEATABLE READ 和 SERIALIZABLE),使得对事务的支持更加灵活。服务器

2)灾难恢复性好并发

InnoDB 经过 commit、rollback、crash-recovery 来保障数据的安全。app

具体来讲,crash-recovery 就是指若是服务器由于硬件或软件的问题而崩溃,无论当时数据是怎样的状态,在重启 MySQL 后,InnoDB 都会自动恢复到发生崩溃以前的状态。ide

3)使用行级锁高并发

InnoDB 改变了 MyISAM 的锁机制,实现了行锁。虽然 InnoDB 的行锁机制是经过索引来完成的,但毕竟在数据库中大部分的 SQL 语句都要使用索引来检索数据。行锁定机制也为 InnoDB 在承受高并发压力的环境下加强了不小的竞争力。

4)实现了缓冲处理

InnoDB 提供了专门的缓冲池,实现了缓冲管理,不只能缓冲索引也能缓冲数据,经常使用的数据能够直接从内存中处理,比从磁盘获取数据处理速度要快。在专用数据库服务器上,一般会将最多80%的物理 memory 分配给缓冲池。

5)支持外键

InnoDB 支持外键约束,检查外键、插入、更新和删除,以确保数据的完整性。存储表中的数据时,每张表的存储都按主键顺序存放,若是没有显式在表定义时指定主键,InnoDB 会为每一行生成一个6字节的 ROWID ,并以此做为主键。

总结:

本篇文章简单介绍了 InnoDB 存储引擎及其优点,想深刻学习 MySQL ,InnoDB 绝对是一块绕不开的重点知识。关于 InnoDB 的内容还有不少,后面有机会的话能够多写写。

参考:

wx_blog.png

相关文章
相关标签/搜索