首页 > 数据库 >Mysql 5.7.35-:使用HugePage:配置关键点、配置过程

Mysql 5.7.35-:使用HugePage:配置关键点、配置过程

时间:2023-09-21 15:58:32浏览次数:39  
标签:5.7 buffer 35 instance innodb 内存 Mysql 128M pool

在Linux中,让应用程序——尤其是mysqld这类的数据库应用——使用HugePage,最大的好处在于:

1:内存不会被回收,不会被交换到swap分区

2:因为是HugePage,大页,2M起步,如此,就能大大减轻相应应用程序所分配内存的linux内核管理负担!

 

#---------------------------------------------------------------------------

让Mysqld使用HugePage的关键点:

1:修改linux的内核参数:/etc/sysctl.cfg

  /proc/sys/vm/hugetlb_shm_group  :配置允许使用HugePage的linux用户组id

  /proc/sys/vm/nr_hugepages  :配置Huage的内存页数量(就是分配多少内存)  

  /proc/sys/kernel/shmmax :配置可以【单个】共享内存段的最大大小,单位字节

  /proc/sys/kernel/shmall:配置可以使用的共享内存的常规页面(4k)的页面【总数】(就是【总计】可以分配多少常规内存用于创建1个或n个共享段内存) 

  个人理解:一个共享内存段的最大大小是由shmmax决定;而这个linux内核可以创建多个共享内存段,这多个共享内存段的总计大小是有限制的,即由shmall决定

 

2:修改运行mysql的用户——通常就是mysql:mysql——的资源限制:/etc/security/limits.conf

  上面“1”中是内核空间的事情; 而用户空间的事情则是基于用户或用户组进行单独的控制。

  

  # based user
  mysql hard memlock unlimited
  mysql sort memlock unlimited

  # based group
  @mysql hard memlock unlimited
  @mysql sort memlock unlimited

 

3:修改mysqld的系统变量,可通过修改 : /etc/my.cnf

  innodb_numa_interleave = 1 : 建议没事就开了它吧,相信我!

  large_pages = 1

  特别注意的事情:因为mysql的整体“innodb_buffer_pool_size”=“innodb_buffer_pool_instances”*128M,所以,mysqld在启动时

会自动均匀的向128M对齐。所以,你配置的“innodb_buffer_pool_size”最终值会是:

  《个人理解1》

  ceil(ceil(innodb_buffer_pool_size /innodb_buffer_pool_instances)/128M)  * innodb_buffer_pool_instances * 128M

  意思是:buffer pool 先根据 instance数 计算每个instance大概分配多少内存;随后根据每个instance的内存根据128M粒度向上计算最终每个instance要分配的(颗粒数);最后按颗粒数分配内存。所以最终结果就是:最大的内存分配差异会是“innodb_buffer_pool_instances * 128M - 1”。

  

  《个人理解2》

  除了最后一个instance外,其他instance的实际内存大小为:

  ( ceil(innodb_buffer_pool_size /128M)*128M    {取模} innodb_buffer_pool_instances ) * 128M

  而,最后一个instance的实际内存大小为:

  ( ceil(innodb_buffer_pool_size /128M)*128M    {取余} innodb_buffer_pool_instances ) * 128M

 

  意思是:buffer pool 先根据 128M 的粒度 计算总体的内存颗粒数,不足128M的向上取整;随后根据instance数为除了最后一个以外的instance分配{取模}数量的内存颗粒;最后的instance则分配{取余}的内存颗粒。所以,最终结果就是:最终的内存差异会是“128M-1”。

  

 

标签:5.7,buffer,35,instance,innodb,内存,Mysql,128M,pool
From: https://www.cnblogs.com/jinzhenshui/p/17720117.html

相关文章

  • mysql3-4
    表定义表:是数据库最基本的组成单元,数据库是用来存储数据的,数据库中有很多表,每一个表都是一个独立的单元,表也是一个结构化的文件,由行和列组成,行称为数据或记录,列称为字段,字段又包括:字段名称、字段类型、长度、约束。 创建表语法格式:createtable表名称(字段名类型(长度)约......
  • MySQL中row_number()的实现,查询记录排序行数
    MySQL中row_number()的实现,查询记录排序行数时间  2019-12-06标签 mysql row number 实现 查询 记录 排序 行数 栏目 MySQL 繁體版原文   https://my.oschina.net/u/3087202/blog/1842169  在MySQL8.0之前是有没row_number()这个窗口函数的,若是想实......
  • MySQL高级13-MySQL管理工具
    一、系统数据库MySQL数据库安装完成后,自带了四个数据库:mysql数据库:存储MySQL服务器正常运行所需要的各种信息如时区、主从、用户、权限等infomation_schema:提供了访问数据库元数据的各种表和视图,包含数据库、表、字段类型及访问权限等performance_schema:为MySQL服务器运......
  • 查看mysql资源占用高的线程及其详细信息
    结合操作系统线程查看mysql中的sql资源 消耗 ( 5.7 才可以,5.7时   performance_schema.threads表 才加入的  thread_os_id 系统线程字段 1--1、top-H查看具体线程的CPU消耗2[root@hostmysql80mysql]#top-H345--2、iotop-umysql查看具体......
  • MySQL压缩包安装问题记录Can't connect to MySQL server on localhost (10061)解决方
    本文章向大家介绍MySQL问题记录--Can'tconnecttoMySQLserveronlocalhost(10061)解决方法,主要包括MySQL问题记录--Can'tconnecttoMySQLserveronlocalhost(10061)解决方法使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下......
  • mysql 时间函数
    MySQL日期跟时间函数(一)作者:Mr.ZhangMySQL日期跟时间的样式在MySQL中有很多有用处的日期跟时间函数。我们常常看到许多应用于日期的计算是在代码方面上进行的,但是其实他们完全可以使用MySQL中自带的函数来实现。在我们实际的查看MySQL的时间跟日期函数之前,先让我们看看MySQL的......
  • 【mysql】基础
    基本命令#ROOT用户进入数据库mysql-uroot-p#使用用户登录数据库mysql-u用户名-p#重启mysqlsudoservicemysqlrestart#创建数据库createdatabase数据库名字charactersetutf8mb4collateutf8mb4_unicode_ci;#进入数据库usemysql_name;#查看所......
  • mysql 日期和时间函数
    type值含义期望的expr格式SECOND秒SECONDSMINUTE分钟MINUTESHOUR时间HOURSDAY天DAYSMONTH月MONTHSYEAR年YEARSMINUTE_SECOND分钟和秒"MINUTES:SECONDS"HOUR_MINUTE小时和分钟"HOURS:MINUTES"DAY_HOUR天和小时"DAYSHOURS"YEAR_MON......
  • mysql 其他函数
    ......
  • iTOP-RK3588开发板更新RKNN模型
    RKNN是RockchipNPU平台(也就是开发板)使用的模型类型,是以.rknn结尾的模型文件。RKNNSDK提供的demo程序中默认自带了RKNN模型,在RKNNSDK的examples/rknn_yolov5_demo/model/RK3588/目录下,如下图所示:如使用自己的模型需要转换成rknn模型,转换方法可以参考......