mysql的检查点_转载一篇关于mysql检查点的文章
数据库运行一段时间后,经常导致服务器大量的swap,我怀疑是innodb中的脏数据太多了,因为没有free
space了,mysql通知OS,把一些脏页交换出去,以上只是猜测。有一个现象是每次关数据库时都要关很久,并且在关数据库时,发现有大量的swap
in。如果是数据库进程异常关闭,打开数据库又会花很长的时间来作恢复。我想提高一下mysql检查点发生的频率。看了Adaptive
checkpointing,发现mysql检查点事件受两个因素的制约:一个是amount,另外一个是age.amount主要由
innodb_max_dirty_pages_pct参数控制;至于age,主要是由日志文件大小有关。因为修改日志文件大小,要重启数据库,所以没有
做这个尝试;于是尝试修改innodb_max_dirty_pages_pct参数。
查看当前innodb_max_dirty_pages_pct参数的值:
mysql> show variables like
'%pct%';
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| innodb_max_dirty_pages_pct | 90 |
+----------------------------+-------+
1 row in set (0.00 sec)
查看当前的检查点位置(对于如何获取此信息,花了比较多的时间,才找到此方法)
show innodb status\G;
LOG
---
Log sequence number 16 881655880
Log flushed up to 16
881649862
Last checkpoint at 16 546135914
我们可以看到检查点与log sequence number,Log flushed up to都有相当大的差距。
----------------------
BUFFER POOL AND MEMORY
----------------------
Total memory allocated 19338953832; in additional pool allocated
13600768
Buffer pool size 1048576
Free buffers 17666
Database pages 1009478
Modified db pages 204553
修改的页占到整个数据库buffer
pool页将近20%,大小为204553*16k/1024=3.196G,有这么多的脏数据没有写到数据文件。如果此时关闭数据库,必然要花很长的时
间。如果数据库服务器因为掉电或者mysqld进程异常中断,那么打开,恢复的时间也会很长。
在咨询mysql界的朋友后,大家对innodb_max_dirty_pages_pct基本上也是采用默认值,不过,觉得这个方向是对的,就开
始一步步调此参数。因为脏页占整个pool的20%,所以直接将此参数从90调到20.反复执行命令show innodb
status\G;发现检查点仍然增长缓慢。过了一会儿,发现系统并无任何异常之处,继续调低此参数到15,此时间发现脏页Modified
db pages减少下来,检查点增长稍微快一点。最终综合考虑缓存大小,把此参数设为5.
mysql> set global
innodb_max_dirty_pages_pct=5;
Query OK, 0 rows affected (0.00 sec)
---
LOG
---
Log sequence number 16 1160564756
Log flushed up to 16
1160560077
Last checkpoint at 16
1037968260 --检查点追上来了
----------------------
BUFFER POOL AND MEMORY
----------------------
Total memory allocated 19338952464; in additional pool allocated
15022080
Buffer pool size 1048576
Free buffers 5291
Database pages 1021765
Modified db pages 61626 --这个值从204553快速下降
情况如自己预计的那样,脏页迅速减少,检查点追上来了。使用mysql的朋友,对于mysql服务器的交换,一直都采用直接关闭swap的做法。不
知道使用此方法,即提高检查点发生的频率,减少脏页数量,能否解决我们常见的mysql交换问题呢?让我们试目以待吧。过一段时间,再把结果发上来。
mysql的检查点_转载一篇关于mysql检查点的文章相关推荐
- linux mysql清除缓存_转载-清除Linux中MySQL的使用痕迹~/.mysql_history
背景:我们在管理MySQL server的时候,常常使用mysql命令行工具连接MySQL server进行操作,此时我们可以像shell命令行一样,按向上的方向键, mysql会给出我们最近执行的S ...
- kali mysql停止服务器_第 2 篇 MySQL 安装
上一篇我们了解了什么是 MySQL 数据库.本文介绍如何在 Windows 平台使用 MySQL Installer 工具安装 MySQL 数据库服务器以及各种组件. 下载 MySQL Install ...
- php mysql安装配置_转载:PHP,MySQL的安装与配置
一.安装配置PHP 把php.ini-production另存为php.ini.修改其内容: 1)extension_dir = "D:/php-5.4.45/ext"设置指定的扩 ...
- 易语言执行mysql命令行_易语言教程之MySQL[3]执行SQL语句
连接MySQL服务器后,接着就可以做点实际的操作了,比如读取记录,插入记录,修改记录等.操作MySQL有2种方法,本集讲的是第一种,适合懂MySQL语句的人,方便,学习成本低,效率高.但不懂MySQL ...
- mysql nb3 备份_第四节:MySQL的备份和恢复详解
一. 简介 1. 备份分类 备份类型可以分为物理备份和逻辑备份两种. (1). 物理备份:是指通过拷贝数据库文件的方式完成备份,这种备份方式适用于数据库很大,数据重要且需要快速恢复的数据库. (2). ...
- mysql 添加分区_创建,增加,删除mysql表分区
1.测试添加分区和删除分区 ###添加删除range分区 (1)创建一个分区: CREATE TABLE titles ( emp_no INT NOT NULL, title ...
- 新的mysql如何使用_如何使用新的MySQL更新日志
使用新的MySQL更新日志的方法未必人人都会,下面就教您如何使用新的MySQL更新日志的方法,希望对您能够有所帮助.如果你只使用一 使用新的MySQL更新日志的方法未必人人都会,下面就教您如何使用新的 ...
- 阿里云rds for mysql平台介绍_阿里云RDS for MySQL 快速入门——笔记
1初始化配置 1.1设置白名单 创建RDS实例后,需要设置RDS实例的白名单,以允许外部设备访问该RDS实例.默认的白名单只包含默认IP地址127.0.0.1,表示任何设备均无法访问该RDS实例. 设 ...
- mysql获取时间戳_服了!阿里Mysql三位封神专家总结1200多页性能优化的千金良方...
MYSQL(关系型数据库管理系统) MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应 ...
最新文章
- 武汉网络推广优化中网站关键词如何更合理布局分布?
- rinetd 做端口转发
- 如何把一些不同类型的数据混合存入一片内存中_如何从技术上增强以太坊的隐私性?...
- 华为服务器双系统教程,服务器上安装双系统
- mysql中文注入_SQL注入之Mysql报错注入
- 2021快手服饰行业数据价值报告
- 如何打造高质量的SSP广告引擎(内部干货分享)
- mysql常用系统函数归类
- sonar扫描java、js、jsp技术
- matlab复杂网络仿真,matlab在复杂网络上的应用
- 基于mpvue的toast组件
- 如何将html转换成url,HTML URL
- Node.js学习笔记(五)——WebSocket
- java实时汇率的接口_基于JAVA的汇率换算接口调用代码实例
- c语言文件中获取单词,从文本文件中读取单个单词并翻译 - C
- NRF24L01 无线模块
- 使用java编写中国象棋(内含源代码)
- 小蓝本 第一本《因式分解技巧》 第一章 提公因式 笔记(第一天)
- Java基本控制流程的理解之输出三角形和乘法表
- C#实现土豆优酷等网站视频的缩略图