MySQL 关于缓存的 “杂七杂八”

news2024/9/21 12:40:49

0318330b702bef07fa6954abfe1d9f96.png

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共740人左右 1 + 2)

你是否可以想象如果MYSQL 没有了innodb_buffer_pool 是什么样子的情况,本期需要说说MYSQL的缓存,已经如何使用他更加有效用或者说性价比。首先MYSQL 使用缓存机制的目的是什么?

减少磁盘访问的频率,提高数据访问效率是缓冲存在的基础目的,而一般的情况下,数据库所在的服务器的内存很难HOLD住所有的在服务器上存在的数据,所以缓存是珍贵的,那么珍贵的基础上如何更有效的利用缓存就是一个特别重要的部分。

这里通过直接从内中提供数据页面的数量和对比从磁盘需要读入的数据页面的数量,和在某一个时刻缓存中被驱逐的页面,来去评判缓存的运行效率是一种常见的方式。

MYSQL中其标准InnoDB存储引擎的主要数据缓存结构称为Buffer Pool。暴露Buffer Pool效率的两个状态变量(或在本例中的状态计数器)如下所述(引用MySQL手册):

Innodb_buffer_pool_read_requests:逻辑读请求的数量。

Innodb_buffer_pool_reads:InnoDB无法满足缓冲池的逻辑读取数,必须直接从磁盘读取的逻辑读取数。

MYSQL 中可以通过percona 公司的pt 工具来捕捉这些数据的动态量,用来分析服务器的性能。如pt-stalk 来统计某一个时间段的变量值。

 pt-stalk --no-stalk --iterations=1

具体的pt_stalk 的使用可以参考percona 官方的文档,进行详细的参数了解和使用。

提到这里,很多人会想起buffer hit ratio 这个问题,很多同学通过这个指数来标定当前的缓冲是否够用。一般的观点是如果buffer hit ratio 的低于95% - 99% (我听到过大多数DBA的观点。也有个别的提高过90%)这个标准后说明缓存不足以支撑当前的数据库的使用。

如果单独拿出来这个观点来,将其他的可能性都不考虑的情况下,这个观点是正确的,的确是缓冲不足以支撑当前的查询。但我们应该下探如下的部分来去解决问题,而不是直接添加更大的物理内存和提高innodb_buffer pool 的配置。

1  是否是由于磁盘的问题导致,如磁盘的速度较慢,而导致在提取数据时导致的数据提取时间过长导致的问题

2  是否是由于没有有效的索引导致的,全表扫描引起的所谓的 buffer_hit_ratio 较低导致的问题

3   使用MYSQL 作为OLAP 的使用方式导致的 buffer_hit_ratio 数值较低的问题。

除此以外,是缓冲本身的大小的设置问题,或真的是物理内存交付的不合理的问题等等。

那么缓冲不足可能会造成什么问题也是我们需要进行了解和学习的,缓冲不足

查看缓冲命中率语句方式

SELECT variable_value INTO @num_reads

FROM performance_schema.global_status

WHERE variable_name = 'Innodb_buffer_pool_read_requests';

SELECT variable_value INTO @num_misses

FROM performance_schema.global_status

WHERE variable_name = 'Innodb_buffer_pool_reads';

SET @buffer_pool_size = (SELECT @@innodb_buffer_pool_size);

SELECT CONCAT(100 - ((@num_misses / @num_reads) * 100), '%') AS `Hit Ratio`;

61c7468853ff537bea880f955ccadbf5.png

同时还有相关的参数需要查看设置的是否合理,如innodb_lru_scan_depth, 他主要用于缓冲中每秒对于LRU中的脏页被扫描的深度问题, innodb 存储引擎中,LRU 链表用于管理缓冲池中的页面,当脏页达到一定的程序就需要清理出内存,innodb_lru_scan_depth 可以控制innodb 存储引擎在扫描LRU链表对于脏页进行flush 的速率和频率,从而更好的平衡内存的资源,与IO 性能之间的关系。

这个值在 0 - 1024 ,更小的值会减少扫描的深度,延缓脏页刷回到磁盘的速度,降低磁盘的压力,如果你的内存较大,并且有频繁的访问,同时还都是类OLAP的访问方式,如果此时磁盘的压力较高,并且忽高忽低,可以将这个参数调低,并观察,找到平衡点。

5e01aa6f1e2d0b6b19e96905b00c01d4.png

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

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

相关文章

中心极限定理模拟

中心极限定理模拟 文章目录 中心极限定理模拟 [toc] 设服从均值为 μ \mu μ、方差为 σ 2 < ∞ \sigma^2<\infty σ2<∞的任意一个总体&#xff0c;抽取样本量为 n n n的样本&#xff0c;当 n → ∞ n\to\infty n→∞&#xff0c;样本均值 X ˉ \bar{X} Xˉ的抽样分布…

云原生之使用Docker部署webos私有云盘

云原生之使用Docker部署webos私有云盘 一、webos介绍1. webos简介2. webos特点 二、本次实践介绍1. 本次实践简介2. 本次部署环境规划 三、检查本地Docker环境1. 检查Docker版本2. 检查Docker服务状态 四、下载webos镜像五、部署webos1. 创建挂载目录2. 创建webos容器3. 查看we…

光栅化过程 (顶点片元着色)

片元为什么是三角形&#xff1a; 1 三角形是最基本的多边形&#xff1b; 2 任何多边形都可以拆分成三角形&#xff1b; 3 空间内任何三个点的连线一定是平面&#xff1b; 4 三角形有清晰的内部和外部定义&#xff1b; 5 三角形只要定义顶点的属性就可以计算三角形内部点的渐变关…

mac iterm2设置rz sz文件传输

1、安装lrzsz $ brew install lrzsz 2、创建并设置iterm2-send-zmodem.sh sudo vim /usr/local/bin/iterm2-send-zmodem.sh # /usr/local/bin/iterm2-send-zmodem.sh#!/bin/bash # Author: Matt Mastracci (matthewmastracci.com) # AppleScript from http://stackoverflow.com…

【云原生】使用外网Rancher2.5.12搭建阿里云内网K8s 1.20集群

目录 一、目标二、解决方案三、草图四、版本信息五、资源规划六、必要条件七、开始部署1、安装Docker2、安装Rancher3、解析Rancher Server URL域名4、创建K8s集群5、注册K8s集群节点 八、验证 一、目标 在云平台搭建一套高可用的K8s集群 二、解决方案 第一种&#xff1a;使…

创客匠人产品怎么样?

创客匠人产品经过多年的更新与送代&#xff0c;现如今应用范畴已经逐渐完善&#xff0c;客户群体也越来越来越广泛。虽然有很多人都有听说过创客匠人&#xff0c;但是对于创客匠人的功能和性质可能并不是得分的了解&#xff0c;为了便于大家选择&#xff0c;下面就由小编我为大…

谈谈几种分布式锁实现

大家好&#xff0c;我是易安&#xff01;今天我们呢谈一谈常见的分布式锁的几种实现方式。 什么是分布式锁 在JVM中&#xff0c;在多线程并发的情况下&#xff0c;我们可以使用同步锁或Lock锁&#xff0c;保证在同一时间内&#xff0c;只能有一个线程修改共享变量或执行代码块…

Linux监听器 -- inotify

inotify作为Linux系统的一个监听器&#xff0c;能够监听文件或者目录的变化。 inotify接口 inotify的接口主要有三个&#xff0c;分别是inotify_init、inotify_add_watch 和 inotify_rm_watch。下面分别进行详细介绍。 inotify_init 函数用于创建inotify句柄&#xff0c;函数…

一图看懂 pytz 模块:现代以及历史版本的世界时区定义数据库,资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 pytz 模块&#xff1a;现代以及历史版本的世界时区定义&#xff0c;将时区数据库引入 Python&#xff0c;资料整理笔记&#xff08;大全&#xff09; &#x1f9ca;摘要&am…

算法小课堂(七)字符串

一、概念 1.1相关概念 0C中有两种字符串表示形式&#xff1a;C风格字符串和string类类型。 C风格字符串是 字符数组使用null字符\0终止的一维字符数组&#xff0c;字符指针是一个指针变量&#xff0c;里面存放一个字符的地址 而string类处理起字符串来会方便很多&#xff0c;完…

Golang中的数组和切片

目录 数组 基础知识 声明并初始化一个数组 遍历一个数组 切片 基础知识 声明并初始化一个切片 向切片中添加元素 切片的遍历和切片表达式 数组和切片的区别 数组 基础知识 数组是一种由固定长度的特定类型元素组成的序列&#xff0c;元素可以是任何数据类型&#x…

数组——知识点大全(简洁,含使用演示和代码)

目录 一.一维数组的创建 1.数组的基本形式 2.变长数组 3.数组的初始化 二.数组的本质 三.一维数组的使用 1.访问数组成员 2.计算数组的大小 四.一维数组在内存中的存储 五.二维数组 1.二维数组的形式 2.二维数组的初始化规则 六.二维数组的使用 1.打印二维数组 …

Linux下新加新磁盘分区及挂载

一&#xff1a;新插入磁盘查看 查看插入磁盘 法1&#xff1a;$sudo fdisk -l 法2&#xff1a; $sudo lsblk 二&#xff1a;磁盘分区及格式化 1: 分区 $sudo fdisk /dev/nvme0n1 进入分区工具后&#xff0c;我们可以输入 m 看指令说明&#xff1a; Command (m for help): …

前端框架比较:Vue.js、React、AngularJS三者的优缺点和应用场景

章节一&#xff1a;引言 在当前的互联网开发中&#xff0c;前端框架已经成为了不可或缺的一部分。然而&#xff0c;前端框架如此之多&#xff0c;该如何选择呢&#xff1f;Vue.js、React和AngularJS是目前比较受欢迎的三个前端框架&#xff0c;它们各自有着不同的优缺点和应用…

MySQL笔记(三) 联结、组合查询、全文本搜索、视图、索引、触发器、事务

文章目录 联结关系表为什么要使用联结维护引用完整性 内部联结联结多个表创建高级联结使用表别名 自联接自然联结外部联结 OUTER JOIN外部联结的类型 使用带聚集函数的联结要点 组合查询 UNION创建规则注意 全文本搜索查询拓展布尔文本搜索总结 视图为什么使用视图视图的规则和…

虚拟机与主机互传文件方法分享

现在虚拟机的使用已经非常普及&#xff0c;无论新手学习&#xff0c;还是运维工程师搭建虚拟化平台&#xff0c;都会使用到虚拟机。对个人用户来说&#xff0c;非常方便就能搭建很多操作系统进行学习&#xff1b;对企业用户来说更是降低了服务器的硬件成本。 使用虚拟机的时候…

本周日直播,全链路数据治理实践论坛开放报名

5月14日&#xff0c;09:00-12:00&#xff0c;由阿里云资深技术专家温绍锦老师出品的 DataFun Summit 2023&#xff1a;数据治理在线峰会-全链路数据治理论坛&#xff0c;将邀请来自阿里、Aloudata大应科技、爱奇艺的4位专家就相关主题进行深度分享&#xff0c; 出品人&#xff…

JAVA-继承

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 目录 文章目录 前言 1.为什么需要继承 2. 继承的语法 3.子类构造方法 4.super和this的异同 5.final 关键字 总结 前言 继承是面向对象语法的三大特征之一。在以后写…

【Python 装饰器成长路径】零基础也能轻松掌握的学习路线与参考资料

Python装饰器是Python语言的一个重要特性&#xff0c;可以让代码更加简洁、优雅&#xff0c;并且让代码重用性更加高效。本文针对Python装饰器的学习路线&#xff0c;参考资料和优秀实践进行详细介绍。 文章目录 一、学习路线二、参考资料三、优秀实践 一、学习路线 了解函数…

10. 类的友元

一、类的友元 生活中你的家有客厅&#xff08;public&#xff09;&#xff0c;有你的卧室&#xff08;private&#xff09;&#xff0c;客厅所有来的客人都可以进去&#xff0c;但是你的卧室是私有的&#xff0c;也就是说只有你能进去&#xff0c;但是&#xff0c;你也可以允许…