随便记录点 5.7.22代码

MySQL工具主要分为 交互式和非交互式

交互式

就是我们平时用的交互式命令方式

非交互式(batch mode)

主要用于解析binlog和批量导入sql,每次都会读取1行数据到buffer

如果是binlog,那么每次大约读取的原始数据为76字节,及mysqlbinlog解析出来的一行

AAAAAAAAAP4AAAAAAAAAAP4AAAAAAAAAAP4AAAAAAAAAAP4AAAAAAAAAAP4AAAAAAAAAAP4AAAAA

AAAAAP4AAAAAAAAAAP4KAAAAAAAAAP4UAAAAAAAAAP4eAAAAAAAAAP4oAAAAAAAAAP4yAAAAAAAA

AP48AAAAAAAAAP5GAAAAAAAAAP5QAAAAAAAAAP5aAAAAAAAAAP4KAAAAAAAAAP4AAAAAAAAAAP4A

AAAAAAAAAP4AAAAAAAAAAP4AAAAAAAAAAP4AAAAAAAAAAP4AAAAAAAAAAP4AAAAAAAAAAP4AAAAA

AAAAAP4AAAAAAAAAAP4AAAAAAAAAAP4KAAAAAAAAAP4UAAAAAAAAAP4eAAAAAAAAAP4oAAAAAAAA

AP4yAAAAAAAAAP48AAAAAAAAAP5GAAAAAAAAAP5QAAAAAAAAAP5aAAAAAAAAAP4KAAAAAAAAAP4A

类似这里就有6行。如果是大事务,每次解析76字节,add_line 函数。然后等待大事务所有行解析完成后进行com_do函数进行执行命令。

如果是sql语句,那么就是一条sql执行一次没有什么问题。

最近遇到mysqlbinlog|mysql大事务特别慢的情况,因此提交了如下问题BUGS#101900,8.0.13修复了,5.7不知道:

Hi:

we use mysqlbinlog|mysql to parse binlog and recover binlog,when have large trasaction,mysql client tool

is very slow at add_line function.

20M trasaction event mysql add line use 1 hour!! cpu is 100% use in sy% and pstack mysql client stack like:

__memmove_sse3

my_realloc

String::mem_realloc

add_line

read_and_execute

main

when batch mode,mysql every time add 76 bytes event line to buffer,buffer init 520 bytes,when 20M event load in

buffer then call com_do funcation to execute command。

Breakpoint 9, add_line (buffer=..., line=0xa603e0 "/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;", line_length=45, in_string=0x7fffffffe287 "", ml_comment=0x7fffffffe286, truncated=false)

at /opt/percona-server-locks-detail-5.7.22/client/mysql.cc:2533

2533 bool need_space= 0;

(gdb) p buffer.m_length

$20 = 0

(gdb) p buffer.m_alloced_length

$21 = 520

when buffer is smaller, every time allocate 4K mem:

if (buffer.length() + length >= buffer.alloced_length())

buffer.mem_realloc(buffer.length()+length+IO_SIZE);

this step rise frequently mem allocate.and cpu sy% is very high!!

when mysql use batch mode can we use large init buffer or give our a parameter to control this.

when i search bug i find Bug #85155 is like this,is this fix at mysql 8.0.13,what 5.7 version fix this?

thanks!!

我进行了一下修改,如下:

mysql.cc main函数下

MAX_BATCH_BUFFER_SIZE 已经定义好为1G

glob_buffer.mem_realloc(MAX_BATCH_BUFFER_SIZE);

[root@mgr3 client]# /opt/my_mysql/bin/mysqlbinlog /opt/bin/log_bin.000002 |/opt/my_mysql/bin/mysql

速度极快了

[root@mgr3 client]# /opt/my_mysql/bin/mysqlbinlog /opt/bin/log_bin.000002 |/opt/my_mysql/bin/mysqlbak

CPU 99%

位于192.168.1.63 上的/opt/my_mysql/bin/mysqlbak目录下,如果再次遇到这种问题,可以使用修改过的进行执行。

mysql客户端重庆_MySQL:MySQL工具以及5.7mysqlbinlog|mysql速度极慢问题相关推荐

  1. mysql客户端查询_MySQL数据库之利用mysql客户端查询UCSC数据库

    本文主要向大家介绍了MySQL数据库之利用mysql客户端查询UCSC数据库 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. UCSC Genome Browser是由Unive ...

  2. mysql客户端指令_mysql command line client(mysql命令行客户端)

    mysql command line client(mysql命令行客户端) (2010-03-24 09:18:38) 标签: 文化 分类: 数据库 1.输入密码:****** 2.ues mysq ...

  3. mysql 客户端乱码_Mysql客户端中文乱码问题解决

    用Mysql客户端查询发现乱码: mysql> select *from user;+----+------------+----------+------------+-----------+ ...

  4. mysql 流复制_MySQL系列详解六:MySQL主从复制/半同步演示-技术流ken

    前言 随着技术的发展,在实际的生产环境中,由单台MySQL数据库服务器不能满足实际的需求.此时数据库集群就很好的解决了这个问题了.采用MySQL分布式集群,能够搭建一个高并发.负载均衡的集群服务器.在 ...

  5. mysql ibdata1 损坏_mysql innodb文件ibdata1损坏导致mysql无法启动

    问题描述 1 mysql数据库5.6无法正常启动 2 直接复制替换innodb的frm和idb文件来新增数据表导致的问题 3 innodb文件ibdata1,ib_logfile0,ib_logfil ...

  6. sae mysql 同步本地_MYSQL入门之三_将本地MySQL数据导入SAE数据库_MySQL

    bitsCN.com MYSQL入门之三_将本地MySQL数据导入SAE数据库 1. MySQL字符集 MySQL的默认字符集是latin1,将本地MySQL库导出成sql,再导入到SAE的MySQL ...

  7. mysql字段替换_mysql 替换字段部分内容及mysql 替换函数replace()

    [mysql]replace的用法(替换某字段部分内容) [mysql]replace的用法 1.replace into replace into table (id,name) values('1 ...

  8. navicat mysql本地连接_MySQL | 使用 Navicat 新建本地连接 mysql 出现的问题

    问题一: Navicat 新建连接报错:2003-can't connect to MySQL server on 'localhost'(10061) 解决方法: 1.首先查看数据库是否启动 打开 ...

  9. sql与mysql的区别_MySQL和SQL是什么?MySQL和SQL之间的区别有哪些

    MySQL和SQL之间的区别有哪些?很多PHP的初学者,对MySQL,MyAdmin和SQL有什么区别并不是很清楚?下面php中文网就带领大家来学习一下MySQL和SQL之间的区别.[推荐阅读:MyS ...

最新文章

  1. mysql reverse 索引_降序索引和减轻索引扫描
  2. Linux page allocation failure 的问题处理 - zone_reclaim_mode
  3. “实模式--保护模式--实模式”转换过程
  4. Vue.use()是什么?
  5. js正则表达exec和match的区别(转)
  6. 服务器USB启动故障一例
  7. Python学习笔记-猜数字游戏(学习语法)
  8. mongodb ensureIndex parameter
  9. Flink之Redis的安装及RedisSink的用法
  10. shedlock源码解析
  11. obs源码分析【二】:录制功能剖析
  12. 微信红包软件可测试,微信抢红包神器测试g2020
  13. 请完成设计配置计算机,平面设计师的电脑配置有什么要求?
  14. Leetcode 684. 冗余连接(dsu,氵)
  15. 两步解决WIN7 下IE经常未响应的假死现象
  16. linux head
  17. Java一般要学多久?
  18. 01背包问题——大背包:
  19. CSS3画三角形、菱形、平行四边形
  20. idea高版本设置注入飘红(红色波浪线)

热门文章

  1. [jQuery] Cannot read property ‘msie’ of undefined错误的解决方法
  2. android发布新版忘记keystore(jks)密码终极解决方案
  3. java学习之自定义异常
  4. 什么是复制和交换习语?
  5. 老电脑应该怎么重装系统比较好
  6. ros中web端通过 按钮加载本地静态 pgm 地图显示在canvas画布中
  7. python pip升级报错
  8. 不做etl sql 怎么直接取_我们可以不再使用ETL了吗?
  9. obs多推流地址_什么都比不上动手能力,OBS 推流实践小记
  10. JQ实现全选、全不选、反选、偶数选中、奇数选中