MySQL 5.5.49 大内存优化配置文件优化详解

MySQL 5.5.49 大内存优化配置文件优化详解

背景

随着数据量的增长,MySQL 数据库所使用的内存也变得越来越多,如果不对MySQL 进行优化,可能会使数据库性能严重下降。本文将介绍如何针对MySQL 5.5.49版进行大内存优化和配置文件优化,以提高MySQL的性能。

大内存优化

MySQL的大内存优化主要包括以下几个方面:

1. 与系统内存的交互

在MySQL的大内存优化中,最重要的应该是与系统内存的交互。因为MySQL需要频繁的申请和释放内存,而这些内存分配操作的效率直接影响了MySQL的性能。在Linux系统下,内存模型涉及到的主要因素是vm.overcommit_ratio。默认情况下,该参数的值是50%(如图1),我们可以通过修改该参数的值来提高MySQL的性能。

# 查看vm.overcommit_ratio
$ cat /proc/sys/vm/overcommit_ratio
50

# 修改vm.overcommit_ratio值为10%
$ echo 10 > /proc/sys/vm/overcommit_ratio

2. 内存分配大小

在MySQL中,内存的分配和释放是通过malloc和free这两个系统函数实现的。由于malloc调用的动态内存分配策略的影响,这可能会导致MySQL的性能下降。我们可以在MySQL中通过调整该参数的值来提高内存分配效率。

# 设置内存分配大小为1 MB
$ set global innodb_buffer_pool_chunk_size = 1073741824;

3. 使用回收内存

MySQL中通过使用回收内存功能来提高内存的使用效率。回收内存是在MySQL在启动时启动的,它通过执行一些检测来发现被误用或者闲置的内存,然后将其回收。这样就可以有始有终地维护MySQL中的内存资源,从而可以提高MySQL的性能。在MySQL列出了以下回收内存相关的变量:

  • innodb_buffer_pool_instances: 设定分配给InnoDB缓冲池的内存块数目。
  • innodb_lru_scan_depth: 设定InnoDB在每次LRU扫描时从LRU链表中删除的页面数。
  • innodb_old_blocks_pct: 设定InnoDB缓冲池的页面是新的或是旧的页面的比率。
  • innodb_old_blocks_time: 设定InnoDB缓冲池中的数据块在成为不活动块之后可以存在多长时间。

例如,如果需要回收InnoDB缓冲池中的内存,我们可以执行以下命令:

SET GLOBAL innodb_buffer_pool_dump_now = 1;
SET GLOBAL innodb_buffer_pool_load_now = 1;

配置文件优化

在MySQL优化中,通过配置文件调整参数也是非常重要的。假设我们拥有一台内存为64GB的服务器,并安装了MySQL 5.5.49版本。则可以通过以下方式编辑/etc/my.cnf文件:

[mysqld]
basedir          = /usr/local/mysql
datadir          = /var/lib/mysql

# 改变缓冲区的大小,它将通过mysql自动调整。
sort_buffer_size = 2M
read_buffer_size = 2M
# 指定打开文件的数量
open_files_limit = 2048
# 下面这个设置只会在linux下生效
thread_cache_size = 4
# 没有索引的表最多占用内存的总量
tmp_table_size     = 32M
max_heap_table_size= 32M
# 配置缓存池大小为512M
innodb_buffer_pool_size = 512M
innodb_log_buffer_size  = 8M
innodb_write_io_threads = 2
innodb_read_io_threads  = 2

总结

本文中我们介绍了MySQL 5.5.49版的大内存优化和配置文件优化,主要包括与系统内存的交互、内存分配大小、使用回收内存以及配置文件优化等方面。通过这些优化手段,可以提高MySQL的性能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL 5.5.49 大内存优化配置文件优化详解 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • MySQL5.7主从复制教程

    ​ 简述:主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库,主数据库一般是准实时的 业务数据库、事务处理库,从库做查询库。 ​ 复制过程简单的说就是 master 将数据库的改变写入二进制日志,slave同步这些二进制日志,并根据这些二进制日志行数据操作 1、什么是主从复制 ​ 主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为…

    MySQL 2023年4月11日
    00
  • MYSQL子查询和嵌套查询优化实例解析

    MYSQL子查询和嵌套查询优化实例解析 什么是子查询和嵌套查询 子查询指的是一个查询语句中包含了另一个查询语句,而被包含的查询语句就称为子查询,主查询则被称为外层查询。子查询可以包含在where子句、select语句中和from子句等位置,用于过滤或计算数据。 嵌套查询则是指子查询与主查询嵌套在一起的查询语句,嵌套查询需要在子查询中使用主查询返回的数据,所以…

    MySQL 2023年5月19日
    00
  • MySQL四种日志binlog/redolog/relaylog/undolog

    优质博文:IT-BLOG-CN 一、binlog binlog记录数据库表结构和表数据变更,比如update/delete/insert/truncate/create,它不会记录select。存储着每条变更的SQL语句和XID事务Id等等。binlog日志文件如下: [root@192.168.10.11]# mysqlbinlog mysql-binlo…

    2023年4月8日
    00
  • mysql数据库的登录脚本

    ########################   ku脚本: 可以使用以下ku脚本,它可以根据提供的参数登录到MySQL数据库: #!/bin/bash # Check for correct number of arguments if [ $# -lt 1 ]; then echo “Usage: $0 <ip> [<port&gt…

    MySQL 2023年4月13日
    00
  • MySQL表设计与优化

    影响MySQL查询性能的因素有很多,我们经常会对查询语句、索引字段做一些优化,而其实在表设计的阶段就可能产生一些问题。对于表设计,可以对表结构进行优化,也可以对表字段进行优化。以下通过一个具体的案例演示一些常用的表设计优化的方法。 一、业务需求 这里,就以学生-教师-课程业务作为示例。数据库需要存放学生、教师、课程相关信息。学生信息包括学号、姓名、性别、专业…

    MySQL 2023年4月17日
    00
  • 清晰讲解SQL语句中的内连接,通用于Mysql和Oracle,全是干货哦

    本文章目的:力求清晰明了讲解SQL语句的内连接的各种应用,没有深奥的理解! 前奏:这篇文章和下篇文章会将内连接和外连接讲解清楚SQL语句的多表查询常用的有以下几种:两表联合查询(1)内连接(2)外连接(分左外连接、右外连接)(3)全外连接(4)自连接三表查询(1)三表查询本片讲解两表联合查询的内连接:第一步:准备表,员工表emp,部门表dept关联关系:员工…

    MySQL 2023年4月13日
    00
  • 详解MySQL的约束

    在 MySQL 中,约束是指对表中数据的一种约束,能够帮助数据库管理员更好地管理数据库,并且能够确保数据库中数据的正确性和有效性。 例如,在数据表中存放年龄的值时,如果存入 200、300 这些无效的值就毫无意义了。因此,使用约束来限定表中的数据范围是很有必要的。 在 MySQL 中,支持以下几种约束: 1. 主键约束(Primary Key Constra…

    MySQL 2023年3月9日
    00
  • demo项目开发(Python+flask+mysql+redis只包含后端接口)

    【demo项目开发需求】 用户信息管理,可以注册、登录、添加用户、删除用户 注册:任何用户可以注册,对用户提交的注册信息进行校验,返回对应的信息,其中:   用户名:必填,唯一   密码:必填,只能6-12位,入库是加盐加密   真实名:必填   性别:非必填,只能0(male)或者1(female)   电话:必填,唯一,满足电话要求,数字,且11位 登录…

    MySQL 2023年4月12日
    00
合作推广
合作推广
分享本页
返回顶部