MySQL学习之架构

MySQL架构

1 目录结构

这里是linux平台下的。

目录功能
1/var/lib/mysql数据库文件的存放路径
2/usr/binmysql命令所在的目录
3/etc/my.cnf配置文件,相当于Windows系统中的my.ini
4/usr/share/mysql-8.0MySQL其它配置文件所在的目录

2 配置文件

说明:[client]是客户端配置1,[server]是mysql服务器配置,[mysqld]是启动配置

参数名称说明
port表示 MySQL 服务器的端口号
basedir表示 MySQL 的安装路径
datadir表示 MySQL 数据文件的存储位置,也是数据表的存放位置
default-character-set表示服务器端默认的字符集
default-storage-engine创建数据表时,默认使用的存储引擎
sql-mode表示 SQL 模式的参数,通过这个参数可以设置检验 SQL 语句的严格程度
max_connections表示允许同时访问 MySQL 服务器的最大连接数。其中一个连接是保留的,留给管理员专用的
query_cache_size表示查询时的缓存大小,缓存中可以存储以前通过
table_open_cache表示所有进程打开表的总数
tmp_table_size表示内存中每个临时表允许的最大大小
thread_cache_size表示缓存的最大线程数
myisam_max_sort_file_size表示 MySQL 重建索引时所允许的最大临时文件的大小
myisam_sort_buffer_size表示重建索引时的缓存大小
key_buffer_size表示关键词的缓存大小
read_buffer_size表示 MyISAM 表全表扫描的缓存大小
read_rnd_buffer_size表示将排序好的数据存入该缓存中
sort_buffer_size表示用于排序的缓存大小

3 逻辑架构

3.1 服务器处理客户端请求

特点:MySQL是的C/S模式。

流程2:客户端建立连接后,发送请求后。MySQL服务器对请求进行解析优化,调用存储引擎对物理存储进行查找(先加载到缓存中,在缓存中查找)。

MySQL8.0基础框架

组件说明
基础服务组件完成基础服务
连接池包括TCP连接池和线程池。前者是服务器与客户端的连接,后者是完成SQL操作的线程。
SQL接口接收SQL指令返回结果。类似于后端接口,本身没处理SQL逻辑,只是接口
解析器对SQL进行解析,生成语法树
优化器对SQL进行优化,采用选取,投影。连接的方式优化。
引擎与底层文件交互

数据库三个层次:连接层(连接池),服务层(SQL接口,解析器,优化器),引擎层(存储引擎)。

3.2 SQL执行流程

在这里插入图片描述

set @@profiling=1;#记录执行流程
show profiels;#显示执行的语句
show profile for Query num;#查看第num条语句执行流程

5.3.3 缓冲池

说明:将外存数据部分加载到内存中,加快查询速度。在内存中称为缓冲池。

原则:使用频率高,就把相应数据加载到缓冲池中。使用的策略和操作系统中的页机制类似。

特点

  1. 提前读(局部性原理)
  2. 延后写

4 存储引擎

定义:存储引擎指的是表的类型。接收上层的指令,对表中的数据进行操作。系统默认为innodb引擎。可以修改。

4.1 InnoDB

特点

  1. 支持外键、事务
  2. 更新和删除效率高
  3. 适合大量数据,高并发(行级锁)
  4. 写的效率低,内存要求高(一起存储索引和数据)

4.2 MyISAM

特点

  1. 表级锁,不支持事务、外键
  2. 查询增加速度快
  3. 索引和数据分开存,内存要求低
  4. 适合少量数据

  1. 可以配置用户名和密码和ip等信息,这样下次登陆无需输入这些信息。 ↩︎

  2. 组件流程为客户端->连接池->SQL接口>解析器->优化器->存储引擎->文件系统->SQL接口->连接池->客户端 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值