mysql逻辑架构和数据库缓冲池

news2024/12/28 18:18:36

逻辑架构

典型的CS架构,服务端程序使用的是mysqld
客户端进程向服务器进程发送一段文本(SQL语句),服务器进程处理后再向客户端进程发送文本(处理结果)
在这里插入图片描述

# 应用连接层:
# 连接处理,用户鉴权(username,host,password),连接到server后,根据用户的权限来判断用户可执行哪些操作,安全管理
# mysql服务层:
# [SQL接口]:接收用户的SQL命令,进行处理,将结果返回给用户
# [SQL解析器]:解析查询语句,形成语法树
# [优化器]:对查询语句进行优化,并选择合适的访问路径,生成SQL语句的执行计划
# [缓存]:全局和引擎特定的缓存,以键值对的方式缓存查询结果
# 因为sql语句要完全一样,命中率低,且对于更新频繁的表,缓存的有效期也很短,所以在mysql8中删去了缓存
# 存储引擎层
show engines;

buffer和cache

# A buffer is something that has yet to be "written" to disk.
# A cache is something that has been “read” from the disk and stored for later use.

profiling工具

# 启用profiling工具
# 通过该工具可以获取一条SQL语句在执行过程中多种资源的消耗情况
select @@profiling;
set profiling = 1;
select @@profiling;
# 展示sql执行的资源消耗和时长
select * from employees;
show profiles; # 最近几条sql语句的执行时长
show profile; # 上一条sql语句各个执行阶段的时长
show profile for query 62; # 指定sql的各个执行阶段的时长
show profile cpu,block io for query 134; # 时长,CPU和IO相关的资源消耗数据

数据库缓冲池

InnoDB存储引擎是以页(16KB)为单位来管理存储空间的
磁盘IO消耗的时间多,将磁盘中的页缓存到内存的Buffer Pool中
InnoDB存储引擎在处理客户端的请求时,当需要访问某个页的数据时,会把完整的页的数据加载到内存中
将来有请求再次访问该页时,就可以省去磁盘IO了
优先对使用频次高的数据进行加载(页面置换算法LRU)
InnoDB缓冲池中包括了数据页,索引页,插入缓存,自适应索引Hash,数据字典信息,锁信息等
当对数据库中记录进行修改时,会首先修改缓冲池中页里面的记录信息,然后数据库会以一定的频率刷新到磁盘上
缓冲池会采用一种checkpoint的机制将数据回写到磁盘上
当缓冲池不够用时,需要释放掉一些不常用的页,此时可以强行采用checkpoint的方式,将不常用的脏页回写到磁盘上,
然后再从缓冲池中将这些页释放掉,脏页指的是缓冲池中被修改过的页,与磁盘上的数据页不一致

# 查看\设置缓冲池的大小
# MYISAM引擎只缓存索引,不缓存数据,对应的键缓存参数为key_buffer_size
# INNODB引擎通过innodb_buffer_pool_size变量查看缓冲池大小
# 单位是byte
show variables like 'innodb_buffer_pool_size';
select 134217728/1024/1024; # 128MB
set global innodb_buffer_pool_size = 268435456; # 256MB
# Buffer Pool本质是Innodb申请的一块连续内存空间
# 多线程环境下,访问Buffer Pool中的数据需要加锁处理
# 在Buffer Pool特别大而且多线程并发访问特别高的情况下
# 单一的Buffer Pool可能会影响请求的处理速度
# 所以当Buffer Pool特别大时,可以把他们拆分成若干个小的Buffer Pool
# 每个Buffer Pool都称为一个实例,他们都是独立的申请内存空间,独立管理各种链表
# 在多线程并发访问时不会相互影响,提高并发处理能力
show variables like 'innodb_buffer_pool_instances';
# 当innodb_buffer_pool_size小于1G时,设置多个实例是无效的
# 在配置文件中指定
[server]
innodb_buffer_pool_instances = 2;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/193335.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分享|2023年全球市场准入认证咨讯

作为全球应用安全科学专家,UL Solutions服务全球100多个国家和地区的客户,将产品安全、信息安全和可持续性挑战转化为客户的机遇。UL Solutions 提供测试、检验、认证(TIC),以及软件产品和咨询服务,以支持客…

Deep Learning for 3D Point Clouds: A Survey - 3D点云的深度学习:一项调查 (IEEE TPAMI 2020)

Deep Learning for 3D Point Clouds: A Survey - 3D点云的深度学习:一项调查(IEEE TPAMI 2020)摘要1. 引言2. 背景2.1 数据集2.2 评估指标3. 3D形状分类3.1 基于多视图的方法3.2 基于体积的方法3.3 基于点的方法3.3.1 逐点MLP方法3.3.2 基于卷…

AI助力多文档审查丨合同风险审查、招投标文件、合同和中标通知书一致性审查

当下,企业管理的数据和文档管理中充斥着大量有复用价值的数据、资料和内容性信息。每一家企业都有许多商业文档和法律文档需要使用和维护,其中包含了不同语言文字、手写体、数字、公式等。然而,目前企业的各种文档资料仍主要依靠人工手段进行…

【Redis】Redis面试题详解与使用案例(金三银四面试专栏启动)

📫作者简介:小明java问道之路,2022博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建工设优化。 文章内容兼具广度深度、大厂技术方案,对待技术喜欢推理加验证,就职于知名金融公司…

ipv6实验

r1的配置为 [r1]int g0/0/0 [r1-GigabitEthernet0/0/0]ip address 12.1.1.1 24 [r1]int lo0 [r1-LoopBack0]ip address 1.1.1.1 32 [r1]ip route-static 0.0.0.0 0 12.1.1.2 r2的配置为 [r2]int g0/0/0 [r2-GigabitEthernet0/0/0]ip address 12.1.1.2 24 [r2]int lo0 […

小红书破局品牌增长:4大阶段+8个种草建议

品牌如何从激烈的竞争中突围,成为快速增长的“黑马”?本文就和大家一起聊聊围绕产品面对不同阶段的人群“种草”策略,希望能够帮助品牌更好地与用户沟通并提升营销效率,实现品效合一。 1、种草1.0 —— 立住产品,抢占赛…

Minecraft 1.19.2 Fabric模组开发 10.建筑生成

我们本次尝试在Fabric 1.19.2中生成一个自定义的建筑。 效果展示效果展示效果展示 由于版本更新缘故,1.19的建筑生成将不涉及任何Java包的代码编写,只需要在数据包中对建筑生成进行自定义。 1.首先我们要使用游戏中的结构方块制作一个建筑,结构方块使用…

企业内部沟通即时通讯软件要怎么选?

随着企业信息化的快速发展,为了工作效率的提高,即时通讯工具已经成为了众多企业办公时的标配,同时,各大企业对即时通讯功能的要求也越来越高。但是,现在市场上即时通信软件众多,各种功能和服务都是参差不齐…

python爬虫基本库的使用

博主简介:博主是一个大二学生,主攻人工智能领域研究。感谢缘分让我们在CSDN相遇,博主致力于在这里分享关于人工智能,C,python,爬虫等方面的知识分享。如果有需要的小伙伴,可以关注博主&#xff…

Java面试基础篇

目录 一、集合 1.集合与集合之间的区别 2.集合子类之间的区别(数据结构) 二、线程 三、面向对象 继承 多态 四、异常 五、IO流 六、序列化与反序列化 今天给大家分享 Java基础篇的面试题,小编给大家稍微整理了一下,希望即…

RHCE(web服务器)

文章目录一、www简介(一)网址及HTTP简介(二)HTTP协议请求的工作流程二、www服务器的类型(一)仅提供用户浏览的单向静态网页(二)提供用户互动接口的动态网站三、www服务器的基本配置四…

苹果证书p12和描述文件的创建教程

在hbuilderx或apicloud这些uniapp框架工具打包苹果APP的时候,需要p12证书和证书profile文件来编译,目前网上很少使用windows电脑生成p12证书的教程,官方的教程都是需要使用苹果电脑来创建的。 这里,我们这篇文章来教会大家如何使…

【虚拟仿真】Unity3D中实现鼠标悬浮UI上显示文字

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 本篇文章实现一个鼠标悬浮在UI上显示文字的功能,实…

LMK04828时钟芯片配置历程——SPI接口

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 LMK04828时钟芯片配置历程——SPI接口总结最近有一个开发板需要去调试,开发板上包含了AD9371和LMK04828时钟芯片,而我的任务是需要将他们都配置起来。…

c++入门之输入输出命名空间

文章目录前言一、输入输出二、命名空间1.使用命名空间的原因2.命名空间定义3.命名空间的定义注意事项(1)命名空间只能在全局范围使用(2)命名空间可以嵌套(3)命名空间是开放的,可以随时添加新的成员&#xf…

mysql流程控制

前言: 👏作者简介:我是笑霸final,一名热爱技术的在校学生。 📝个人主页:个人主页1 || 笑霸final的主页2 📕系列专栏:数据库 📧如果文章知识点有错误的地方,请…

QT---制作简易串口助手

一、ui制作打开QTCreator创建一个新文件2.进入UI设计界面进行设计进入ui界面后,选择相应的控件将串口助手的样子给做出来,我选择的是如下的控件做这个串口助手:1.按钮:2.下拉列表3.标签4.组合框5.文本编辑绘制ui界面如下&#xff…

如何用Windows自带命令修改文件和图片的MD5

首先说下,md5到底是啥,它是一段固定长度的数据。无论原始数据是多长或多短,其MD5值都是128bit。另外md5是确定性,一个原始数据的MD5值是唯一的,同一个原始数据不可能会计算出多个不同的MD5值;类似人类的身份…

快速搭建前后端分离项目

后端 配置文件和依赖 创建一个SpringBoot项目,采用Mybatis-Plus快速构建项目。 application.yml进行配置 server:port: 80spring:datasource:username: rootpassword: 123456url: jdbc:mysql://localhost:3306/ems?useSSLfalse&useUnicodetrue&charact…

C++——哈希

目录 unordered系列关联式容器 unordered_mapunordered_map在线文档说明 unordered_map的接口说明 unordered系列优势 哈希 解决哈希冲突 1.闭散列——开放定址法 思考:哈希表什么情况下进行扩容?如何扩容? 插入元素代码 查找元素 …