MySQL核心参数含义源码解析

MySQL核心参数含义源码解析

ID:37323649

大小:1.50 MB

页数:31页

时间:2019-05-21

MySQL核心参数含义源码解析_第1页
MySQL核心参数含义源码解析_第2页
MySQL核心参数含义源码解析_第3页
MySQL核心参数含义源码解析_第4页
MySQL核心参数含义源码解析_第5页
资源描述:

《MySQL核心参数含义源码解析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、MySQL核心参数含义源码解析徐春阳1. 前言MySQL运维常见的困惑?响应时间莫名奇妙地变长?数据库慢得有点莫名其妙了?Cpu利用率飙高了,原因?O数据库本身的问题?R主从中断?系统环境/网络环境有问题?SQL执行结果有错?怀疑数据库参数不合适了?修改?不能准确预计容量最后‐‐在问题真正解决前,跟同事持不同的意见?2. 数据库核心参数总览innodb_flush_log_at_trx_commitsync_binlogbinlog_group_commit_sync_delaybinlog_group_commit_sync_no_delay_coun

2、tinnodb_commit_concurrency事务安全/提交有关......各种类型cache有关缓冲池有关其他重要参数innodb_buffer_pool_sizeinnodb_buffer_pool_instancesinnodb_max_dirty_pages_pctinnodb_max_dirty_pages_pct_lwminnodb_io_capacity_maxthread_cache_sizeinnodb_thread_concurrencyinnodb_io_capacitytable_open_cacheinnodb_concu

3、rrency_ticketsinnodb_lru_scan_depthtable_open_cache_instancesmax_connectionsinnodb_adaptive_flushingtable_definition_cachemax_user_connectionsinnodb_adaptive_flushing_lwmbinlog_cache_sizemax_allowed_packetinnodb_old_blocks_timequery_cache_sizeslave_max_allowed_packetinnodb_old_bl

4、ocks_pct......back_log。。。。。。wait_timeoutlong_query_time......注:对于某些参数,如果视角不同,归类也可能不一样。限于时间,后面仅讲解缓存池的机制以及与其相关参数。3. 缓存池工作机制概述访问页面时,如缓存命中,直接访问内存,无需访问磁盘。页面的修改在内存中进行,用户功能是什么?无需等待page的更新写进磁盘。缓存池大小有限,如何提高缓存命中率?如何缓存最热的页面?应考虑的因素页面的修改虽然在内存中先进行,但需要考虑何时将被修改的页面刷入磁盘,使页面的更新“落地”。采用LRU算法进行页面替换LRU

5、链表分成old/young两部分如何实现?被更新的页面被加入flush列表,后台刷新线程及时刷新3.1  缓存池中的列表空闲内存页(块)列表,需要装载(缓存)磁盘上的free数据页的时候,从该列表取内存块。缓存了磁盘上的数据页的内存块列表,包含三类:Buffer bool1.未修改的页面,可以从该列表中摘除,然后挂到freeLRUinstance 列表中。2.已修改还未刷新到磁盘的页面。3.已修改且已经刷新到磁盘的页面(实际上可并为第1类)1orN个在内存中被修改但还没有刷新到磁盘的数据页列表,就flush是所谓的“脏”页列表,内存中的数据跟对应的磁盘上

6、的数据不一致。属于该列表的页面同样存在于LRU列表Buffer bool中,但反之未必。instance 3.2  访问数据页的流程D脏页R未修改/已刷新页选访问数据页Buffer pool择该时在缓存池空闲中没有命中,页未存则需要先找命放中到空闲块来装载数据页Free listfreefreeFree list查找方向没有空余null的块,然尾部后从LRU中查找未被LRU listRDDRD修改的页/或已被刷尾新的页,部找到后放LRU listDDDD入free列表中,然后从free列表在LRU列表中找不到可以替换的页,单页刷盘中重新取则从LRU列表的

7、队尾开始选择单页刷新,刷新完成后加入free列表.3.3  访问数据页的源码之—寻找空闲的block函数从free list 取block,找到就返回block从LRU列表中查找可以替换的block然后放入free 列表,如果返回true,然后跳转到函数loop位置,重新从free列表中找空闲的block。第一次扫描时仅scan 100个页( 不考虑压缩页),如果需要进行第二次扫描,则扫描整个lru列表。从LRU列表中刷新一个页面(”脏”页),然后加入free列表,跳转到loop位置,进行新的循环。???如果需要用户线程来刷新“脏页”来产生空闲页,系统的

8、性能将如何?Free or 可以替换的页大量存在太重要了。3.4  缓存池的有关

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。