精华内容
下载资源
问答
  • MySQL逻辑架构及工作流程

    千次阅读 多人点赞 2018-08-31 18:43:02
    同时,MySql既可以嵌入到应用程序中,也可以支持数据仓库、内容索引和部署软件、高可用的冗余系统、在线事务处理系统等各种应用类型。  为了更心如的理解MySql服务器,我们需要理解MySql各部件之间如何协同工作。...

      MySql并不完美,但是却足够灵活,能够适应高要求的环境。同时,MySql既可以嵌入到应用程序中,也可以支持数据仓库、内容索引和部署软件、高可用的冗余系统、在线事务处理系统等各种应用类型。
      为了更心如的理解MySql服务器,我们需要理解MySql各部件之间如何协同工作。需要我们去理解它的逻辑架构。下面我们就来介绍一下MySql的逻辑架构:

    MySQL的逻辑架构

      MySQL的最重要、最与众不同的特性就是它的存储引擎架构,这种架构将查询处理以及其他系统任务和数据的存储/提取相分离。所带来的好处就是可以在使用时根据性能、特性,以及其他需求来选择数据存储的方式。
      下图就是MySQL的逻辑架构图:
      这里写图片描述

      MySQL架构总共三层,在上图中以虚线作为划分。
      首先,最上层的服务并不是MySQL独有的,大多数给予网络的客户端/服务器的工具或者服务都有类似的架构。比如:连接处理、授权认证、安全等。
      
      第二层的架构包括大多数的MySQL的核心服务。包括:查询解析、分析、优化、缓存以及所有的内置函数(例如:日期、时间、数学和加密函数)。同时,所有的跨存储引擎的功能都在这一层实现:存储过程、触发器、视图等。

      第三层包含了存储引擎。存储引擎负责MySQL中数据的存储和提取。服务器通过API和存储引擎进行通信。这些接口屏蔽了不同存储引擎之间的差异,使得这些差异对上层的查询过程透明化。存储引擎API包含十几个底层函数,用于执行“开始一个事务”等操作。但存储引擎一般不会去解析SQL(InnoDB会解析外键定义,因为其本身没有实现该功能),不同存储引擎之间也不会相互通信,而只是简单的响应上层的服务器请求。

    更加详细的MySQL系统架构图

      看完上图后,大家是不是觉得MySQL的系统架构挺简单的?其实不然。上图只是MySQL系统架构的大的模块图,其实每一层的结构都相当复杂,下图就是详细模块图:
      这里写图片描述

      首先,我们对该图中的各个模块做一简单介绍:
    1、Connectors
      指的是不同语言中与SQL的交互。
      
    2、Connection Pool
      管理缓冲用户连接,线程处理等需要缓存的需求。负责监听对 MySQL Server 的各种请求,接收连接请求,转发所有连接请求到线程管理模块。每一个连接上 MySQL Server 的客户端请求都会被分配(或创建)一个连接线程为其单独服务。而连接线程的主要工作就是负责 MySQL Server 与客户端的通信,接受客户端的命令请求,传递 Server 端的结果信息等。线程管理模块则负责管理维护这些连接线程。包括线程的创建,线程的 cache 等。

    3、 Management Serveices & Utilities
      系统管理和控制工具。

    4、 SQL Interface
      接受用户的SQL命令,并且返回用户需要查询的结果。
      
    5、 Parser
      SQL命令传递到解析器的时候会被解析器验证和解析。解析器是由Lex和YACC实现的,是一个很长的脚本。在 MySQL中我们习惯将所有 Client 端发送给 Server 端的命令都称为 query ,在 MySQL Server 里面,连接线程接收到客户端的一个 Query 后,会直接将该 query 传递给专门负责将各种 Query 进行分类然后转发给各个对应的处理模块。
    主要功能
      a 、 将SQL语句进行语义和语法的分析,分解成数据结构,然后按照不同的操作类型进行分类,然后做出针对性的转发到后续步骤,以后SQL语句的传递和处理就是基于这个结构的;
      b、 如果在分解构成中遇到错误,那么就说明这个sql语句是不合理的。

    6、 Optimizer
      查询优化器:SQL语句在查询之前会使用查询优化器对查询进行优化。就是优化客户端请求query,根据客户端请求的 query 语句,和数据库中的一些统计信息,在一系列算法的基础上进行分析,得出一个最优的策略,告诉后面的程序如何取得这个 query 语句的结果。
      使用的是“选取-投影-联接”策略进行查询:
    用一个例子就可以理解: select uid,name from user where gender = 1;
    这个select 查询先根据where 语句进行选取,而不是先将表全部查询出来以后再进行gender过滤;然后根据uid和name进行属性投影,而不是将属性全部取出以后再进行过滤。最后将这两个查询条件联接起来生成最终查询结果。

    7 、Cache和Buffer
      查询缓存:主要功能是将客户端提交 给MySQL 的 Select 类 query 请求的返回结果集 cache 到内存中,与该 query 的一个 hash 值 做一个对应。该 query 所取数据的基表发生任何数据的变化之后, MySQL 会自动使该 query 的Cache 失效。在读写比例非常高的应用系统中, Query Cache 对性能的提高是非常显著的。当然它对内存的消耗也是非常大的。
      如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。这个缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,key缓存,权限缓存等。

    8 、存储引擎接口
      MySQL区别于其他数据库的最重要的特点就是其插件式的表存储引擎。MySQL插件式的存储引擎架构提供了一系列标准的管理和服务支持,这些标准与存储引擎本身无关,可能是每个数据库系统本身都必需的,如SQL分析器和优化器等,而存储引擎是底层物理结构的实现,每个存储引擎开发者都可以按照自己的意愿来进行开发。
    注意:存储引擎是基于表的,而不是数据库。

    数据库的工作流程

      相信通过上述的介绍,大家对MySQL的逻辑架构已经有了一定的了解,下面我们下来介绍一下数据库具体的工作流程,先看一张图:
      这里写图片描述
      在这里,我从数据库架构的三个层面分别介绍数据库的工作流程:
    最上层:客户端连接
      1、连接处理:客户端同数据库服务层建立TCP连接,连接管理模块会建立连接,并请求一个连接线程。如果连接池中有空闲的连接线程,则分配给这个连接,如果没有,在没有超过最大连接数的情况下,创建新的连接线程负责这个客户端。
      
      2、授权认证:在真正的操作之前,还需要调用用户模块进行授权检查,来验证用户是否有权限。通过后,方才提供服务,连接线程开始接收并处理来自客户端的SQL语句。

    第二层:核心服务
      1、连接线程接收到SQL语句之后,将语句交给SQL语句解析模块进行语法分析和语义分析。

      2、如果是一个查询语句,则可以先看查询缓存中是否有结果,如果有结果可以直接返回给客户端。

      3、如果查询缓存中没有结果,就需要真的查询数据库引擎层了,于是发给SQL优化器,进行查询的优化。如果是表变更,则分别交给insert、update、delete、create、alter处理模块进行处理。

    第三层:数据库引擎层
      1、打开表,如果需要的话获取相应的锁。
      
      2、先查询缓存页中有没有相应的数据,如果有则可以直接返回,如果没有就要从磁盘上去读取。

      3、当在磁盘中找到相应的数据之后,则会加载到缓存中来,从而使得后面的查询更加高效,由于内存有限,多采用变通的LRU表来管理缓存页,保证缓存的都是经常访问的数据。

    最后,获取数据后返回给客户端,关闭连接,释放连接线程。

    展开全文
  • MySQL工作原理

    千次阅读 2018-08-09 10:26:28
    MySql是目前使用最广泛的... 那么MySql是怎么运行工作的呢,MySQL Server逻辑架构图如下:   一、逻辑结构 1、Connectors  连接器,与其他程序的SQL连接交互,完成连接的建立及认证、授权等。当请求到处后,...

           MySql是目前使用最广泛的数据库之一,拥有体积小、速度快、成本低等特点,重点还MySql开源,是目前互联网行业使用最多的数据库。

           那么MySql是怎么运行工作的呢,MySQL Server逻辑架构图如下:

           wKiom1LUF8DS1inQAAE8bwOlNTY150.jpg

    一、逻辑结构

    1、Connectors

             连接器,与其他程序的SQL连接交互,完成连接的建立及认证、授权等。当请求到处后,会暂时存放在连接池中,并交由服务管理器管理。

    2、Management Serveices & Utilities

              服务管理和控制工具。管理过来的请求,当请求从等待队列进入处理队列,会将请求交给SQL Interface处理。

    3、Connection Pool

              连接池,管理缓冲用户连接,线程处理等需要缓存的需求。

    4、SQL Interface

             SQL接口,接受用户的SQL命令,并且返回用户需要查询的结果。比如select from就是调用SQL Interface。

             SQL Interface接口会对请求做进行hash处理,根据计算结果先到缓存中查找,找到匹配数据则直接返回,没有匹配数据则要重新查找。

    5、Parser

            SQL命令传递到解析器的时候会被解析器验证和解析。

            主要功能:

            a . 将SQL语句分解成数据结构,并将这个结构传递到后续步骤,后面SQL语句的传递和处理就是基于这个结构的

            b.  如果在分解构成中遇到错误,那么就说明这个sql语句是不合理的,语句将不会继续执行下去

    6、Optimizer

             优化器,SQL语句在查询之前会使用查询优化器对查询进行优化(产生多种执行计划,最终数据库会选择最优化的方案去执行,尽快返会结果) 他使用的是“选取-投影-联接”策略进行查询。

            用一个例子就可以理解: select uid,name from user where gender = 1;

            这个select 查询先根据where 语句进行选取,而不是先将表全部查询出来以后再进行gender过滤;

            这个select查询先根据uid和name进行属性投影,而不是将属性全部取出以后再进行过滤;

            将这两个查询条件联接起来生成最终查询结果。

    7、Caches&Buffers

            缓存,如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。

            这个缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,key缓存,权限缓存等。

            buffers是指用来给块设备做的缓冲大小。cached是用来给文件做缓冲。那就是说:buffers是用来存储,目录里面有什么内容,权限等等。而cached直接用来记忆我们打开的文件。

    8、Pluggable Storage Engines

            存储引擎,存储引擎是MySql中具体的与文件打交道的子系统。也是Mysql最具有特色的一个地方。

            Mysql的存储引擎是插件式的。它根据MySql AB公司提供的文件访问层的一个抽象接口来定制一种文件访问机制(这种访问机制就叫存储引擎)。

    9、File System

             文件系统,管理不同的存储文件。

    10、Files & Logs

             文件和日志,保存数据集日志信息。

    二、SQL执行顺序

      数据库通常不会被直接使用,而是由其他编程语言通过SQL语句调用mysql,由mysql处理并返回执行结果。那么Mysql接受到SQL语句后,又是如何处理的呢?

       首先程序的请求会通过mysql的connectors与其进行交互,请求到处后,会暂时存放在连接池(connection pool)中并由处理器(Management Serveices & Utilities)管理。当该请求从等待队列进入到处理队列,管理器会将该请求丢给SQL接口(SQL Interface)。SQL接口接收到请求后,它会将请求进行hash处理并与缓存中的结果进行对比,如果完全匹配则通过缓存直接返回处理结果;否则,需要完整的走一趟流程:

       (1)由SQL接口丢给后面的解释器(Parser),上面已经说到,解释器会判断SQL语句正确与否,若正确则将其转化为数据结构。

       (2)解释器处理完,便来到后面的优化器(Optimizer),它会产生多种执行计划,最终数据库会选择最优化的方案去执行,尽快返会结果。

       (3)确定最优执行计划后,SQL语句此时便可以交由存储引擎(Engine)处理,存储引擎将会到后端的存储设备中取得相应的数据,并原路返回给程序。

     

    展开全文
  • apache php mysql 怎么理解他们工作流程

    千次阅读 2016-11-03 19:52:22
    1、apache是服务器基础,php和mysql都需要他来协调工作 2、php是脚本解释,如果不用php那么apache出来的东西就只是静态的,而不能在服务器实现功能 3、mysql是数据库,完全可以单独使用,但是和另外两个一起,则是由...
    知道他们各自是什么还不知道他们怎么一起工作?
    - -
    1、apache是服务器基础,php和mysql都需要他来协调工作
    2、php是脚本解释,如果不用php那么apache出来的东西就只是静态的,而不能在服务器实现功能
    3、mysql是数据库,完全可以单独使用,但是和另外两个一起,则是由php代码调用mysql接口,而apache就负责解释php代码,让他能真正地实现对mysql的调用
    
    一种通俗解释:简单来说:锅(一定要有),菜,油(可有可无)
    
    
    展开全文
  • MySQL

    千次阅读 多人点赞 2019-09-04 21:24:58
  • MySQL的执行流程

    千次阅读 2017-10-13 10:04:34
    MySQL执行流程分析,附图
  • 基于Mysql C Api编写mysql客户端程序

    千次阅读 2012-05-09 12:47:10
    在编写mysql客户端程序时,最常见的就是连接mysql,和关闭mysql,在这里需要注意,如果使用不当将会造成内存泄漏。 单线程环境:一般使用 -lmysqlclient链接mysql客户库,mysql_init函数会自动调用my_library_...
  • Linux安装MySQL5.7

    万次阅读 多人点赞 2019-06-25 11:08:32
    下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads 解压 tar -xvf mysql-5.7.26-linux-glibc2.12-x86_64.tar ...mv mysql-5.7.26-linux-glibc2.12-x86_64 /usr/local/mysql ...
  • QT mysql 驱动程序

    万次阅读 2012-04-20 23:16:04
    QT链接mysql驱动程序出现的问题详解 首先列举一下Qt顺利链接mysql的操作步骤:  1、安装MySQL时选择安装include和lib文件,安装目录中不能有空格,一般设置C:\mysql  2、设置环境变量,需添加如下的环境变量: ...
  • Mysql SinceApril - Mysql数据库工具程序 - 持续更新 1.前言 自己写了个程序用用。 2.软件截图 主界面 引擎 表结构 字段分析扫描 3.更新 后面会继续更新,会在完整版本时提供下载链接...
  • MySQL安装流程详解》及《MySQL安装一直失败,重新安装显示已安装》 本文由博主经过查阅网上资料整理总结后编写,如存在错误或不恰当之处请留言以便更正,内容仅供大家参考学习。 MySQL安装流程(两种方式) ...
  • 数据库(DataBase)是存放用户数据的地方,当用户访问、操作数据库中的数据时,需要数据库管理系统的帮助。数据管理系统的全称是DataBase Management System,... MySQL是一种关系数据库管理系统,关系数据库将数据...
  • MYSQL5.1 ODBC驱动程序64位

    千次下载 热门讨论 2013-04-10 16:53:28
    MYSQL5.1 ODBC驱动程序64位
  • Linux在线安装 Mysql数据库流程

    千次阅读 2019-05-29 08:45:51
    数据库是来组织、存储和管理数据库的仓库,mysql必须使用分号结尾 1、安装数据库:yum -y install mysql-server(yum:ya m) 2、启动数据库:service mysqld start 3、登录数据库:mysql -u root -p回车后输入密码...
  • Mysql驱动程序是什么?

    千次阅读 2020-02-07 09:11:54
    Mysql 提供给 Java 编程语言的驱动程序就是这样 mysql-connector-java-5.1.18.jar 包 针对不同的数据库版本,驱动程序包版本也不同 不同的编程语言,驱动程序的包形式也是不一样的 驱动程序主要帮助编程语言与 ...
  • centos7 安装mysql详细流程

    万次阅读 多人点赞 2018-08-22 19:12:09
    工作中经常需要安装mysql,每次安装的时候,总是用不同的方法安装,有错误就解决一下,今天又重新装了一次mysql,记录下过程,以后就安装这种方式安装了! 1、查看系统版本 [root@test107vm14 rpm-gpg]# lsb_...
  • 下载MySQL驱动程序

    万次阅读 2018-08-11 00:10:28
    第一步:进入MySQL官方网站,并选择DOWNLOADS和Community。 第二步:选择MySQL Connectors 第三步:选择Connector/J 第四步:进入下面界面,找到下面的Generally available (GA)Releases 第五步:选择...
  • 程序云开发的功能是越来越强大了,现在小程序云开发可以直接借助云函数来链接mysql数据,操作mysql数据库了,今天就来给大家讲一讲如何使用小程序云开发的云函数来操作mysql数据库。 首先要明确一点,就是小程序...
  • MySQL流程图详解分析

    千次阅读 2017-11-17 02:30:56
    MySQL流程 1:MySQL流程图 2:MySQL的流程分析 1.连接   1.1客户端发起一条Query请求,监听客户端的‘连接管理模块’接收请求  1.2将请求转发到‘连接进/线程模块’  1.3调用‘用户模块’来...
  • MySQL OCP报考流程

    千次阅读 2019-01-08 10:27:32
    近期有很多人跟我了解MySQL报名的事,为了方便大家,特整理一篇文档供大家参考,需要注意一点的是,OCP报考不需要培训,可以直接报名参加考试 登录vue网站 https://www.pearsonvue.com.cn/ 打开“考生”主页 ...
  • 微信小程序连接MySQL数据库

    万次阅读 多人点赞 2020-10-27 18:15:18
    微信小程序连接MySQL 简要说明: 承接上一个商品列表页,在服务器端连接MySQL数据库,通过条件匹配查寻数据并显示在客户端 准备工作 1、node.js 2、微信开发者工具 3、MySQL数据库 MySQL配置数据库、数据表 通过...
  • 在编写mysql客户端程序时,最常见的就是连接mysql,和关闭mysql,在这里需要注意,如果使用不当将会造成内存泄漏。 单线程环境:一般使用 -lmysqlclient链接mysql客户库,mysql_init函数会自动调用my_library_...
  • 在开发环境如eclipse,中加载指定...而具体在Java程序中加载驱动,是在Java程序中添加“Class.forName(“指定数据库的驱动程序”)” 来实现,MySQL的数据驱动程序的代码为:Class.forName(“com.mysql.jdbc.Driver
  • MySQL5.0驱动程序 官方下载

    热门讨论 2007-08-14 06:35:59
    MySQL驱动程序,能完成连接MySQL数据库
  • 问题来源安装MySQL如果手动安装一台还可以,但安装多台,手动安装很麻烦,需要编写一个shell程序 install_mysql.sh来进行安装二.程序说明将MySQL5.1.45安装到了 /home/longxibendi/mysql/usrl/local/mysql数据文
  • 使用WEBAPI连接到MYSQL配置流程

    千次阅读 2018-02-28 12:07:41
    1.需要引用的文档MySql.Data.dllMySql.Data.Entity.EF6.dll1.1注意事项:1.11 MySql.Data.Entity依赖于 MySql.Data,需要保证这两个的版本相同。1.12 EF版本必须高于6.0。2.添加System.data配置<system.data&...
  • 说明 docker-compose 是一个用户定义和运行多个容器的 Docker 应用程序。...使用docker-compose启动MySQL与java程序后,java程序并不会一直等待MySQL将所需的初始化SQL文件执行完成,所以Java程序...
  • 首先要确保MySQL的bin目录要加入到环境变量的path中。在命令行中输入"mysql -u root -p",然后输入设置的root密码就可以了。(我第一次输成mysql,就会一闪而过了,这下牢记了。) 当然一般下载网上的那种MySQL安装...
  • C++程序调用mysql数据库

    千次阅读 2018-09-13 11:11:39
    1.int mysql_library_init(int argc, char **argv, char **groups) 在调用任何其他MySQL函数之前,调用此函数初始化MySQL客户端库。 2.void mysql_library_end(void) 完成使用库后调用它(例如,在断开与服务器的...
  • mysql jdbc 包官网下载流程

    千次阅读 多人点赞 2018-08-16 16:09:45
    mysql jdbc 包官网下载流程 ** 1.百度搜索mysql进入mysql官网 2. 选择DOWNLOADS按钮,并选择该栏目下的 Community (GPL) Downloads » 3.在 Community 栏目下选择Mysql Connectors,展开该菜单选择...
  • MYSQL-workbench已经停止工作的原因

    万次阅读 2016-08-23 12:49:41
    MYSQL-workbench已经停止工作的原因

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 843,733
精华内容 337,493
关键字:

mysql工作流程

mysql 订阅