一、MySQL的客户端/服务器架构

前言

之前对MySQL的认知只限于会写些SQL,本篇算是笔记,记录和整理下自己对MySQL不熟悉的地方。

大致逻辑

MySQL的服务器程序直接和我们存储的数据打交道,客户端程序连接服务器,发送增删改查的请求,服务器操作维护的数据响应请求。

MySQL服务器程序的进程也被称为MySQL数据库实例。我们启动的MySQL服务器进程的默认名称是mysqld,而常用的MySQL客户端进程默认名称为mysql

安装

不论通过哪种方式安装,MySQL的服务器程序和客户端都会被安装到我们的机器上。

不过在Linux下使用RPM包时会有单独的服务器RPM包和客户端RPM包,需要分别安装。

启动服务器程序

mysqld

代表着mysql服务器程序,运行这个可执行文件就可以直接启动一个服务器进程。

mysqld_safe

  • 是一个启动脚本,会间接的调用mysqld。

  • 还顺便启动了另外一个监控进程,这个监控进程在服务器进程挂了的时候,可以帮助重启它。

  • 会将服务器程序的出错信息和其他诊断信息重定向到某个文件中,产生出错日志。

mysql.server

也是一个启动脚本,会间接的调用mysqld_safe,使用时跟上start/stop参数就OK。

不过这个文件其实是一个链接文件,实际文件是../support-files/mysql.server.

mysqld_multi

一台计算机上可以运行多个MySQL服务器进程,这个可执行文件可以对每一个服务器进程的启动或停止进行监控。

启动客户端程序

格式:

mysql -h主机名 -u用户名 -p密码

小贴士: 像 h、u、p 这样名称只有一个英文字母的参数称为短形式的参数,使用时前边需要加单短划线,像 host、user、password 这样大于一个英文字母的参数称为长形式的参数,使用时前边需要加双短划线。

客户端与服务器连接的过程

本质上进程间通信的过程,MySQL支持以下的通信方式

TCP/IP

MySQL服务器默认监听3306端口。

命名管道和共享内存

这种通信方式是windows操作系统中的

Unix域套接字文件

这种方式要求客户端和服务器运行在同一台类Unix的操作系统上。

MySQL服务器程序默认监听的套接字文件路径是/tmp/mysql.sock,客户端也默认监听这个文件。

改变文件:

# 服务器改变套接字文件
mysqld --socket=/tmp/a.txt
# 客户端改变
mysql -hlocalhost -uroot --socket=/tmp/a.txt -p

架构

连接管理

客户端与服务器进程建立连接,每当有一个客户端进程连接到服务器进程时,服务器进程都会创建一个线程来专门处理与这个客户端的交互,当该客户端退出时会与服务器断开连接,服务器会把线程缓存起来。

解析与优化

查询缓存

如果两个查询请求在任何字符上的不同都会导致缓存不命中。请求中包含某些系统函数、用户自定义变量和函数、一些系统表也不会被缓存。

只要该表的结构或者数据被修改,则该表的所有高速缓存查询都将无效并删除。

PS:8.0中查询缓存已经删除了

语法解析

如果查询缓存没有命中,就进入查询阶段,服务器先对文本做分析,判断语法是否正确,然后从文本中将要查询的表、各种查询条件都提取出来放到内部使用的一些数据结构上。

算是一个编译过程,涉及词法解析、语法分析、语义分析等阶段。

查询优化

对SQL做优化,生成一个执行计划,表明了应该使用哪些索引进行查询,表之间的连接顺序是怎样的。

这块可以使用explain profile来查看。

存储引擎

数据的存储和提取操作都封装到了这个模块里。不同的存储引擎使用不同的存储方式。

参考

本文主要参考小孩子写的《MySQL是怎样运行的:从根儿上理解MySQL》

想学习的同学可以通过以下方式购买,绝对超值!

MySQL1:客户端/服务器架构的更多相关文章

  1. [网络编程之客户端/服务器架构,互联网通信协议,TCP协议]

    [网络编程之客户端/服务器架构,互联网通信协议,TCP协议] 引子 网络编程 客户端/服务器架构 互联网通信协议 互联网的本质就是一系列的网络协议 OSI七层协议 tcp/ip五层模型 客户端/服务器 ...

  2. [转]MMORPG服务器架构

    MMORPG服务器架构 一.摘要 1.网络游戏MMORPG整体服务器框架,包括早期,中期,当前的一些主流架构2.网络游戏网络层,包括网络协议,IO模型,网络框架,消息编码等.3.网络游戏的场景管理,A ...

  3. 高扩展的基于NIO的服务器架构

    当你考虑写一个扩展性良好的基于Java的服务器时,相信你会毫不犹豫地使用Java的NIO包.为了确保你的服务器能够健壮.稳定地运行,你可能会花大量的时间阅读博客和教程来了解线程同步的NIO selec ...

  4. Windows平台网站图片服务器架构的演进[转]

    构建在Windows平台之上的网站,往往会被业内众多架构师认为很“保守”.很大部分原因,是由于微软技术体系的封闭和部分技术人员的短视造成 的.由于长期缺乏开源支持,所以只能“闭门造车”,这样很容易形成 ...

  5. 【转】高性能服务器架构(High-Performance Server Architecture)

    High-Performance Server Architecture 高性能服务器架构 来源:http://pl.atyp.us/content/tech/servers.html译文来源:htt ...

  6. 无服务器架构(Faas/Serverless)

    摘要无服务器架构(Faas/Serverless),是软件架构领域的热门话题. AWS,Google Cloud和Azure - 在无服务器上投入了大量资金,已经在看到了大量专门针对Faas/Serv ...

  7. mysql服务器架构

    mysql是最广泛使用的开源数据库之一,作为后端开发人员,或多或少都会和mysql打交道,本篇文章会从sql查询语句的执行过程,来介绍mysql的服务器架构, 查询的过程大致分为从客户端到服务器,在服 ...

  8. 网络游戏MMORPG服务器架构

    转载于:http://justdo2008.iteye.com/blog/1936795 1.网络游戏MMORPG整体服务器框架,包括早期,中期,当前的一些主流架构 .关键词 网络协议 网络IO 消息 ...

  9. 高性能高并发服务器架构设计探究——以flamigo服务器代码为例

    这篇文章我们将介绍服务器的开发,并从多个方面探究如何开发一款高性能高并发的服务器程序. 所谓高性能就是服务器能流畅地处理各个客户端的连接并尽量低延迟地应答客户端的请求:所谓高并发,指的是服务器可以同时 ...

随机推荐

  1. ABP之模块系统

    简介 ASP.NET Boilerplate提供了构建模块的基础结构,并将它们组合在一起以创建应用程序. 模块可以依赖于另一个模块. 通常,一个程序集被视为一个模块. 如果创建具有多个程序集的应用程序 ...

  2. boost学习目录

    Boost之数值转换lexical_cast https://www.cnblogs.com/TianFang/archive/2013/02/05/2892506.html Boost之字符串算法s ...

  3. Django Rest Framework(一)

    •基于Django 先创建一个django项目,在项目中创建一些表,用来测试rest framework的各种组件 class UserInfo(models.Model): "" ...

  4. FreeMarker 入门

    目录 FreeMarker是什么 为什么要学习FreeMarker FreeMarker相关站点

  5. 第一个Appium脚本

    测试环境 Win 10 64bit Python 3.5 Appium 1.7.2 Andriod 5.1.1 模拟器& Android 5.1 MX4 测试App:考研帮Android版 3 ...

  6. 图片的HTML

    Code <center> <img style="border-radius: 0.3125em; box-shadow: 0 2px 4px 0 rgba(34,36, ...

  7. Wiki leaks files backup

    Wiki leaks files backup 来源  http://ftp.icm.edu.pl/packages/incoming/torrent/ Index of /packages/inco ...

  8. PWA 渐进式Web应用程序 - 解释

    想象一下,如果一个网站上所有的功能都能够作为一个移动应用程序为用户所用——任何设备上都可以使用.可接收所有的通知.离线模式可用,为了实现这个愿景,2015年,谷歌创造了渐进式Web应用程序(PWA). ...

  9. EnableFeignClients基本配置

    pom.xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId&g ...

  10. [PKUWC2019]Day1 T2 你和虚树的故事

    选择k个颜色,使得颜色的虚树有交的方案数 肯定要考虑连通块的贡献. 法一 https://www.cnblogs.com/xzz_233/p/10292983.html 枚举连通块还是不可行的. 枚举 ...