IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL-执行流程+缓存+存储引擎 -> 正文阅读

[大数据]MySQL-执行流程+缓存+存储引擎

目录

一、服务器处理客户端请求

二、sql执行流程

三、缓冲池

四、存储引擎


一、服务器处理客户端请求

注意:mysql8.0版本中查询缓存去掉

  • 连接层:验证用户名和密码等身份认证。

  • 服务层:sql interface:sql接口,接收命令并且返回结果;parse解析器:语法、语义解析;optimizer优化器:生成执行计划;caches & buffers:查询缓存组件,5.7版本中会先从缓存组件中进行语句查询,如果有则直接返回,没有则继续语法解析,存储引擎执行之后得到的数据会先缓存在缓存组件中,达到一定数量时再返回给客户端。
  • 引擎层:对sql语句对数据库进行相关操作。

二、sql执行流程

  • 查询缓存:是否打开query_cache_type,如果打开查看是否命中缓存,是的话直接返回结果。mysql8.0抛弃该功能,命中率太低,语句增加一个空格都无法命中,函数的调用和修改表结构和数据时会触发缓存失效。
    -- 查看是否开启查询缓存
    show variables like '%query_cache_type';
    -- 在配置文件中开启查询缓存 0-关闭查询缓存 1-开启 2-demand(按需使用)
    query_cache_type=2
    
    -- 监控查询缓存命中率
    show status like'%Qcache';
  • 解析器:在解析器中对sql语句进行语法分析、语义分析。分析出关键字、表名等,根据语法分析器来判断sql是否满足mysql语法。
  • 优化器:确定sql执行成本最低,选择索引操作,选择出最好的执行计划。分为逻辑查询优化(sql写法)和物理查询优化(索引选择、表连接) 。
  • 执行器:判断用户是否有权限,调用存储引擎api将结果返回到查询缓存,全部查询完毕返回给客户端。
    -- 查看是否开启记录sql执行过程
    select @@profiling;
    show variables like 'profiling';
    -- 临时修改 永久修改设置在配置文件中
    set profiling=1;
    
    -- 查看最近执行语句
    show profiles;
    
    -- 查看指定语句执行情况
    show profile for query 7;

三、缓冲池

  • innodb存储形式为数据页形式,默认16kb大小;
  • innodb缓冲池包括数据页、索引页、插入缓存、锁信息、自适应Hash和数据字典等信息;
  • 缓存原则:“位置*频次”,位置决定效率,在内存中直接访问数据;频次决定优先级,缓冲池与内存存储大小小于磁盘数据时,优先使用频次高的热数据进行加载;
  • 预读特性:缓冲池内存允许的情况下,预先读取数据页前后数据事先缓存在缓冲池中;
  • 缓冲池读取数据:

-- 查看缓存池大小
show variables like '%innodb_buffer_pool_size%';
  • 多线程情况下访问bufferPool需要加锁,可以一个缓冲池拆解成多个小的缓存池
    -- 启动服务器时设置个数
    [server]
    innodb_buffer_pool_instances = 2
    -- 查看缓冲池个数
    show variables like 'innodb_buffer_pool_instances';
  • 脏数据/脏页:在更新操作时,缓冲池不存在该数据时需要从磁盘中读取数据,在缓冲池进行修改,修改完后缓冲池内数据与磁盘数据不一致;

四、存储引擎

-- 查看存储引擎
show engiens;
-- 设置存储引擎(临时)
set default_storage_engine=MyISAM;
-- 设置存储引擎(永久)
default-storage-engine=MyISAM;
-- 重启服务
systemctl restart mysqld.service;
  • innodb支持外键、事务,在5.5版本后默认为存储引擎,具有行锁,高并发时效率高。对内存要求高,处理增加和查询效率低,占用磁盘空间存储索引和数据。
  • myisam不支持外键、事务,只支持表级锁,崩溃后无法恢复,5.5之前默认存储引擎,select和insert速度比innodb大,数据和索引分开存储,数据量不大的时候读和写建议使用myisam。
  • archive用于数据存档,5.5之后支持索引,不支持修改,压缩性能好,使用行级锁,适合日志和数据采集类应用。
  • csv可以转换为csv文件,数据交换机制
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 10:50:33  更:2022-08-06 10:53:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 0:56:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码