MySQL系列(一) MySQL体系结构概述
1 MySQL 的体系结构
- 连接池组件
- 管理服务和工具组件
- SQL接口组件
- 查询分析器组件
- 优化器组件
- 缓冲组件
- 插件式存储引擎(体系结构的核心)
- 物理文件
2 InnoDB 概述
- InnoDB存储引擎支持事务,设计目标主要面向在线事务处理OLTP的应用,其特点是行锁设计,支持外键,并支持类似于Oracle的非锁定读,即默认读取操作不会产生锁,5.58后成为默认引擎
- InnoDB使用MVCC(多版本并发)控制来获得高并发性,并且实现了SQL标准的4种隔离级别
- InnoDB还提供了插入缓冲,二次写,自适应哈希索引,预读等实用功能
- InnoDB采用聚集索引的方式,每张表的存储都是按照主键的顺序进行存放
- 最有效利用以及使用内存的cpu 的存储引擎,好性能,高扩展,高可用
3 其他存储引擎概述
- MyISAM :面向 OLAP,不支持事务
- MyISAM不支持事务,表锁设计,支持全文索引,主要面向一些OLAP数据库应用。
- 缓冲池只缓存索引文件,而不缓冲数据。
- DNB: 集群存储引擎
- 集群存储引擎
- 数据全部放在内存中(5.1后可以在磁盘上存非索引数据),主键查找速度极快并且可以通过添加NDB数据存储节点可以线形提高数据库性能,是高性能高可用的集群系统。
- 不过NDB的连接操作是在MySQL数据库层完成的,如果解决了这个问题,NDB的的市场是非常巨大的。
- Memory: 数据存放内存
- 之前称之为HEAP引擎,将数据存放在内存中,适合存储临时数据的临时表,以及数据仓库中的维度表
- 使用哈希索引,而不是B+树
- 并发性较差,存储变长字段是按照定长处理的,比较浪费内存
- MyISAM :面向 OLAP,不支持事务
4 InnoDB 体系结构
- 多个内存块组成一个内存池,主要功能:
- 缓存磁盘上的数据
- 重做日志缓冲
- 维护所有进程/线程需要访问的内部数据结构
- 多线程模型
- Master Thread:核心线程,主要负责将缓存池中数据异步刷新到磁盘
- IO Thread: 处理IO请求,负责这些IO请求的毁掉函数处理
- Purge Thread: 回收已经使用并分配的undo(重做日志)页
- Page Cleaner Thread: 处理脏页的刷新操作。
- 多个内存块组成一个内存池,主要功能:
转载于:https://www.cnblogs.com/wang-kai-1994/p/10810364.html
MySQL系列(一) MySQL体系结构概述相关推荐
- 刘道成mysql视频教程_燕十八刘道成Mysql 系列视频教程 Mysql视频教程打包下载
课程名称 燕十八刘道成Mysql 系列视频教程 Mysql视频教程打包下载 课程介绍 本教程完全从初学者的角度出发,循序渐进,逐步深入,确保每一位初学者能够理解和掌握,进而达到精通的程度,本套教程非常 ...
- mysql数据类型查询命令_Linux命令:MySQL系列之三--mysql数据类型及SQL结构化查询语句使用...
MySQL 存储引擎,也被称为表类型: MyISAM表:无事务处理功能,支持表锁 .frm:表结构定义文件 .MYD:表数据文件 .MYI:表索引文件 InnoDB表:支持事务处理功能,支持行锁 .f ...
- 【MySQL系列】 MySQL表的增删改查(进阶)
目录 ??前言 ??一.数据库约束 ???1.1 约束类型 ???1.2 null约束 ???1.3 unique约束 ???1.4 default约束 ???1.5 primary key 约束 ? ...
- 《MySQL系列》MySQL详细入门教程
MySQL学习 MySQL语法 一 事务 针对数据库多次DML操作的时候,保证数据完整性的一种手段 1 ACID A:Aotomicity:原子性.不可被分割.也就是说事务中的所有操作要么成功,要么失 ...
- 【Mysql系列】MySQL创建数据库、CURD的操作
文章目录 创建数据库的命令 MySQL 数据类型 接下来就是在数据库里面创建表了 删除表 给表格中插入数据 查询数据 where语句的使用 修改数据 删除数据(这里我们讲的都是对表格内容进行的操作) ...
- MySql系列之mysql查询执行过程(附Mysql架构图及实操解析)
一 MySql架构图 1.2 执行步骤: 1.客户端发送查询语句给服务器 2 服务器首先检查缓存中 是否存在该查询,若存在,返回缓存中存在的结果 不存在 执行下一步 3服务器进行sql解析 语法检测 ...
- 带你学MySQL系列 | 困扰MySQL初学者的分组聚合查询,我终于讲明白了!
1.分组查询的原理图 对上述原始数据,按照DEPARTMENT_ID(员工id)分组统计SALARY(薪水)的平均值. 上述原理写成代码,应该怎么写呢? select department_id,av ...
- 【MySQL系列】MySQL数据库基础
☕目录☕
- mysql maria引擎_MySQL体系结构和存储引擎概述
一.定义数据库和实例 数据库: 物理操作系统文件或其他形式文件类型的集合.数据库文件可以是frm.MYD.ibd 结尾的文件. 从概念上来说,数据库是文件的集合,是依照某种数据模型组织起来并存放于二级 ...
最新文章
- P8可以年入170万,那P10级别的程序猿,每天都在干嘛?
- [原创]什么是CMM?
- 【AngularJS】—— 8 自定义指令
- 二进制搜索树_将排序的数组转换为二进制搜索树
- mysql设计资源目录售卖_MySQL目录设计一些策略_mysql
- 获取时间,并将时间的空格和特殊字符去掉,作为一个变量来使用
- 软件工程复习提纲——第一章
- 利用JAVA获取远程文件及使用断点续传 供学习者使用
- ps制作20种特效文字_如何使用AE制作文字破碎动画?制作ae破碎文字特效教程分享...
- PHP表单常用正则表达式(URL、HTTP、手机、邮箱等)
- logstash收集TCP端口日志
- java json 根据 key排序
- java比python快多少倍_java为什么比python快
- HTC手机如何进行官方解锁Unlock
- office2018自动图文集_怎么才算工作里要求的“熟练使用office办公软件”?
- Pytorch 基于ResNet-18的物体分类(使用CIFAR-10数据集)
- 手把手入门C语言—输入数组
- discuz手机端默forum.php,discuz手机wap版模板开发方式简述
- Unity笔记-29-ARPG游戏项目-13-打击感(卡肉)与僵直感
- 14行Python代码,让AI和AI无限聊天,他们会聊出什么
热门文章
- vue 3.x 中使用ele-image时相对路径的图片加载失败
- 想尽快进入游戏开发行业的必经之路!
- [react] React的事件和普通的HTML事件有什么不同
- 前端学习(2921):vue的事件
- 前端学习(2914):差值表达式的用法
- 前端学习(2907):Vite的特点
- [html] 你知道微信端的浏览器内核是什么吗?
- [html] 举例说明使用data-有什么优点?
- [css] 一个页面引用多个文件,如何防止样式冲突?
- 工作195:解决key值不唯一的报错