返回顶部
首页 > 资讯 > 数据库 >第07问:innodb_buffer_pool_instances 是如何影响性能的?
  • 460
分享到

第07问:innodb_buffer_pool_instances 是如何影响性能的?

摘要

问题: 我们都知道 innodb_buffer_pool_instances 参数,将 buffer pool 分成几个区,每个区用独立的锁保护,这样就减少了访问 buffer pool 时需要上锁的粒度,以提高性能。 那么我们如何观察它是

第07问:innodb_buffer_pool_instances 是如何影响性能的?

问题:

我们都知道 innodb_buffer_pool_instances 参数,将 buffer pool 分成几个区,每个区用独立的保护,这样就减少了访问 buffer pool 时需要上锁的粒度,以提高性能。 那么我们如何观察它是如何影响性能呢?

实验:

准备一个空数据库

在这里我们将 perfORMance_schema_events_waits_history_long_size 调大,是为了让之后实验数据能采集的更多,在此不多做介绍。使用 sysbench,准备一些数据,

对数据进行预热 60s,可以看到预热期间的性能会不太稳定,预热后会比较稳定,

设置 performance_schema,这次我们将仅开启观察项(生产者)hash_table_locks,并开启 waits 相关收集端(消费者)。(相关介绍参看 实验 03

小贴士 为什么我们知道观察项应该选择 hash_table_locks?在 performance_schema.setup_instruments 表中,列出了所有观察项,但我们很难从中选出我们应观察哪个观察项。这时候,可以将所有观察项都启用,然后设计一些对比实验,比如使用几种不同的 sql,观察这些操作影响了哪些观察项,找到共性或者区。还有一种高效的方式是搜索别人的经验,或者阅读 Mysql 源码。本例中 hash_table_locks 隐藏的比较深,使用了阅读 mysql 源码和对比试验结合的方法。

由于 MySQL 有一些后台进程会使用 buffer pool,比如刷盘线程,会影响我们的观察,所以需要将 MySQL 的后台线程排除在外。

万事就绪,再运行一次 sysbench 压力。运行前记得将已有的观察结果清除:

运行 sysbench 压力,持续60秒,

等待压力结束后,对 performance_schema 中记录的数据进行分析。

确实采集了 100 万条对 hash_table_locks 的观测数据。我们取其操作时长的平均值,90% 分位数,99% 分位数:

整理到如下表格,但我们先忽略其时间单位,放到最后讨论,

我们按照如上方法,分别再测试 innodb_buffer_pool_instances 为 2 和 4 的情况(记得多测几次,取平均值会更为准确,本实验由于偷懒,只测预热后的一次结果)。表格更新为:

可以看到如下结:

  1. 平均值都在 99% 分位数以上,意味着有极大的数据严重影响的平均值(有几次对 buffer pool 锁的获取,等待了非常久)。
  2. 随着 innodb_buffer_pool_instances 增大,这种严重的影响会逐渐减小。
  3. 在实验的场景中,innodb_buffer_pool_instances 的增大,对 90% 和 99% 分位数影响都不大,即不会影响到大部分 SQL 对 buffer pool 锁的获取时间。

重要说明:

  1. 本实验以介绍实验手法为目的,实验的结论不可作为参考。
  2. 如果大家多做几次实验,会发现在同一个配置下,平均值的变化很大,也就是说那几次非常久的等待时间非常不稳定,受到其他因素影响。
  3. 如果更换数据压力或者更换测试环境,会看到不同的现象。

我们再来看看这些时间的单位是什么?

可以看到 wait 一族的观察项,单位是 cycle,那么 cycle 又是多少秒?

可以看到,1 cycle = 1/2387771144 秒。我们重新看一下 innodb_buffer_pool_instances=1 时,获取 buffer pool 锁的平均时间是 6535546 cycle,大约是 2.7 ms。

7 ms,还是比较长的一段时间(我的虚拟机配置比较一般)。

结论:

本次实验介绍了对 innodb_buffer_pool_instances 参数对性能影响的观测手法,大家可以在进行压力测试时,使用此方法观察 innodb_buffer_pool_instances 的取值对性能的影响,从而决定应该取值多少。

参数设置一直是个平衡问题,innodb_buffer_pool_instances 设置太小,锁冲突集中;设置太大,维护成本升高。

再次强调,本次实验仅介绍手法,结果不足取信。不同压力,不同 buffer pool 配置,不同环境会呈现效果,唯有手法是可以传承的。

按照正常实验的规则,95% 分位数以上的极值可看作是实验误差,但对于本次实验中的极大值进行进一步分析后,我们认为可以用于说明实验效果。


关于 MySQL 的技术内容,你们还有什么想知道的吗?赶紧留言告诉小编吧!

您可能感兴趣的文档:

--结束END--

本文标题: 第07问:innodb_buffer_pool_instances 是如何影响性能的?

本文链接: https://lsjlt.com/news/5427.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 第07问:innodb_buffer_pool_instances 是如何影响性能的?
    问题: 我们都知道 innodb_buffer_pool_instances 参数,将 buffer pool 分成几个区,每个区用独立的锁保护,这样就减少了访问 buffer pool 时需要上锁的粒度,以提高性能。 那么我们如何观察它是...
    99+
    2015-12-30
    第07问:innodb_buffer_pool_instances 是如何影响性能的?
  • 数据类型是如何影响go的性能的?
    在Go语言中,数据类型是一个非常重要的概念。它们不仅仅是程序中存储和处理数据的基本单元,还直接影响着程序的性能。本文将介绍数据类型对Go语言性能的影响,并通过演示代码说明其原理。 Go语言的数据类型可以分为基本数据类型和复合数据类型两类。基...
    99+
    2023-06-25
    load shell 数据类型
  • Golang的gc如何影响程序性能
    Golang的gc如何影响程序性能 Golang作为一种现代化的编程语言,具有出色的性能和高效的并发能力,其中的垃圾回收机制(Garbage Collection,GC)是其独特之处之...
    99+
    2024-03-06
    - golang - 性能 - gc 内存占用 垃圾回收器
  • 第13问:pt-table-checksum 到底会不会影响业务性能?
    问题 用 pt-table-checksum 时,会不会影响业务性能? 实验 实验开始前,给大家分享一个小经验:任何性能评估,不要相信别人的评测结果,要在自己的环境上测试,并**(大概)知晓原理**。 我们先建一对主从: 然后用 mys...
    99+
    2019-01-04
    第13问:pt-table-checksum 到底会不会影响业务性能?
  • PHP和Django的响应性能如何影响JavaScript的使用?
    PHP和Django是目前最受欢迎的Web开发框架之一,它们都是用于服务器端编程的语言。而JavaScript则是一种用于客户端编程的语言。在Web开发中,JavaScript经常被用来增强用户体验,如表单验证、动态加载内容等。而响应性能则...
    99+
    2023-10-04
    django 响应 javascript
  • 影响Java EE性能的十大问题分别是什么
    影响Java EE性能的十大问题分别是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。下面将和大家分享一下常见的10个影响Java EE性能问题。1.缺乏正确...
    99+
    2023-06-17
  • Python 并发编程是如何影响你的程序性能的?
    随着计算机硬件的快速发展,同时也带动了软件的发展,现代软件往往需要处理海量的数据和复杂的逻辑,这就要求我们的程序能够充分利用计算机的多核处理能力,以提高程序的执行效率和响应速度。而 Python 作为一门高级编程语言,其并发编程机制也在不...
    99+
    2023-09-26
    并发 spring 自然语言处理
  • Java的反射是怎么影响性能的
    本篇内容介绍了“Java的反射是怎么影响性能的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!反射具体是怎么影响性能的?这引起了我的反思。是啊...
    99+
    2023-06-15
  • Apache日志如何影响PHP缓存的性能?
    在PHP应用程序中使用缓存可以显著提高性能,因为缓存可以避免重复计算和数据库访问等操作。但是,如果你的应用程序在Apache服务器上运行,并且启用了访问日志记录,那么这些日志记录可能会对PHP缓存的性能产生负面影响。 访问日志记录是一个重...
    99+
    2023-07-01
    缓存 日志 apache
  • Golang泛型对函数性能的影响如何?
    泛型对函数性能的影响如下:类型推断可通过消除显式类型转换来提高性能。反射机制会增加运行时开销,可能影响性能。实际性能影响取决于具体情况,需要权衡性能和代码可重用性的好处。 Go 泛型对...
    99+
    2024-04-17
    golang 泛型
  • Python 缓存策略对 Django 性能的影响如何?
    Django 是一个高性能的 Python Web 框架,但是在处理大量数据时,仍然需要优化性能。其中,缓存策略是提高性能的一个重要手段。本文将介绍 Python 缓存策略对 Django 性能的影响,并提供一些示例代码。 一、缓存策略的...
    99+
    2023-10-23
    缓存 django windows
  • C++ 函数异常处理的性能影响如何?
    c++++ 异常处理会带来额外的开销,包括内存分配、函数调用展开和查找匹配的 catch 子句。这些开销可能导致缓存未命中,从而影响性能。要减轻这些影响,建议限制异常使用、使用 noex...
    99+
    2024-04-15
    性能 c++ 异常
  • 内存管理如何影响C++程序的性能?
    在 c++++ 中,内存管理通过堆和栈影响程序性能。在堆上分配内存比栈上慢,应尽可能在栈上分配变量。内存泄漏会降低性能,应使用 raii、智能指针和内存分析工具来管理内存。 内存管理如...
    99+
    2024-05-08
    内存管理 c++程序 c++
  • 算法选择如何影响C++程序的性能?
    算法选择会影响 c++++ 程序的性能。常见算法有排序算法、搜索算法和数据结构。影响因素包括数据规模、分布和操作类型。实战案例显示,针对不同场景,哈希查找、二分搜索和线性搜索的性能表现不...
    99+
    2024-05-09
    性能 算法 c++
  • Django的性能如何影响Go Load的同步效率?
    Django和Go是当今互联网开发中非常常用的两种编程语言。其中,Django是Python语言的一个Web框架,而Go则是由谷歌开发的一门编程语言。这两种语言在很多方面都非常相似,但在性能方面有所不同。在本文中,我们将探讨Django的性...
    99+
    2023-06-14
    load 同步 django
  • 影响http性能的常见因素是什么
    这篇文章主要讲解了“影响http性能的常见因素是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“影响http性能的常见因素是什么”吧! TCP连接建立 ...
    99+
    2024-04-02
  • PHP 函数的安全性如何影响应用程序的性能?
    php 安全函数影响应用程序性能,因为它们增加了开销:输入验证需要 cpu 和内存资源。加密要求大量计算。会话管理需要额外的开销。优化建议包括:仅在必要时使用安全函数。尽量减少字符串和数...
    99+
    2024-04-24
    应用程序性能 php函数安全性 lsp
  • JavaScript 对于 PHP 日志系统的性能影响如何?
    随着 Web 应用程序的发展,日志系统成为了 Web 应用程序开发中的重要组成部分。在 PHP 开发中,我们经常使用各种日志系统来记录应用程序的运行状态,以便于开发人员进行调试和错误分析。而 JavaScript 作为 Web 应用程序中...
    99+
    2023-07-28
    日志 大数据 javascript
  • Linux和Unix如何影响Java应用程序的性能?
    Linux和Unix是目前最受欢迎的操作系统之一,而Java则是一种流行的编程语言。在许多情况下,Java应用程序是在Linux和Unix操作系统上运行的。然而,操作系统的选择可以对Java应用程序的性能产生重大影响。本文将探讨Linux和...
    99+
    2023-11-14
    linux unix laravel
  • Unix 和 Windows 下的实时性能对 ASP 的影响如何?
    Unix 和 Windows 是两种不同的操作系统,它们之间的实时性能差异对于 ASP 的影响是显而易见的。在本文中,我们将探讨 Unix 和 Windows 操作系统下实时性能的差异,并分析这些差异对 ASP 的影响。 Unix 操作系统...
    99+
    2023-07-09
    实时 unix windows
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作