首页 > 数据库 >MySQL体系管理结构

MySQL体系管理结构

时间:2023-10-08 15:57:23浏览次数:33  
标签:体系 rw SQL MySQL TCP mysql 连接 结构

MySQL客户端与服务端模型

MySQL是C/S结构的服务

MySQL客户端

  • mysql
  • mysqladmin
  • mysqldump

图形化

  • SQLyog
  • navicat

MySQL服务端

  • mysqld

MySQL服务端的连接方式

  • TCP/IP连接
mysql -uroot -p123 -h10.0.0.51
  • Socket连接
mysql -uroot -p123 -S /app/mysql/tmp/mysql.sock

连接示例

## MySQL默认使用socket连接
mysql -uroot -p123 								// socket连接方式
mysql -uroot -p123 -h127.0.0.1 				 			   // TCP
mysql -uroot -p123 -hlocalhost 							   // Socket
mysql -uroot -p123 -h10.0.0.51 -S /tmp/mysql.sock 			// TCP
mysql -uroot -p123 -S /tmp/mysql.sock -h10.0.0.51 			// TCP

## 总结
1.MySQL默认使用Socket连接,TCP连接需要建立三次握手,速度比Socket慢
2.不是只要-h就一定是TCP连接
3.当-h和-S一起出现时,如果-h指定的是IP地址,那么一定是TCP连接

MySQL服务端构成

实例

由 一个进程 + 多个线程 + 一个预分配的内存结构

Win:服务没有预分配内存,在不考录虚拟内存的时候,启动程序的总内存不会大于物理内存,可能会蓝屏,或卡住。

linux:服务预分配内存,在不考录虚拟内存的时候,当启动程序的总内存大于物理内存的话,虚拟机内会使用oom killer机制清除掉占用内存最大的那个程序。

oom killer (Out of Memory Killer)
当系统因为内存不足而无法满足进程的内存需求时,OOM Killer会自动触发,它的主要作用是终止某些进程以释放内存资源,从而避免系统崩溃或无响应。

mysqld程序的工作流程

  • 连接层
    • 提供了两种连接方式
      • TCP
      • Socket
    • 验证用户的合法性
      • 权限
      • 用户名
      • 密码
    • 验证黑白名单
      • 验证主机和端口的黑白名单
    • 提供了一个和SQL层建立连接的专用线程
  • SQL层
    • 接受连接层传来的SQL语句
    • 验证语法
    • 验证语义
      • DML(insert update delete)
      • DDL(create database create table drop)
      • DQL(select show call desc explain)
      • DCL(grant revoke)
      • DTL(Database Transaction Language)TCL Transaction Controller Language
    • 解析器:解析后面的SQL语句
    • 优化器:提供几种比较优化的执行方案
    • 执行器:选择优化器提供的最优的一种方案,去执行
      • 提供一个与存储引擎建立连接的线程
      • 接收存储引擎层结构化成表的数据
    • 如果有缓存,写缓存
    • 记录日志(binlog)
  • 存储引擎层
    • 接收SQL层传来的SQL语句
    • 去磁盘上取出SQL语句需要的数据
    • 结构化成表格的形式返回给SQL层

MySQL的结构

  • 逻辑结构:数据库管理员的所有操作对象(MySQL的资源)
      • 真实数据
      • 元数据:用来描述数据属性的数据
        • 列 (字段)
          • 列名字 (字段名)
        • 数据类型
        • 约束
          • 是否为空
          • 默认值
          • 范围
          • 注释
          • 索引
        • 其他属性
          • 行数
          • 大小
          • 权限
  • 物理结构:最低层的物理数据

物理结构区别

 frm:format
而.frm文件是MyISAM表的元数据文件

## myisam
表结构:
[root@db01 data]# ll mysql/user*
-rw-rw---- 1 mysql mysql 10684 Jul 18 22:50 mysql/user.frm
-rw-rw---- 1 mysql mysql 236 Jul 19 10:53 mysql/user.MYD
-rw-rw---- 1 mysql mysql 2048 Jul 19 10:54 mysql/user.MYI

## innodb
[root@db01 data]# ll yl/yl_test*
-rw-rw---- 1 mysql mysql 8556 Jul 20 09:26 yl/yl_test.frm
-rw-rw---- 1 mysql mysql 98304 Jul 20 09:26 yl/yl_test.ibd

MySQL文件系统单位

Linux文件系统CentOS7:xfs

Linux文件系统CentOS6:ext4

MySQL Linux
目录
show databases; ls -l
use mysql cd /mysql
文件
show tables ls
二维表=元数据+真实数据行 文件=文件名+文件属性
段:一个段,是由多个区组成的(一张表)
区:一个区,是由多个页组成的,64个页为一个区1024k=1M
页:最小单位,一页,16k

标签:体系,rw,SQL,MySQL,TCP,mysql,连接,结构
From: https://www.cnblogs.com/xiutai/p/17749276.html

相关文章

  • MySQL客户端命令
    目录MySQL客户端命令优化命令提示符mysqlmysqladminmysqldumpSQL层SQL语句DDL(DatabaseDefinitionLanguage)数据定义语言数据库create增:建库drop删:删库alter改表操作create增:建表数据类型数字类型字符串类型枚举类型浮点型时间戳类型字段属性(约束)drop删alter改DMLinsert增delete......
  • 资源清单编写MySQL,wordpress
    目录mysqlwordpresshttp://k8s.driverzeng.com/v1.19/mysql[root@master-1mysql]#catmysql.yamlapiVersion:"v1"kind:"Pod"metadata:name:mysql57//资源清单叫mysql57spec:nodeName:node-1......
  • 数据结构的关键码序列的理解概述
    1、关键码序列的理解所谓关键码序列,就是出现在二叉排序树中的,对二叉排序树的各个结点进行排序的一个结点序列。依据左子树的各个结点的值都小于父结点的值,右子树的各个结点的值都大于父结点的值的条件进行排序。2、习题解决一般都是给我们一个二叉排序树的图,让我们去判断选......
  • MySQL MHA
    MySQLMHA1.什么是MHAMHA(MasterHighAvailability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。MHA的出现就是解决MySQL单点的问题。MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。MHA能在故障切换的过程中最大程度上保证数据的一致性,以达到真正......
  • MySQL专题面试题-二叉树、红黑树、B 树、B+树
    演示网址:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html所谓的索引,就是帮助MySQL高效获取数据的排好序的数据结构,基本都是按照k-v形式存储。1.二叉树 二叉树的每个节点至多只有2个叶子节点,且左边的叶子节点键值比根节点小,右边的叶子节点键值比根节点大。这......
  • mysqldump 导出来的文件,使用 source还原时报错“ASCII '\0' appeared in the stateme
    导出语句:mysqldump-uroot-pword--databasesdb1--tablestable1>./sqldumps/archive-table1-`date+"%Y%m%d_%H%M%S"`.sql导出后,使用source还原报错:ASCII'\0'appearedinthestatement,butthisisnotallowedunlessoption我开始以为是我导出的编码格式有问题,......
  • mysql中limit后面不能使用运算符
    mysql中limit后面不能使用运算符进行分页查询的时候,如果写成以下sql,语句执行会报错:select*fromuserwhereid=123456andcode=111andcreate_date>=20190101andcreate_date<=20190202limit(1-1)*1,20因为mysql中limit后面不能带运算符,只能是常量。解决方法使......
  • MYSQL中 find_in_set() 函数用法详解(匹配部门id或父id为100的数据)
    https://blog.csdn.net/carefree31441/article/details/119563685   ......
  • 05_数据结构与算法
    Sort排序算法sort包中实现了四种基本排序算法:插入排序、归并排序、堆排序、快速排序。但是它们不公开,只供sort包内部自己使用,所以在需要实现数据排序时不必考虑使用哪一种排序方法,只要实现了sort.Interface定义的三个方法:获取数据集合长度Len()、比较两个元素大小Less()、交......
  • Centos系统安装MySQL数据库时,要以不安全的方式连接至 dev.mysql.com,使用“--no-check-
    解决:要以不安全的方式连接至dev.mysql.com,使用“--no-check-certificate” 问题:[root@192桌面]#wgethttps://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm--2023-10-0812:44:16--https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.......