线程相关内存参数sort_buffer/join_buffer等的内存分配时机
今天一个朋友问我sort_buffer/join_buffer/binlog_cache_size/read_rnd_buff_size 等线程相关参数是什么时候分配内存的。我就特意做了gdb调试,得出结论这些参数都是在需要的时候才分配的,并不是建立线程就分配了,这里只是简单的给出我的结论并且给出栈帧以备后面学习和调试。水平有限有误请共同讨论。触发...
Mysql 5.7中数据量更改统计数据收集的逻辑
今天一个朋友在问Mysql什么时候收集统计数据,我就简单的找了一下源代码,现总结如下。如有错误请指出,因为我只是简单做了一下调试。Mysql统计数据分为持久化和非持久化前者是innodb表后者是memory表。他们受到参数innodb_stats_persistent的控制,默认为ON。关于这里还参考官方文档:二、持久化...
ORACLE服务器异常断电,控制文件故障的处理步骤
这里只是简单的记录操作步骤,以做备忘。本步骤由同事邹启健(问心)完成一、版本SQL> select * from v$version;BANNER--------------------------------------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.1 .0 - ProductionPL/SQL Release 11....
我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。
我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。这里也会同步更新
Mysql 5.7 Gtid内部学习(十) 实际案例(二)
简书地址:http://www.jianshu.com/p/052a03b68fabLast_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'The slave is connecting using CHANGE MASTER TO MASTER_AUTO_POSITION = 1, but the master has purged binary logs containing GTIDs that the slave requires.' 三、故...
Mysql 5.7 Gtid内部学习(九) 实际案例(一)
简书地址:http://www.jianshu.com/p/2c25842d58d3binlog_gtid_simple_recovery=false。5.7.6以上版本。Gtid 关闭或者Gtid中途开启有大量的未开启Gtid的binlog。版本:MySQL版本 5.7.19。故障为:大概每半小时发生一次故障,整个Mysql压力巨大,很多简单的操作都相应缓慢。使用ioto...
Mysql 5.7 Gtid内部学习(八) Gtid带来的运维改变
简书地址:http://www.jianshu.com/p/caae9a019dbd如何跳过一个事物mysqldump导出行为的改变5.7中搭建基于Gtid的主从5.7中Gtid的主从的切换5.7中在线改变Gtid模式和传统基于位置的主从不同,如果从库报错我们需要获得从库执行的最后一个事物,方法有如下:然后构建一个空事...
Mysql 5.7 Gtid内部学习(七) 总结binlog_gtid_simple_recovery参数带来的影响
simplified_binlog_gtid_recovery=flasebinlog_gtid_simple_recovery=true一、Gtid关闭simple_recovery=flase重启Mysql需要扫描全部的binlog来获得正确的Gtid集合purge binlog或者超过参数expire_logs_days参数设置不触发全binlog扫描,由上层函数控制。因为不支持在线...
Mysql 5.7 Gtid内部学习(六) Mysql启动初始化Gtid模块
binlog文件mysql.gtid_executed表主库开启Gtid开启binlog。从库开启Gtid开启binlog不开启log_slave_updates参数。一、初始化Gtid 模块全局变量内存空间 if (init_server_components()) unireg_abort(MYSQLD_ABORT_EXIT); gtid_server_init()函数片段如下:二、初始化获得本...
Mysql 5.7 Gtid内部学习(五) mysql.gtid_executed表及其他变量更改时机
简书地址:http://www.jianshu.com/p/905d7e89a305mysql.gtid_executed表:Gtid持久化的介质,Mysql启动阶段会读取这个表来获取gtid_executed变量的值。gtid_executed变量(show global variables):Mysql数据库已经执行了哪些Gtid事物,处于内存中。show slave status中的Executed_Gtid_Set也取自这里。...
Mysql 5.7 Gtid内部学习(四) mysql.gtid_executed表Previous gtid Event的改变
一、Gtid event31704d8a-da74-11e7-b6bf-52540a7d243:100009 >Gtid Event:Pos:234(0Xea) N_pos:299(0X12b) Time:1513135186 Event_size:65(bytes) Gtid:31704d8a-da74-11e7-b6bf-52540a7d243:100009 last_committed=0 sequence_number=1-->Query Event:Pos:299(0X12b) N_Pos:371(0X173) Time:1513135186 Event_size...
Mysql 5.7 Gtid内部学习(三) Gtid和Last_commt/sequnce_number的生成时机
这里首先使用源码的解释给出三种类型:其中AUTOMATIC_GROUP通常用于主库开启Gtid的情况,GTID_GROUP通常用于备库和使用了GTID_NEXT的情况下。 /** Specifies that the GTID has not been generated yet; it will be generated on commit. It will depend on the GTID_MODE: if GTID_MODE<=OFF_PER...
Mysql 5.7 Gtid内部学习(二) Gtid相关内部数据结构
1、 Gtid基本格式单个Gtid:e859a28b-b66d-11e7-8371-000c291f347d:1-5 前一部分是server_uuid,后面一部分是执行事物的唯一标志集合,在内部使用Gtid_set中某个Sidno对应的Interval节点表示,后面会描述。2、server_uuid的生成既然说到了server_uuid这里就开始讨论server_uuid...
Mysql 5.7 Gtid内部学习(一) 导读
Mysql 5.7 Gtid内部学习(一) 导读 简书地址:http://www.jianshu.com/p/87f66cdeb49c本系列文章使用源码版本为percona 5.7.14,也比较过5.7.17,5.6.25的源码版本。占时没有能力比较全部的Mysql源码版本,有误导还请见谅。Gtid的全称为global transaction identifier,他在整个复制生态中完全唯一的,下面我...
设计模式:观察者模式(observer)
Mysql Innodb中的Linux native异步I/O(一) 内存结构的初始化
一、前言二、几个基本概念mysql> show variables like '%io_threads%';+-------------------------+-------+| Variable_name | Value |+-------------------------+-------+| innodb_read_io_threads | 2 || innodb_write_io_threads | 2 |+-------------------------+-------+ mysql> s...
Linux libaio 异步I/O
io_context_t:它是一个成为上下文的结构,在内部它包含一个完成队列,在线程之间是可以共享的。iocb:单次读写操作需求,下面是主要的一些定义data:是一个用户定义传入数据aio_lio_opcode:是一个标示可以取aio_fileds:是iocb读取或者写入的文件描述符fdu.c.buf:是一个读取或者写入的内存数据指针u...
Mysql:从一个USE DB堵塞故障展开的探讨
今天一个朋友遇到数据库遇到一个严重的故障,故障环境如下:表现如下:情急之下他杀掉了一大堆线程后发现还是不能恢复,最后杀掉了一个没有及时提交的事物才恢复正常。也仅仅留下了如下图的一个截图:1.png还是回到上图,我们可以归纳一下语句类型如下:三、信息分析关于sending data这个...
MYSQL 5.7中临时文件的使用
使用临时文件一、使用tmpdir1、执行计划file sort 文件名字MY开头lsof|grep delete如:/tmp/MYdRH1GW (deleted)2、大事物binary log缓存 文件名字ML开头lsof|grep delete如:/tmp/MLq9INFu (deleted)3、压缩的tempory table CREATE TEMPORARY TABLE tmp_table1(id int) ROW_FORMAT=COMPRESSE...
Innodb:RR隔离级别下insert...select 对select表加锁模型和死锁案列
最近有网友遇到了在RR隔离级别下insert A select B where B.COL=** 由于select表也就是B表引发的死锁的问题。分析死锁日志后,笔者进行模拟重现了这位网友遇到了2种场景并且在本文中进行详细的描述。本文使用版本percona 5.7.14修改版,能够打印出事务所有的行锁信息结构链(不包含隐含锁)本文中的测试是在RR...