




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
深入解析Mysql检查点搜狐畅游DBA王洪权mydbalife@gmail.2011-07-06深入解析MySQL检查点共68页,您现在浏览的是第1页!summarryMysqllogfileMysql检查点Mysqldoublewrite深入解析MySQL检查点共68页,您现在浏览的是第2页!基本操作深入解析MySQL检查点共68页,您现在浏览的是第3页!基本操作深入解析MySQL检查点共68页,您现在浏览的是第4页!基本操作深入解析MySQL检查点共68页,您现在浏览的是第5页!基本操作深入解析MySQL检查点共68页,您现在浏览的是第6页!.
为什么要采取异步刷新Why?深入解析MySQL检查点共68页,您现在浏览的是第7页!关于log工作原理.orczhou./index.php/2009/08/innodb-dirtyredo-log-2/深入解析MySQL检查点共68页,您现在浏览的是第8页!Logbuffer设置建议mysqladminvar|greplog_bufferinnodb_log_buffer_size|8388608通常设置范围8~16M通常8M比较合适,除非有很多blob/text字段操作,或大事务操作。深入解析MySQL检查点共68页,您现在浏览的是第9页!innodb_log_file_size关于innodb_log_file_size大小设置如何找到最佳的均衡点呢?.mysqlperformanceblog./2006/07/03/choosing-proper-innodb_log_file_size/
.mysqlperformanceblog./2008/11/21/how-to-calculate-a-good-innodb-log-file-size/深入解析MySQL检查点共68页,您现在浏览的是第10页!innodb_log_file_size设置深入解析MySQL检查点共68页,您现在浏览的是第11页!修改innodb_log_file_size1干净的关闭数据库,删除日志文件,修改f中innodb_log_file_size,重启mysql2干净的关闭数据库,rename日志文件,修改f中innodb_log_file_size,重启mysql深入解析MySQL检查点共68页,您现在浏览的是第12页!Innodb日志机制深入分析深入解析MySQL检查点共68页,您现在浏览的是第13页!管理机制Checkpoint和日志紧密相关,将日志和Checkpoint一起说明,详细的实现机制如下:Innodb日志机制深入分析深入解析MySQL检查点共68页,您现在浏览的是第14页!对应这4个阶段,系统记录了4个日志相关的信息,用于其它各种处理使用:Logsequencenumber(LSN1):当前系统LSN最大值,新的事务日志LSN将在此基础上生成(LSN1+新日志的大小);Logflushedupto(LSN2):当前已经写入日志文件的LSN;Oldestmodifieddatalog(LSN3):当前最旧的脏页数据对应的LSN,写Checkpoint的时候直接将此LSN写入到日志文件;Lastcheckpointat(LSN4):当前已经写入Checkpoint的LSN;
对于系统来说,以上4个LSN是递减的,即:LSN1>=LSN2>=LSN3>=LSN4.Innodb日志机制深入分析深入解析MySQL检查点共68页,您现在浏览的是第15页!Innodb日志机制深入分析Innodb的数据并不是实时写盘的,为了避免宕机时数据丢失,保证数据的ACID属性,Innodb至少要保证数据对应的日志不能丢失。对于不同的情况,Innodb采取不同的对策:宕机导致日志丢失
Innodb有日志刷盘机制,可以通过innodb_flush_log_at_trx_mit参数进行控制;日志覆盖导致日志丢失Innodb日志文件大小是固定的,写入的时候通过取余来计算偏移量,这样存在两个LSN写入到同一位置的可能,后面写的把前面写得就覆盖了,以“写入机制”章节的样例为例,LSN=100000000和LSN=1600000000两个日志的偏移量是相同的了。这种情况下,为了保证数据一致性,必须要求LSN=1000000000对应的脏页数据都已经刷到磁盘中,也就是要求Lastcheckpoint对应的LSN一定要大于1000000000,否则覆盖后日志也没有了,数据也没有刷盘,一旦宕机,数据就丢失了。深入解析MySQL检查点共68页,您现在浏览的是第16页!通常这里的sharp指的是刷新BP中所有的脏页到datafile中。脏页刷新完毕的时候产生一个sharpcheckpoint例如关闭数据库的时候发生sharp检查点大概步骤是1停止所有的更新操作2刷新所有的脏页到磁盘3写入当前的检查点信息到日志文件4把检查点信息写入到每个datafile中。Sharpcheckpoint介绍深入解析MySQL检查点共68页,您现在浏览的是第17页!每1S若bufferpool中的脏页比率超过了srv_max_buf_pool_modified_pct=75,则进行Checkpoint,刷脏页,flushPCT_IO(100)的dirtypages=200若采用adaptiveflushing,则计算flushrate,进行必要的flushflushPCT_IO(100)的dirtypages=200每10S若bufferpool中的脏页比率超过了70%,flushPCT_IO(100)的dirtypagesdirtypages=200若bufferpool中的脏页比率未超过70%,flushPCT_IO(10)的dirtypages=20Checkpoint触发条件深入解析MySQL检查点共68页,您现在浏览的是第18页!和检查点相关的数据结构1.LRulist2.Flushlist深入解析MySQL检查点共68页,您现在浏览的是第19页!深入解析MySQL检查点共68页,您现在浏览的是第20页!Gettotalbufferpoolstatistics.*/buf_get_total_list_len(for(i=0;i<srv_buf_pool_instances;i++){buf_pool_t*buf_pool;buf_pool=buf_pool_from_array(i);*LRU_len+=UT_LIST_GET_LEN(buf_pool->LRU);*free_len+=UT_LIST_GET_LEN(buf_pool->free);*flush_list_len+=UT_LIST_GET_LEN(buf_pool->flush_list);}}innodb_max_dirty_pages_pct在数据库源代码中的体现buf0buf.c深入解析MySQL检查点共68页,您现在浏览的是第21页!反映在数据库上的脏页比率脏页的比率计算深入解析MySQL检查点共68页,您现在浏览的是第22页!相关性能参数在数据库上的反映深入解析MySQL检查点共68页,您现在浏览的是第23页!Checkpoint触发深入解析MySQL检查点共68页,您现在浏览的是第24页!函数流程:buf0buf.cbuf_flush_get_desired_flush_rate1.从buf_pool_t结构中,获得总dirtypage的数量2.计算最近一段时间之内,redo日志产生的平均速度其中,BUF_FLUSH_STAT_N_INTERVAL=20S,20S内的平均redo产生速度/**Numberofintervalsforwhichwekeepthehistoryofthesestats.Eachintervalis1second,definedbytherateatwhichsrv_error_monitor_thread()callsbuf_flush_stat_update().*/#defineBUF_FLUSH_STAT_N_INTERVAL20flush的统计信息,每隔20S会被buf_flush_stat_update函数重置Checkpoint触发检查点深入解析MySQL检查点共68页,您现在浏览的是第25页!检查点更新流程流程一每10秒更新检查点流程二在高IO系统中每1秒更新检查点深入解析MySQL检查点共68页,您现在浏览的是第26页!Innodb日志机制深入分析深入解析MySQL检查点共68页,您现在浏览的是第27页!Innodb日志机制深入分析概念计算含义Ckpasync日志空间大小*31/32强制写Checkpoint,此时事务还可以继续执行,所以为async,对事务的执行速度没有影响(间接影响也不大,因为写Checkpoint的操作比较简单)Ckpsync日志空间大小*64/64强制写Checkpoint,此时事务停止执行,所以为sync,但由于写Checkpoint的操作比较简单,即使阻塞,时间也很短深入解析MySQL检查点共68页,您现在浏览的是第28页!影响检查点整检查点的参数深入解析MySQL检查点共68页,您现在浏览的是第29页!深入解析MySQL检查点共68页,您现在浏览的是第30页!InnodbDoubleWrite内存中存在一块区域,大小为2M系统表空间存在一块区域,大小为2M深入解析MySQL检查点共68页,您现在浏览的是第31页!深入解析MySQL检查点共68页,您现在浏览的是第32页!深入解析MySQL检查点共68页,您现在浏览的是第33页!Doublewrite
buffer写入量可以看到比例远小于64:1说明系统写入压力并不大深入解析MySQL检查点共68页,您现在浏览的是第34页!Q&A深入解析MySQL检查点共68页,您现在浏览的是第35页!基本操作深入解析MySQL检查点共68页,您现在浏览的是第36页!基本操作深入解析MySQL检查点共68页,您现在浏览的是第37页!基本操作深入解析MySQL检查点共68页,您现在浏览的是第38页!基本操作深入解析MySQL检查点共68页,您现在浏览的是第39页!为什么要采取异步刷新1Thisisanoptimization2Itcallitwritebining深入解析MySQL检查点共68页,您现在浏览的是第40页!innodb_flush_log_at_trx_mit深入解析MySQL检查点共68页,您现在浏览的是第41页!Logbuffer设置showglobalstatuslike'%Innodb_log_waits%';+++|Variable_name|Value|+++|Innodb_log_waits|0|+++Innodb_log_waits
Thenumberoftimesthatthelogbufferwastoosmallandawaitwasrequiredforittobeflushedbeforecontinuing.深入解析MySQL检查点共68页,您现在浏览的是第42页!innodb_log_file_size深入解析MySQL检查点共68页,您现在浏览的是第43页!大概7M每分钟,那么一个小时是多少呢,7*60=420M,所以单个logfile大小256M大小足够。2008ByBaronSchwartz.mysqlperformanceblog./2008/11/21/how-to-calculate-a-good-innodb-log-file-size/innodb_log_file_size设置深入解析MySQL检查点共68页,您现在浏览的是第44页!Log写入
LSN实际上对应日志文件的偏移量,新的LSN=旧的LSN+写入的日志大小。举例如下:LSN=1G,日志文件大小总共为600M,本次写入512字节,则实际写入操作为:l求出偏移量:由于LSN数值远大于日志文件大小,因此通过取余方式,得到偏移量为400M;写入日志:找到偏移400M的位置,写入512字节日志内容,下一个事务的LSN就是1000000512;Innodb日志机制深入分析深入解析MySQL检查点共68页,您现在浏览的是第45页!Checkpoint写入Innodb实现了FuzzyCheckpoint的机制,每次取到最老的脏页,然后确保此脏页对应的LSN之前的LSN都已经写入日志文件,再将此脏页的LSN作为Checkpoint点记录到日志文件,意思就是“此LSN之前的LSN对应的日志和数据都已经写入磁盘文件”。恢复数据文件的时候,Innodb扫描日志文件,当发现LSN小于Checkpoint对应的LSN,就认为恢复已经完成。Checkpoint写入的位置在日志文件开头固定的偏移量处,即每次写Checkpoint都覆盖之前的Checkpoint信息。Innodb日志机制深入分析深入解析MySQL检查点共68页,您现在浏览的是第46页!如上图所示,Innodb的一条事务日志共经历4个阶段:创建阶段:事务创建一条日志;日志刷盘:日志写入到磁盘上的日志文件;数据刷盘:日志对应的脏页数据写入到磁盘上的数据文件;写CKP:日志被当作Checkpoint写入日志文件;Innodb日志机制深入分析深入解析MySQL检查点共68页,您现在浏览的是第47页!Innodb日志机制深入分析深入解析MySQL检查点共68页,您现在浏览的是第48页!1Sharp检查点。2FuzzycheckpointMysql检查点的类型深入解析MySQL检查点共68页,您现在浏览的是第49页!1受参数innodb_max_dirty_pages_pct影响2percona中引入innodb_adaptive_flushing_method3根据日志大小进行适时的刷新Fuzzycheckpoint深入解析MySQL检查点共68页,您现在浏览的是第50页!深入理解内存中的数据结构内存结构中bufferpool中的数据结构FreelistLRUlistFlushlist深入解析MySQL检查点共68页,您现在浏览的是第51页!关于LRUSpecifiestheapproximatepercentageoftheInnoDBbufferpoolusedfortheoldblocksublist.Therangeofvaluesis5to95.Thedefaultvalueis37(thatis,3/8ofthepool).深入解析MySQL检查点共68页,您现在浏览的是第52页!关于FLUShlist实际上就是所有的脏页的一个先后的修改顺序排列深入解析MySQL检查点共68页,您现在浏览的是第53页!buf_get_modified_ratio_pct(void){ulintratio;ulintlru_len=0;ulintfree_len=0;ulintflush_list_len=0;buf_get_total_list_len(&lru_len,&free_len,&flush_list_len);ratio=(100*flush_list_len)/(1+lru_len+free_len);/*1+istheretoavoiddivisionbyzero*/return(ratio);}innodb_max_dirty_pages_pct在数据库源代码中的体现buf0buf.c深入解析MySQL检查点共68页,您现在浏览的是第54页!可以看出数据库典型反映在数据库上的脏页比率深入解析MySQL检查点共68页,您现在浏览的是第55页!Checkpoint触发深入解析MySQL检查点共68页,您现在浏览的是第56页!计算过去一段时间内,flush的平均速度;与当前需要的flush速度其中,BUF_FLUSH_STAT_N_INTERVAL=20S不变,计算的仍旧是过去20S内的平均flush速度若当前所需速度>20S内的平均速度,则adaptiveflushing会尝试进行一次flush操作。flush的dirtypages数量仍旧是PCT_IO(100),200个dirtypages。Checkpoint触发检查点深入解析MySQL检查点共68页,您现在浏览的是第57页!刷新脏页到磁盘的算法首先计算可选的neighborsflush脏页之前,必须保证脏页对应的日志已经写回日志文件将数据拷贝到doublewritememory将doublewritememory写出到diskdoublewritebuffer的写,为同步写,调用在doublewritebuffer被成功flush到disk之后,对应的dirtypages不会再丢失数据。此时再将doublewritebuffer对应的dirtypages写出到disk标识当前flush操作结束(buf_flush_end)收集当前flush操作的统计信息更新检查点信息深入解析MySQL检查点共68页,您现在浏览的是第58页!Innodb日志机制深入分析为了解决第二种情况导致数据丢失的问题,Innodb实现了一套日志保护机制,详细实现如下:
为了解决第二种情况导致数据丢失的问题,Innodb实现了一套日志保护机制,详细实现如下:“sync”pointisatabout7/8ofinnodb_log_file_size,andthe“async”pointisatabout6/8=3/4ofinnodb_log_file_size.深入解析MySQL检查点共68页,您现在浏览
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年高中语文 第四单元 文言文(3)第15课 陈情表教学设计 粤教版必修5
- 18囊萤夜读教学设计-2023-2024学年四年级下册语文统编版
- Unit 2 Travelling around the world 第3课时Listening (p.24),Speaking (p.27) 教案 2024-2025学年沪教版(2024)七年级英语下册
- 2024-2025学年高中生物 第二章 基因和染色体的关系 第1节 减数分裂和受精作用 二 受精作用教学设计2 新人教版必修2
- 2024秋三年级英语上册 Unit 1 Hello Part B第一课时教学设计 人教PEP
- Module 9 Unit 1 Im going to do long jump. (教学设计)-2023-2024学年外研版(一起)英语三年级上册
- 5 国家机构有哪些 第二课时 国家机关的产生(教学设计)-部编版道德与法治六年级上册
- 11《军神》(教学设计)2023-2024学年统编版语文五年级下册
- 七年级地理下册 第七章 第4节《俄罗斯》教学设计 (新版)新人教版
- 三年级道德与法治下册 第四单元 多样的交通和通信 12 慧眼看交通教学设计2 新人教版
- 2025年超高功率大吨位电弧炉项目建议书
- 浙江省杭州市萧山区2022-2023学年第二学期四年级科学期中试题(含答案)
- 宠物殡葬创新创业
- 2024年黑龙江出版集团招聘笔试真题
- 2024年4月27日浙江省事业单位招聘考试《职业能力倾向测验》真题及答案
- 2025年上半年上海青浦新城发展(集团)限公司自主招聘9名易考易错模拟试题(共500题)试卷后附参考答案
- 小学数学教学中错题资源的有效利用研究论文
- 2025年山西电力职业技术学院单招职业技能考试题库及答案1套
- 2025年高考预测猜题 化学 信息必刷卷02(新高考 通 用)(解析版)
- 3.2依法行使权利 课件 -2024-2025学年统编版道德与法治八年级下册
- 2025年洛阳科技职业学院单招职业技能测试题库及答案(考点梳理)
评论
0/150
提交评论