`
maishj
  • 浏览: 85808 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

mysql master_thread

    博客分类:
 
阅读更多

mysql master thread 工作内容

伪代码:

void master_thread(){
	    goto loop;
		
		loop://主循环begin
		for(int i=0;i<10;i++){
			thread_sleep(1);  //休眠1秒
			do log_buffer flush to disk;  //将日志缓冲刷新到磁盘文件
			if (last_one_second_io < 5%*innodb_io_capacity)//如果前一秒的io操作次数小于(5%的磁盘io吞吐量参数innodb_io_capacity),合并(5%的磁盘io吞吐量参数)个插入缓冲inser_buffer
				do merge 5%*innodb_io_capacity insert_buffer; 
			if (buf_get_modified_ratio_pct > innodb_max_dirty_pages_pct)//如果当前缓冲区的脏页比例超过配置文件innodb_max_dirty_pages_pct参数值,将innodb_io_capacity个脏页刷新到磁盘文件
				do buffer_pool (100%*innodb_io_capacity) dirty_page flush to disk;
			else  enable adaptive flush
				do buffer pool flush desired amount dirty page //???
			if (no user activity)
				goto background loop;
		}
		if (last_ten_second_io < innodb_io_capacity) //前10秒的io操作次数小于innodb_io_capacity(就是前面for循环)
			do buffer_pool 100%*innodb_io_capacity dirty_page flush to disk; //将innodb_io_capacity个脏页刷新到磁盘文件
		do merge at most 5%*innodb_io_capacity insert_buffer; //合并最多5%*innodb_io_capacity个插入缓冲inser_buffer
		do log_buffer flush to disk; //将日志缓冲刷新到磁盘文件
		do full purge; //删除无用undo页
		if (buf_get_modified_ratio_pct > 70%) //如果当前缓冲内存的脏页比例超过70%
			do buffer_pool 100%*innodb_io_capacity dirty_page flush to disk; //将innodb_io_capacity个脏页刷新到磁盘文件  
		else 
			do buffer_pool 10%*innodb_io_capacity dirty_page flush to disk; //将10%*innodb_io_capacity个脏页刷新到磁盘文件  
		do fuzzy checkpoint;
		goto loop; //主循环end
		 
		background loop: //后台循环begin
		do full purge; //删除无用undo页
		do merge 100%*innodb_io_capacity insert_buffer;  //合并innodb_io_capacity个插入缓冲inser_buffer
		if (not idle) //如果不是空置的,跳回主循环
			goto loop;
		else 
			goto flush loop;//后台循环end 跳到刷新循环
		
		flush loop://刷新循环begin
		do buffer_pool 100%*innodb_io_capacity dirty_page flush to disk; //将innodb_io_capacity个脏页刷新到磁盘文件 
		if (buf_get_modified_ratio_pct > innodb_max_dirty_pages_pct) {
			goto flush loop;//跳到刷新循环
		}
		goto suspend loop; //刷新循环end 跳到暂停循环 

		suspend loop://暂停循环begin
		suspend_thread();//开启挂起线程
		waiting event; //等待事件触发
		goto loop;//暂停循环end 跳到主循环
    }    

 

分享到:
评论

相关推荐

    MySQL-Master_Slave_repl.txt

    Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs This error generally occur when we clone the master to slaver. Delete auto.cnf of mysql, and then ...

    mysql_best_configuration-master--姜承尧配置5.6-5.7

    2. **thread_cache_size**:线程缓存允许MySQL快速为新连接创建服务线程,减少每次新建线程的开销。根据并发连接数量进行调整,避免过多或过少的线程浪费资源。 3. **max_connections**:设定服务器允许的最大并发...

    guancg-j13_corejava_teacher-master_java_

    项目可能使用Thread、Runnable、ExecutorService等工具来处理并发问题,确保系统能高效处理大量用户请求。 4. **IO流**:对于读写文件、网络通信等操作,Java的IO流API不可或缺。在电商系统中,可能涉及到日志记录...

    school-master_java_

    6. **多线程**:如果项目包含并行处理,如异步加载数据或并发操作,那么理解Java的线程和同步机制(如Thread、Runnable、synchronized关键字)就很重要。 7. **设计模式**:为了保持代码的可维护性和扩展性,开发者...

    mysql 5.6 半同步复制步骤

    mysql&gt; install plugin rpl_semi_sync_master soname 'semisync_master.so'; mysql&gt; show plugins; # 查看是否加载成功 mysql&gt; SET GLOBAL rpl_semi_sync_master_enabled=1; # 开启半同步复制,默认是关闭的 ``` ...

    MySQL 5.7多源复制搭建.docx

    - 启动:`START SLAVE IO_THREAD | SQL_THREAD FOR CHANNEL 'master-65303306';` - 停止:`STOP SLAVE IO_THREAD | SQL_THREAD FOR CHANNEL 'master-65303306';` - **监控复制状态**: - 使用`SHOW SLAVE STATUS...

    MySQL_57_Replication_Enhancements

    在一个典型的MySQL复制设置中,主要包括以下三个角色:插入客户端(Insert Client),发送线程(Sender thread),接收线程(Receiver thread)以及应用线程(Applier Thread)。在复制过程中,主服务器(Master)上...

    centos源码安装mysql5.6.15或者5.7版本+mysql主从复制+mysql常用命令

    ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-assembler --with-charset=utf8 --with-collation=utf8_general_ci --with-secure-auth --with-zlib-...

    MySQL 两种恢复数据的方法

    一 前言 前一段时间接二连三的出现开发人员在测试环境和生产误操作导致数据库误删除/更新,对DBA而言,回滚数据着实是一件头疼的事情,凡涉及到恢复线上...START SLAVE [SQL_THREAD] UNTIL MASTER_LOG_FILE = ‘log_n

    win2003下MySQL数据同步

    mysql&gt; change master to master_host='192.168.36.150', master_user='slave', master_password='123456', master_log_file='mysql-bin.000004', master_log_pos=595; mysql&gt; start slave; ``` - **服务器B上:...

    MySQL多线程复制遇到Error_code: 1872的解决方案

    在MTS环境下,MySQL使用`slave_worker_info`表来跟踪每个工作线程的进度,即使在系统崩溃后,也能通过比较`Exec_Master_Log_Pos`和`slave_worker_info`表中的`Master_log_pos`来决定哪些事务需要重新执行。...

    mysql数据库故障排除方案.pdf

    * 查看锁死锁:使用 `mysql&gt; select r.trx_id waiting_trx_id,r.trx_mysql_thread_id waiting_thread,b.trx_query waiting_query,b.trx_id blocking_trx_id,b.trx_mysql_thread_id blocking_thread,b.trx_query ...

    Linux_系统运维之MySQL_DBA.pdf

    [root@MySQL-Master mysql-5.1.45]# ./configure --prefix=/usr/local/mysql \ --localstatedir=/data/mysql --enable-assembler \ --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static \ --...

    MySQL主备同步配置手册

    shell&gt; mysql -e "stop slave sql_thread;" ``` - 使用mysqldump命令导出数据库: ``` shell&gt; mysqldump --all-databases &gt; fulldb.dump ``` - 导出数据库后,重启复制进程以继续同步: ``` shell&gt; ...

    Mysql主从配置详解

    ./configure --prefix=/usr/local/mysql --localstatedir=/opt/data --with-extra-charsets=utf8,gb2312,gbk --with-pthread --enable-thread-safe-client # 编译 make # 安装 make install ``` ##### 2. 初始化...

    MySQLMonitor:MySQL实时监控工具(代码审计黑盒白盒审计辅助工具)

    MySQLMonitor是404团队中的一环,如果对MySQLMonitor有任何疑问又或是想要找小伙伴交流,可以参考星链计划的加群方式。 MySQL监视器 MySQL实时监控工具(黑盒测试辅助工具) 更新: 2020-10-18:使用Java重构,...

    mysql 半同步复制模式

    MySQL的半同步复制模式(Semi-Synchronous Replication)是一种增强型的复制策略,旨在解决传统异步复制中数据丢失的问题。在半同步复制中,主库确保至少有一个从库接收到并写入了事务日志(二进制日志,binlog)后...

    Mysql+drbd+heartbeat+amoeba集群配置详解

    ./configure --prefix=/usr/local/mysql --localstatedir=/opt/data --with-extra-charsets=utf8,gb2312,gbk --with-pthread --enable-thread-safe-client ``` - 编译安装: ``` make && make install ``` - ...

Global site tag (gtag.js) - Google Analytics