MySQL技术内幕InnoDB存储引擎(一)——MySQL体系结构和存储引擎
1.数据库和实例
数据库(database)和实例(instance)不能混淆。
什么是数据库
数据库是物理操作系统文件或其他文件类型的集合。说白了,就是存储着的文件,不会运行起来,只能被实例增删改查,用户不能脱离实例,直接操作。
什么是实例
实例是MySQL数据库由后台线程以及一个共享内存区组成。说白了,就是一个正在运行的进程,是用户和操作系统的一层数据管理软件,用户需要通过实例来操数据库。
二者关系
二者是一一对应的,但是在集群的情况下,可以多对多。
用户需要通过实例操作数据库。就像我们不能直接打开视频文件,需要一个视频解码播放软件来打开视频文件,才能直接讲视频播放出来。
2.MySQL体系结构

从图中可以看出,MySQL由以下几个部分构成:
- 连接池组件
- 管理服务和工具组件
- SQL接口组件
- 查询解析器组件
- 优化器组件
- 缓冲器组件
- 插件式存储引擎
- 物理文件
3.MySQL存储引擎
MySQL插件式存储引擎架构提供了标准的管理和服务支持,这些标准与存储引擎本身无关,而存储引擎是底层物理结构的实现。
需要注意的是,存储引擎是基于表的,而不是数据库。
使用存储引擎的好处
- 每个存储引擎都有自己的特点,能够根据具体的应用建立不同存储引擎表。
- 程序员可以自己根据业务特点对存储引擎进行改进。
存储引擎分类
- InnoDB
支持事务,设计的目标主要是面向在线事务处理的应用。其特点是行锁设计、支持外键,还有读操作不加锁/。从MySQL5.5.8开始,InnoDB是默认存储引擎。最常用。 - MyISAM
不支持事务、支持表锁,支持全文索引,主要面向一些OLAP(联机分析处理)数据库应用,也就是没有事务,主要是依赖系统磁盘吞吐量。只缓存索引文件,不缓冲数据文件。 - NDB
一种集群存储引擎,提供高可用性。全部数据放在内存中,因此主键查找速度极快。连接操作放在了数据库层实现,而不是存储引擎,所以,连接操作需要巨大的网络开销。 - Memory
顾名思义,将表的数据放在了内存中,如果断电了,数据都没了,所以,适合临时存储的数据。默认使用哈希索引。只支持表锁,并发性能差。 - Maria
用来取代MyISAM的,支持缓存数据和索引文件,添加了行锁设计,支持事务和非事务的选项,更高的字符型的处理性能。

连接MySQL的方式
- TCP/IP连接
任何平台下都能提供,网络中使用最多,就是通过传输层建立的持续性连接。 - 命名管道
windows平台专有的连接服务。 - 共享内存
- UNIX套接字
不是网络协议,只能在一台服务器上实现。
MySQL技术内幕InnoDB存储引擎(一)——MySQL体系结构和存储引擎的更多相关文章
- mysql技术内幕InnoDB存储引擎-阅读笔记
mysql技术内幕InnoDB存储引擎这本书断断续续看了近10天左右,应该说作者有比较丰富的开发水平,在源码级别上分析的比较透彻.如果结合高可用mysql和高性能mysql来看或许效果会更好,可惜书太 ...
- 《mysql技术内幕 InnoDB存储引擎(第二版)》阅读笔记
一.mysql架构 mysql是一个单进程多线程架构的数据库. 二.存储引擎 InnoDB: 支持事务 行锁 读操作无锁 4种隔离级别,默认为repeatable 自适应hash索引 每张表的存储都是 ...
- Mysql技术内幕——InnoDB存储引擎
Mysql技术内幕——InnoDB存储引擎 http://jingyan.baidu.com/article/fedf07377c493f35ac89770c.html 一.mysql体系结构和存储引 ...
- 《MySQL技术内幕 InnoDB存储引擎 》学习笔记
第1章 MySQL体系结构和存储引擎 1.3 MySQL存储引擎 数据库和文件系统最大的区别在于:数据库是支持事务的 InnoDB存储引擎: MySQL5.5.8之后默认的存储引擎,主要面向OLTP ...
- 【Mysql技术内幕InnoDB存储引擎】读书笔记
一.存储引擎 1.InnoDB引擎 设计目标是面向在线事务(OLTP)处理的应用. 支持事务.行级锁.通过多版本并发控制(MVCC)支持高并发.提供一致性非锁定读.next-key locking避免 ...
- MySQL技术内幕InnoDB存储引擎(三)——文件相关
构成MySQL数据库和InnoDB存储引擎表的文件类型有: 参数文件:MySQL实例运行时需要的参数就是存储在这里. 日志文件:用来记录MySQL实例对某种条件做出响应时写入的文件. socket文件 ...
- (转)Mysql技术内幕InnoDB存储引擎-表&索引算法和锁
表 原文:http://yingminxing.com/mysql%E6%8A%80%E6%9C%AF%E5%86%85%E5%B9%95innodb%E5%AD%98%E5%82%A8%E5%BC% ...
- MySQL技术内幕InnoDB存储引擎(表&索引算法和锁)
表 4.1.innodb存储引擎表类型 innodb表类似oracle的IOT表(索引聚集表-indexorganized table),在innodb表中每张表都会有一个主键,如果在创建表时没有显示 ...
- MySQL技术内幕InnoDB存储引擎(七)——事务
什么是数据库的事务? 事务是访问并更新数据库中各种数据的一个程序执行单元.事务也是数据库区别于文件系统的一个重要特性. 事务需要满足的特性 1.原子性 原子性就是指数据库中的一个完整的事务是不可分割的 ...
随机推荐
- linux命令查看日志
首先介绍几个日志查看种常用的简单命令: 1.tail tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件. tail -f filename 会把 filenam ...
- python之路《五》字符串的操作
python的里的字符串的操作是可以说是最常见也是最实用的 我们通常使用双引号来表示字符串" "创建字符串很简单,定义一个变量就可以了 1 name = 'my name \t i ...
- Redis分布式锁的正确使用与实现原理
模拟一个电商里面下单减库存的场景. 1.首先在redis里加入商品库存数量. 2.新建一个Spring Boot项目,在pom里面引入相关的依赖. <dependency> <gro ...
- MySQL索引背后的数据结构及原理
摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BT ...
- git操作之三:git reset
在上篇文章中介绍了git restore命令,该命令的可以看作是撤销命令,文件在不同的状态下,使用git restore <file> 命令,会撤销对文件的修改,是文件回到修改前的状态也就 ...
- 神秘、常用、多变的Binder
今天说说神秘又常用又多变的Binder~ Binder是什么 Binder通信过程和原理 在Android中的应用 Binder优势 Binder是什么 先借用神书<Android开发艺术探索& ...
- FL Studio中echo的延迟作用
今天来一起研究FL Studio的Echo Delay的作用,Echo Delay可以从MIDI输入创建回声,并允许我们通过音量,声像,切除和共振,音高和时间来操纵延迟. 图1:Echo Dealy ...
- CF453C Little Pony and Summer Sun Celebration
如果一个点需要经过奇数次我们就称其为奇点,偶数次称其为偶点. 考虑不合法的情况,有任意两个奇点不连通(自己想想为什么). 那么需要处理的部分就是包含奇点的唯一一个连通块.先随意撸出一棵生成树,然后正常 ...
- P5851 [USACO19DEC]Greedy Pie Eaters P
如果只考虑选哪些奶牛吃派和奶牛吃派的顺序,就会陷入僵局,那么我们可以考虑派的情况. 套路地令 \(f_{i,j}\) 表示 \(i\sim j\) 这一段派,能满足一些奶牛,它们的最大可能体重. \[ ...
- java Base64算法
Base64算法并不是加密算法,他的出现是为了解决ASCII码在传输过程中可能出现乱码的问题.Base64是网络上最常见的用于传输8bit字节码的可读性编码算法之一.可读性编码算法不是为了保护数据的安 ...