首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL基础篇(05):逻辑架构图解和InnoDB存储引擎详解

一、MySQL逻辑架构 1、逻辑架构图 基于下面的逻辑架构图,可以大致熟悉MySQL各个架构组件之间的协同工作关系。 ? 很经典的C/S架构风格,即客户端/服务端模式。...存储引擎 MySQL的最底层封装,也是最核心的功能,不同的存储引擎有不同的特点功能,共同点是处理数据的存储和提取。...2、支持关系 可以通过下面两个命令查看MySQL当前版本,和对存储引擎的支持情况。...(2)、架构图解 InnoDB架构图 该图片来自MySQL官网文档。 ? 整体分三层:内存结构,Cache,磁盘结构。...3、其他引擎 在MySQL的体系中,最常使用的就是InnoDB和MyISAM引擎,其他多样的存储引擎可以根据业务需求再去熟悉。

93210
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL的逻辑架构

    MySQL的逻辑架构 1.1 MySQL的简单结构 ? ​ MySQL架构总共三层,在上图中以虚线作为划分。   ...首先,最上层的服务并不是MySQL独有的,大多数给予网络的客户端/服务器的工具或者服务都有类似的架构。比如:连接处理、授权认证、安全等。   第二层的架构包括大多数的MySQL的核心服务。...但存储引擎一般不会去解析SQL(InnoDB会解析外键定义,因为其本身没有实现该功能),不同存储引擎之间也不会相互通信,而只是简单的响应上层的服务器请求。 1.2 MySQL的架构图 ?...更详细的MySQL架构图 Connectors   指的是不同语言中与SQL的交互。 Connection Pool   管理缓冲用户连接,线程处理等需要缓存的需求。...存储引擎接口   MySQL区别于其他数据库的最重要的特点就是其插件式的表存储引擎。

    97520

    Mysql的逻辑架构

    Mysql的逻辑架构图 ? 相信很少有人看过这个图,因为我刚看见的时候也是挺萌的,在工作中一般大家都用的是Mysql也都会用,但是为啥要看这个呢,我们需要对Mysql的整体有一个简单的认知!...Mysql是分层的 整体分为 Connectors:连接驱动 Enterprise Management Services & Utillties :服务管理器和一些工具 Connection Pool...有这么对存储引擎[捂脸] file system:文件系统 也就是C盘D盘只不过图上画的是分了NTFS和SAN files & log : 文件与日志 是不是看完对Mysql又有了一个全新的认识;我也是...由此可见在经过SQL优化器之后,where 1=1被优化掉了,在Mysql看来有where和没有where的执行结果是一致的 源SQL explain select * from esp_76 where...由此可见因为ID是主键,所以不可能为null,所以Mysql在extra中表示出这条SQL是没有返回结果的,并且table字段也是空的,干脆连表都不扫描了 这就是SQL的优化器 太困了,下一章说存储引擎

    53710

    MySQL的逻辑架构

    1.MySQL简介 和其他数据库系统相比, MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥好的作用,但同时也会带来一点选择上的困难。...为了充分发挥MySQL的性能并顺利地使用,就必须理解其设计。MySQL的灵活性体现在很多方面。例如,你可以通过配置使它在不同的硬件上都运行得很好,也可以支持多种不同的数据类型。...2.MySQL逻辑架构 了解MySQL各组件之间如何协同工作的架构,会有助于深人理解MySQL服务器。图1-1展示了MySQL的逻辑架构图。 ?...图1-1 MySQL服务器架构图 最上层的服务并不是MySQL所独有的,大多数基于网络的客户端/服务器的工具或者服务都有类似的架构。比如连接处理、授权认证、安全等等。...第二层架构是MySQL比较有意思的部分。

    86040

    MySQL 索引的底层逻辑

    当需要从磁盘读取数据时,系统会将数据逻辑地址传给磁盘,磁盘的控制电路按照寻址逻辑将逻辑地址翻译成物理地址,即确定要读的数据在哪个磁道,哪个扇区。...页是计算机管理存储器的逻辑块,硬件及操作系统往往将主存和磁盘存储区分割为连续的大小相等的块,每个存储块称为一页 (在许多操作系统中,页得大小通常为 4k ) ,主存和磁盘以页为单位交换数据。...由于逻辑上很近的节点(父子)物理上可能很远,无法利用局部性,所以红黑树的I/O渐进复杂度也为 O(h) ,效率明显比 B-Tree 差很多。...MySQL 的实现 在 MySQL 中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,本文主要讨论 MyISAM 和 InnoDB 两个存储引擎的索引实现方式。...特别需要说明的是, MySQL 支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此 MySQL 数据库支持多种索引类型,如 B-Tree 索引,哈希索引,全文索引等等。

    96411

    MySQL优化的底层逻辑

    索引的底层结构首先,MySQL索引的存储不仅仅只有B+Tree的结构,还有Hash和全文,这个在创建索引时可以指定。...MySQL中常用的InnoDB存储引擎默认使用B+Tree结构,毕竟使用MySQL时范围查找的场景是最多的,当然如果等值查询比如热点数据这种场景可以使用Hash索引,如果有大量的文本数据需要搜索和处理,...goods表中的这些数据在B+Tree中的逻辑结构如下图可以看到在非叶子节点上只存放了主键列的值,而叶子节点存放了主键对应的整行数据,这种索引又叫「聚簇索引」 也叫「主键索引」 。...这里为goods_no、goods_name列创建一个普通索引后,表中的数据在这个索引中逻辑结构如下图可以看到在普通索引中每个非叶子节点的键值存放的是索引列的数据,而叶子节点不仅存放了索引列的数据,还存放了对应的主键值...索引的命中逻辑那么,问:那么请问,当执行以下sql时会使用哪个索引?为什么?

    47931

    MySQL 索引的底层逻辑

    当需要从磁盘读取数据时,系统会将数据逻辑地址传给磁盘,磁盘的控制电路按照寻址逻辑将逻辑地址翻译成物理地址,即确定要读的数据在哪个磁道,哪个扇区。...页是计算机管理存储器的逻辑块,硬件及操作系统往往将主存和磁盘存储区分割为连续的大小相等的块,每个存储块称为一页 (在许多操作系统中,页得大小通常为 4k ) ,主存和磁盘以页为单位交换数据。...由于逻辑上很近的节点(父子)物理上可能很远,无法利用局部性,所以红黑树的I/O渐进复杂度也为 O(h) ,效率明显比 B-Tree 差很多。...MySQL 的实现 在 MySQL 中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,本文主要讨论 MyISAM 和 InnoDB 两个存储引擎的索引实现方式。...特别需要说明的是, MySQL 支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此 MySQL 数据库支持多种索引类型,如 B-Tree 索引,哈希索引,全文索引等等。

    17310

    当面试官问你MySQL的架构图......

    mysql架构图 ? ---------------------我是一条分割线--------------------- ?...MySQL请求经过命令分发和解析进行执行,在MySQL Server有属于它自己的一个cache,如果执行的请求在缓存中有数据,则会从缓存中获取到返回给连接线程模块,连接线程将数据传递给客户端,请求结束...MySQL的缓存机制 MySQL的缓存机制主要包括关键字缓存以及查询缓存。 概述 MySQL通过在内存中建立缓冲区buffer以及缓冲cache来提高mysql的查询性能。...对于InnoDB存储引擎,MySQL采用buffer pool的方式缓存数据和索引,而对于MyISAM存储引擎,MySQL使用cache的方式缓存数据和索引。...工作原理 当MySQL接收到传入的sql语句时,会跟先前已经在解析器解析过的sql语句进行比较,如果相同,则返回已缓存的数据。sql语句一定是完全相同,只要是要给字母的大小不同,也会受到影响。

    39420

    轻松搞懂MySQL的逻辑结构

    本文旨在从select语句的解析和执行过程, 了解 MySQL的逻辑结构。 先看 select语句执行时都要经过哪些模块处理....了解了MySQL的整体结构之后, 我们再针对各功能模块逐一说明. 1. 连接器 负责建立连接、维持和管理连接, 以及验证权限。...用户登录认证通过之后, 连接器会从权限表中查出对应的权限, 之后该连接相关的所有权限判断, 都依赖于此时读到的权限. 即使管理员账号对这个用户的权限做了修改, 也不会影响已经存在连接的权限。...对需要使用查询缓存的语句, 可以用 SQL_CACHE 显式指定. select SQL_CACHE * from t where id=10; 注意: 在 MySQL8中已经彻底删除了缓存模块, 可见官方对它的不认可了...通过以上介绍, 脑中是不已经有了 MySQL 的轮廓了.

    46920

    【高性能MySQL】MySQL逻辑架构

    一,MySQL逻辑架构 第一层的服务不是MySQL独有的,大多数基于网络的客户端/服务器的工具或者服务都有类似的架构。比如连接处理、授权认证、安全等。 第二层架构是MySQL比较有意思的部分。...这层是MySQL的核心服务功能,包含:查询解析、分析、优化、缓存以及所有的内置函数(例如日期、时间、数学运算)所有跨存储引擎的功能都在这一层实现:存储过程、触发器、视图等。 第三层是存储引擎。...存储引擎负责MySQL中数据的存储和提取。服务器通过API和存储引擎进行通信。这些接口屏蔽了不同存储引擎之间的差异,使得这些差异对上层的查询过程透明。...服务器会负责缓存线程,不需要为每一个新的连接创建和销毁线程。MySQL提供了一个API,支持线程池插件,可以使用池中少量的线程来服务大量的连接。...三、优化与执行 MySQL会解析查询,并创建内部数据结构(解析树),然后对查询进行优化,包括重写查询、决定表的读取顺序,选择合适的索引等。用户可以通过特殊的关键字提示优化器,影响它的决策过程。

    12520

    MySQL逻辑架构简介

    本文链接:https://blog.csdn.net/u014427391/article/details/100170265 文章目录 一、逻辑结构简介 二、连接管理 三、解析优化查询 四、锁机制...一、逻辑结构简介 ?...Mysql服务器逻辑架构图,图来自《高性能MySQL》一书: ?...,然后这时候有两个用户在抢这个商品,按照逻辑,一个用户购物成功,库存就应该减1的,然后事务并发没控制好,这种情况是很容易出现商品没库存了,然后还可以下单的案例,这种是不合理的,这时候可以用数据库的锁机制来做...(system version number),每开始一个事务,系统版本号都会自动递增的 六、MySQL的存储引擎 Mysql的事务回滚等处理是给存储引擎负责的,下面介绍一下几种常见的MySQL存储引擎

    61720

    MySQL逻辑备份into outfile

    MySQL 备份之 into outfile 逻辑数据导出(备份) 用法: select xxx into outfile '/path/file' from table_name; mysql...>select * into outfile '/back/emp3.sql' from emp;  无论是什么存储引擎,本身是一种数据导出的方法,同时可以用来辅助备份,它可以对一个表的其中一列或者某几列做备份...,如果是多列的话用逗号隔开 逻辑数据导入(恢复) 方法一: load data local infile '/path/file' into table table_name; mysql>...wowo | | 3 | lili | | 4 | yoyo | +------+------+ 7 rows in set (0.00 sec) View Code 例二 创建一个表,把系统里的/...----------------------------+------------------------+----------------+ 方法二: 通过mysqlimport进行导入 注意:导入的文件名必须和表名一样

    90610

    MySQL逻辑备份mysqldump

    ,那么只需要锁定该库下的表就可以了 --lock-all-tables      如果备份的数据库里的表与其他库有关系的话,那么需要锁定整个mysql数据库的所有库下的所有表 --flush-logs,...-p123 db01 < /tmp/mysqlback/table01.sql 或者在mysql数据库内使用source命令来执行外部的sql文件 mysql> source /tmp/mysqlback...,那么恢复的时候会恢复失败,因为mysql库里面不仅记录了用户信息等还记录了数据库表结构等。...二进制日志文件中会记录某个操作的详细SQL语句,还有执行的时候环境,时间,以及该记录在二进制日志文件的起始和结束点pos值 error log  # 错误日志,记录mysql服务端在运行时产生的错误信息...--start-position=120 --stop-position=802 /data/DB/mysql-bin.000008 |mysql -p123 恢复完成后进入数据库查看是否存在刚刚添加的数据

    1.2K10

    Mysql逻辑架构介绍

    一、整体架构图 MySql和其它数据库相比,它的优势在于它的架构可以在多种不同场景中应用并且发挥良好。...这一点主要体现在引擎层上,MySql的引擎是可拔插式的,业务处理和引擎是分离的,因此可以根据不同的业务需求选择不同的引擎来进行处理,甚至现有的引擎都不符合你的需求,你可以定制MySql引擎。...线程池的概念就是为通过安全认证接入的客户端提供线程。 2.2、服务层 服务层平常也称之为逻辑处理层。...因为MySql的引擎是可拔插式的,我们在使用时可根据不同的业务场景可选择不同的引擎。 在mysql官网上对于自定义存储引擎也有所介绍。...编写自定义存储引擎 2.4、数据存储层 这个就是我们平常所说的物理存储啦,主要就是把数据存储到运行mysql的服务器中的文件系统中,并且能够完成和存储引擎的交互。

    54930

    mysql逻辑备份mysqldump

    mysqldump工具备份: 本质:导出的是SQL语句文件 优点:不论是什么存储引擎,都可以用mysqldump备成SQL语句 缺点:速度较慢,导入时可能会出现格式不兼容的突发情况,无法做增量备份和累计增量备份...pAa123456 > /we/sjk.sql 备份数据库结构(不含数据) mysqldump --databases we wee -uroot -pAa123456 -d > /we/sjk.sql 数据库恢复 mysql...-pAa123456 we < /we/sjk.sql 全库备份/恢复 备份 mysqldump -uroot -pAa123456 --all-databases > /we/sjk.sql 恢复 mysql.../sjkb.sql 备份we库中的userc数据表的表结构(不含数据) -d参数,只备份表结构 mysqldump -uroot -pAa123456 -d we userc > /we/sjkb.sql...备份we库的userc表的数据 -t参数,只备份数据 mysqldump -uroot -pAa123456 --compact -t we userc > /we/sjkb.sql 恢复数据库表 mysql

    2.1K90

    MySQL逻辑架构(2)

    而磁盘 I/O 需要消耗的时间很多,而在内存中进行操 作,效率则会高很多,为了能让数据表或者索引中的数据随时被我们所用,DBMS 会申请 占用内存来作为 数据缓冲池 ,在真正访问页面之前,需要把在磁盘上的页缓存到内存中的...这样做的好处是可以让磁盘活动最小化,从而 减少与磁盘直接进行 I/O 的时间 。要知道,这种策略对提 升 SQL 语句的查询性能来说至关重要。如果索引的数据在缓冲池里,那么访问的成本就会降低很多。...需要说明的是,在MySQL 中的查询缓存,不是缓存查询计划,而是查询对应的结果。因为命中条件苛刻,而且只要数据表 发生变化,查询缓存就会失效,因此命中率低。...缓存在数据库中的结构和作用如下图所示: 3.3 查看/设置缓冲池的大小 如果你使用的是 InnoDB 存储引擎,可以通过查看 innodb_buffer_pool_size 变量来查看缓冲池的大 小。...3.5 引申问题 Buffer Pool是MySQL内存结构中十分核心的一个组成,你可以先把它想象成一个黑盒子。

    48020

    MySQL逻辑架构(1)

    逻辑架构剖析 1.1 服务器处理客户端请求 那服务器进程对客户端进程发送的请求做了什么处理,才能产生最后的处理结果呢?...用户名或密码不对,会收到一个Access denied for user错误,客户端程序结束执行 用户名密码认证通过,会从权限表查出账号拥有的权限与连接关联,之后的权限判断逻辑,都将依 赖于此时读到的权限...这两种执行方法的逻辑结果是一样的,但是执行的效率会有不同,而优化器的作用就是决定选择使用哪一个方案。优化 器阶段完成后,这个语句的执行方案就确定下来了,然后进入执行器阶段。...1,如果不是则跳过,如果是则将这行存在结果集中; 调用引擎接口取“下一行”,重复相同的判断逻辑,直到取到这个表的最后一行。...执行器将上述遍历过程中所有满足条件的行组成的记录集作为结果集返回给客户端。 至此,这个语句就执行完成了。对于有索引的表,执行的逻辑也差不多。

    55120

    MySQL逻辑数据恢复体系的设计

    备份体系的支持能力 粒度 备份类型 备份模式 实例 全量备份 物理备份逻辑备份 实例 增量备份 物理备份 实例 日志备份 独立服务 数据库数据表表结构 对象备份 物理备份逻辑备份 其实对象层面的数据恢复能力是很重要的...整体的数据恢复流程如下: ? 如何规划和设计逻辑备份恢复体系,经过部分讨论,我做了如下的初版设计。...1.数据备份 其中逻辑备份恢复主要面向两个维度: 实例级别:实现表结构,表结构+数据 备份 库/表级别:实现表结构,表结构+数据 备份 目前的逻辑备份恢复的支持范围: 1)数据库主从拓扑关系的实例,逻辑备份操作根据拓扑关系需要在相应的从库端执行...2)单实例节点,逻辑备份操作在单实例节点执行,需要评估备份容量和负载等信息 目前不支持基于中间件MyCAT的节点 对于输入为域名或者Master IP的信息,需要通过拓扑关系转化为相应的从库或者单实例的...IP信息 对于库表文件的备份,可以设定如下的规则: 1)单表数据量小于5000万或者表容量在10G以内的表,可以支持逻辑备份,此外需要相应的提示,尽可能避免此类操作 2)选择备份的数据库容量在30G以内

    55430
    领券