innodb_flush_logs_at_trx_commit源码行为
来源:互联网 发布:淘宝描述不符赔偿 编辑:程序博客网 时间:2024/06/15 18:02
1.innodb_flush_logs_at_trx_commit模式: 该参数定义有三种值:0、1、2;默认为1如果innodb_flush_log_at_trx_commit设置为0,log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行.该模式下,在事务提交的时候,不会主动触发写入磁盘的操作。如果innodb_flush_log_at_trx_commit设置为1,每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去.如果innodb_flush_log_at_trx_commit设置为2,每次事务提交时MySQL都会把log buffer的数据写入log file.但是flush(刷到磁盘)操作并不会同时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作。 定义位于:innobase/srv/srv0srv.c中 UNIV_INTERN ulong srv_flush_log_at_trx_commit = 1;定义位于:/innobase/trx0.trx.cc /**********************************************************************//**If required, flushes the log to disk based on the value ofinnodb_flush_log_at_trx_commit. */staticvoidtrx_flush_log_if_needed_low(/*========================*/ lsn_t lsn) /*!< in: lsn up to which logs are to be flushed. */{ switch (srv_flush_log_at_trx_commit) { case 0: /* Do nothing */ 这里是由master线程的每1秒和每10秒算法进行日志的刷新 break; case 1: /* Write the log and optionally flush it to disk */ log_write_up_to(lsn, LOG_WAIT_ONE_GROUP, srv_unix_file_flush_method != SRV_UNIX_NOSYNC); break; case 2: /* Write the log but do not flush it to disk */ log_write_up_to(lsn, LOG_WAIT_ONE_GROUP, FALSE); break; default: ut_error; }}innodb有2个算法分别为1秒和10秒算法: srv_master_sleep(); //os_thread_sleep(1000000); if (srv_check_activity(old_activity_count)) { old_activity_count = srv_get_activity_count(); srv_master_do_active_tasks(); ->/* Flush logs if needed */ srv_main_thread_op_info = "flushing log"; srv_sync_log_buffer_in_background(); } else { srv_master_do_idle_tasks(); -> /* Flush logs if needed */ srv_sync_log_buffer_in_background(); }当innodb_flush_log_at_trx_commit=0时候,innodb的日志刷新是由master线程中的1秒和10秒算法进行刷新的。
0 0
- innodb_flush_logs_at_trx_commit源码行为
- 行为
- 行为
- 人工客服,二维码折扣,粉丝行为分析等源码分享
- JVM:锁实现(synchronized&JSR166)行为分析和相关源码
- 【仿微盟源码分享】微信支付,人工客服,微信粉丝行为分析
- 构造器内部的多态方法的行为详解(附源码)
- DataRow行为
- 使用行为
- WebService行为
- 思考+行为
- 行为模式
- 盗窃行为??
- 行为模式
- 代码行为
- UNDO 行为
- 磁盘行为
- 隔离行为
- Linux 多线程文件复制
- Linux 多线程的线程栈
- Redis内存分配简单分析
- arsort.php
- android开发中的常见错误
- innodb_flush_logs_at_trx_commit源码行为
- c 实现字符串反转(参考redis源码)
- C实现键值对(Map功能)
- innodb redo buffer的认识
- Android Xutils 框架
- 实现Android通知栏进度条效果
- innodb中master线程的调度的算法改进(mysql 5.6.26)
- C 双向链表的实现
- 无法定位程序输入点__gxx_personality_v0的一个解决方法