(八)大白话MySQL通过配置多个Buffer Pool来优化数据库的并发性能

news2024/11/19 2:26:30

文章目录

    • 1、多线程在访问Buffer Pool的时候需要加锁吗?
    • 2、多线程并发访问会加锁,数据库的性能还能好吗?
    • 3、MySQL的生产优化经验:多个Buffer Pool优化并发能力
    • 100、创作不易,更多章节,请扫码关注,谢谢支持

1、多线程在访问Buffer Pool的时候需要加锁吗?

前面我们已经把Buffer Pool的整体工作原理和设计原理都已经给大家分析的比较清楚了,基本上目前大家都能够很好的理解,我们对MySQL执行CRUD操作时候的第一步,就是利用Buffer Pool里的缓存来更新或者查询。

那么既然已经把Buffer Pool的原理都讲的差不多了,接着我们就可以说说Buffer Pool在实际生产环境运行中的一些经验,应该如何对Buffer Pool进行一些配置上的优化,来提升他的访问性能呢?

首先我们来看第一个问题,大家都知道,Buffer Pool其实本质就是一大块内存数据结构,由一大堆的缓存页和描述数据块组成的,然后加上了各种链表(free、flush、lru)来辅助他的运行。

好,那么这个时候假设MySQL同时接收到了多个请求,他自然会用多个线程来处理这多个请求,每个线程会负责处理一个请求,对吧?

我们看下图,就是一个多线程并发访问Buffer Pool的示意图。
在这里插入图片描述

那么大家思考一下,现在多个线程来并发的访问这个Buffer Pool了,此时他们都是在访问内存里的一些共享的数据结构,比如说缓存页、各种链表之类的,那么此时是不是必然要进行加锁?

对,多线程并发访问一个Buffer Pool,必然是要加锁的,让一个线程先完成一系列的操作,比如说加载数据页到缓存页,更新free链表,更新lru链表,然后释放锁,接着下一个线程再执行一系列的操作。

2、多线程并发访问会加锁,数据库的性能还能好吗?

既然我们已经解决了第一个问题,就是多线程并发访问一个Buffer Pool的时候必然会加锁,然后很多线程可能要串行着排队,一个一个的依次执行自己要执行的操作,那么此时我问大家第二个问题,此时数据库的性能还能好吗?

应该这么说,即使就一个Buffer Pool,多个线程会加锁串行着排队执行,其实性能也差不到哪儿去。

因为大部分情况下,每个线程都是查询或者更新缓存页里的数据,这个操作是发生在内存里的,基本都是微秒级的,很快很快,包括更新free、flush、lru这些链表,因为都是基于链表进行一些指针操作,性能也是极高的。

所以即使每个线程排队加锁,然后执行一系列操作,数据库的性能倒也是还可以的。但是再怎么可以,也毕竟也是每个线程加锁然后排队一个一个操作,这也不是特别的好,特别是有的时候你的线程拿到锁之后,他可能要从磁盘里读取数据页加载到缓存页里去,这还发生了一次磁盘IO呢!所以他要是进行磁盘IO的话,也许耗时就会多一些,那么后面排队等他的线程自然就多等一会儿了!

3、MySQL的生产优化经验:多个Buffer Pool优化并发能力

因此这里我们给大家介绍一个MySQL的生产环境优化经验,就是可以给MySQL设置多个Buffer Pool来优化他的并发能力

一般来说,MySQL默认的规则是,如果你给Buffer Pool分配的内存小于1GB,那么最多就只会给你一个Buffer Pool。

但是如果你的机器内存很大,那么你必然会给Buffer Pool分配较大的内存,比如给他个8G内存,那么此时你是同时可以设置多个Buffer Pool的,比如说下面的MySQL服务器端的配置。

[server]
innodb_buffer_pool_size = 8589934592
innodb_buffer_pool_instances = 4

我们给buffer pool设置了8GB的总内存,然后设置了他应该有4个Buffer Pool,此时就是说,每个buffer pool的大小就是2GB
这个时候,MySQL在运行的时候就会有4个Buffer Pool了!每个Buffer Pool负责管理一部分的缓存页和描述数据块,有自己独立的free、flush、lru等链表

我们看下图:
在这里插入图片描述

所以这样的话,一旦你有了多个buffer pool之后,你的多线程并发访问的性能就会得到成倍的提升,因为多个线程可以在不同的buffer pool中加锁和执行自己的操作,大家可以并发来执行了!

所以这个在实际生产环境中,设置多个buffer pool来优化高并发访问性能,是mysql一个很重要的优化技巧。

100、创作不易,更多章节,请扫码关注,谢谢支持

在这里插入图片描述

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

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

相关文章

学而不固,择善固之-杰克教诲

学而不固,择善固之 我也是第一次知道这个词,是受“杰克”大佬教诲。2022-12-30 解释一 学习有时候不是为了马上用起来,有时候只是让我们不再固执,通过学习知道原来世界上还有这么一说,对很多事情保有好奇心。 不持成见地学习&…

spring中为什么要三级缓存?二级不行吗

这是我看过视频中最能解释的文字表达了 先说bean的创建过程:实例化->依赖注入->初始化 实例化之后会提前暴露到缓存,用于解决循环依赖问题。 以下的解释保证你能看懂: 为什么需要一级缓存ioc容器 总得有个地方放那些单例吧 为什么需…

【决策树】简单介绍+个人理解(一)

∙\bullet∙ 分类模型中除了贝叶斯决策规则,SVM,最近邻分类器,还有决策树 ∙\bullet∙ 决策树就是选一个属性,根据属性的不同取值,将样本划分为不同的类,不断重复下去,直到终止。在叶子节点处&a…

支持图文公式混排的题库软件,Word试卷直接入库

试卷电子化的难题是入库难,只有试卷入库,才能做到后续的监督,复习,错题本等功能。 目前题库软件众多,但大多数题库软件仅支持纯文本题库,而很多试卷都是包括公式,图形,排版复杂。 …

中国外文局文化传播中心借力vLive虚拟直播,打造国际汉文化云讲堂

文明因多样而交流,因交流而互鉴,因互鉴而发展。 近日,中国外文局文化传播中心组织的“中华文化国际传播云讲堂”活动成功举办,本次云讲堂以“世界汉学家看中国文化”为主题,邀请世界汉学家共同探讨汉文化,…

【Git】一文带你入门Git分布式版本控制系统(创建合并分支、解决冲突)

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,也会涉及到服务端 📃个人状态: 在校大学生一枚,已拿多个前端 offer(秋招) 🚀未…

Kyligence 客户浦发银行、招商银行荣获金融业科技赋能业务创新突出贡献奖

近日,由《金融电子化》杂志社主办的“2022中国金融科技年会暨第十三届金融科技应用创新奖颁奖典礼”成功举办。Kyligence 服务客户上海浦东发展银行股份公司(以下简称浦发银行)项目「客户旅程万花筒」、招商银行股份有限公司(以下…

户外运动如何安全享受音乐、专业户外运动耳机推荐

想采摘成熟的柿子、苹果、冰糕或栗子吗?出去运动吧在这个不冷不热的金秋季节里,大自然的一切都在等着我们出户外去探险,要说今年的哪一个户外运动最引人注目,露营和登山总是不相上下,但是运动怎么能少了音乐的陪伴呢&a…

智慧楼宇数字孪生应用方案

智慧楼宇也称智能建筑、智能楼宇,是将建筑、物联网感知和控制及结构、系统、管理和服务等各方面的先进科技相互交融结合,是现代化新型建筑发展的必经阶段。通过数字孪生技术,可将楼宇设备之间、系统之间融合数据互通,为组成智慧楼…

PyTorch学习笔记 7.TextCNN文本分类

PyTorch学习笔记 7.TextCNN文本分类一、模型结构二、文本分词与编码1. 分词与编码器2. 数据加载器二、模型定义1. 卷积层2. 池化层3. 全连接层三、训练过程四、测试过程五、预测过程一、模型结构 2014年,Yoon Kim针对CNN的输入层做了一些变形,提出了文本…

Redis事件循环

Redis事件循环文件事件时间事件事件调度和执行客户端部分关于客户端输出缓冲区限制ServerCron周期函数服务器启动流程小结Redis服务器是一个事件驱动程序, 主要处理两类事件: 文件事件 (File Event) : 对套接字操作的抽象,服务器与客户端的通信过程会产生相应的文件…

Java 中的继承和多态

面向对象的三大特性:封装、继承、多态。在这三个特性中,如果没有封装和继承,也不会有多态。 那么多态实现的途径和必要条件是什么呢?以及多态中的重写和重载在JVM中的表现是怎么样?在Java中是如何展现继承的特性呢&am…

常用密码算法介绍

算法种类 根据技术特征,现代密码学可分为三类: 对称算法 说明:加密密钥和解密密钥相同,对明文、密文长度没有限制 子算法: 流密码算法:每次加密或解密一位或一字节的明文或密文 分组密码算法&#xff…

LiveGBS流媒体平台国标GB/T28181功能-国标流媒体服务平台作为上级接入海康大华华为宇视等下级平台及摄像头

LiveGBS国标流媒体服务平台作为上级接入海康大华华为宇视等下级平台及摄像头1、背景说明2、部署国标平台2.1、安装使用说明2.2、服务器网络环境2.3、信令服务配置3、监控摄像头设备接入3.1、海康GB28181接入示例3.2、大华GB28181接入示例3.3、华为IPC GB28181接入示例4、硬件NV…

mysql 存储过程实现从一张表数据迁移到另一种表

通过存储过程迁移数据: 创建表 CREATE TABLE test1 ( idp varchar(255) DEFAULT NULL, brandIdp varchar(255) DEFAULT NULL, namep varchar(1000) DEFAULT NULL, urlp varchar(1000) DEFAULT NULL ) ENGINEInnoDB DEFAULT CHARSETkeybcs2; INSERT INTO t…

2023美国大学生数学建模竞赛(MCM/ICM)报名流程指南

数模乐园作为国内美赛报名最大官方平台,为参加美赛的同学解决国际支付报名难的问题,为同学们省去大部分繁琐流程的同时还附赠纸质证书打印邮寄、美赛赛题解析、美赛专属礼包、赛题翻译等备赛资料 数模乐园已累计为10万同学完成了美赛辅助报名&#xff0…

Android 音视频编解码(三) -- 视频编码和H264格式原理讲解

Android 音视频编解码(一) – MediaCodec 初探 Android 音视频编解码(二) – MediaCodec 解码(同步和异步) 前面学习了 MediaCodec 的基本原理,以及如何解码,在学习MediaCodec 编码之前,先来学习视频是如何编码的,以及最常用的 H2…

亚马逊vs Starday :做跨境电商生意,从哪里开始?

据有关数据统计,中国跨境电商进出口五年增长近十倍,在一众行业面前脱颖而出,成为我国对外贸易新的增长极,然而也正是这样的趋势,使得许多原本从事电商行业的卖家和资本纷纷闻风而动,想要进入市场分一杯羹&a…

3d打印的翘边问题

如何解决3D打印翘边问题 翘边是3D打印中常见的问题之一。为什么在打印的过程中会遇到翘边呢?主要是因为塑料的热胀冷缩,从喷嘴挤出来的塑料在冷却时候会收缩,进而导致模型边缘或者两头翘了起来与平台出现分离。那么如何避免或解决翘边问题呢…

“消费盲返”爆火,一个月能赚1000w?

寒冬已至,疫情还是在断断续续的复发,很多城市也受到严重的影响,封城的通告一出,无疑是给不少的实体企业增添了相当大的噩耗打击,这时候更为磨炼实体企业和创业人看待事情的立场,有些人会觉得疫情的袭来什么…