InnoDB是事务安全的MySQL存储引擎,设计上采用了类似了Oracle数据库的架构。通常来说,InnoDB存储引擎是OLTP应用中核心表的首选存储引擎。同时,也正是因为InnoDB的存在,才使MySQL数据库变得更有魅力。
InnoDB存储引擎概述:
InnoDB存储引擎最早由Innobase Oy公司开发,被包括在MySQL数据库所有的二进制发行版本中,从MySQL5.5版本开始是默认的表存储引擎(之前的版本InnoDB存储引擎仅在Windows下为默认的存储引擎)。该存储引擎是第一个完整支持ACID事务的MySQL存储引擎(BDB是第一个支持事务的MySQL存储引擎,现在已经停止开发),其特点是:行锁设计、支持MVCC、支持外键、提供一致性非锁定读,同时被设计用来最有效地利用以及使用内存和CPU。
==============引擎,是基于表实现的。
存储引擎:
- 1.在建立表的时候,会选择存储引擎engine
- 2.mysql支持多种存储引擎,每一种存储引擎有自己的独立的特色,面向不同的使用场景。
(现在大部分场景在用InnoDB引擎)
mysql经典版本:
5.1
5.5
5.6
5.7
=====看mysql版本的方法:
- ①select version();
- ②show variables like ‘%version%’;
- ③刚开始登录的时候。
show engines; --》查看所有引擎
===
mysql> show engine innodb status \G;
=====InnoDB引擎(也有版本)的特点:
- 1.支持行锁(各干各的活,互不影响)、并发性能好;
- 2.支持MVCC(多版本并发控制Multi-Version Concurrency Control)(避免使用锁);
- 3.支持外键(核心:在外表上插入一个值时,要在主表上有才能插入;在主表上查询时,外表上要有相关的引用);
- 4.提供一致性非锁定读,并发性能更强;
- 5.能够使用大内存和充分利用cpu资源。
=======InnoDB体系架构
下图简单显示了InnoDB的存储引擎的体系结构,从图可见,InnoDB存储引擎有多个内存块,可以认为这些内存块组成了一个大的内存池,负责以下工作:
- 维护所有进程/线程需要访问的多个内部数据结构;
- 缓存磁盘上的数据,方便快速地读取,同时在对磁盘文件的数据修改之前在这里缓存。
- 重做日志(redo log)缓冲。
- ……