innodb之change buffer被动merge

被动merge情景一,二级索引页空间不足:ibuf0ibuf.cc:: ibuf_insert_low

1、当尝试缓存插入操作时,如果预估二级索引page的空间不足,可能导致索引分裂,则定位到尝试缓存的page no在ibuf tree中的位置,最多merge 8个page,merge方式为异步,即发起异步读取索引页请求。

   说明:

   Buffered:当前二级索引页已经缓存的记录

   entry_size:待插入的二级索引记录大小

   page_dir_calc_reserved_space(1):待插入记录的slot大小

   ibuf_index_page_calc_free_from_bits(zip_size,bits)):待插入二级索引页面剩余空间大小

 

/* Find out the volume of already bufferedinserts for the same index page */

         min_n_recs= 0;

         buffered= ibuf_get_volume_buffered(&pcur, space, page_no,

                                                   op == IBUF_OP_DELETE

                                                   ? &min_n_recs

                                                   : NULL, &mtr);

……

do_merge = FALSE;

……

//打开待插入ibuf记录在ibuf tree中的前一个记录位置

btr_pcur_open(ibuf->index, ibuf_entry,PAGE_CUR_LE, mode, &pcur, &am

你可能感兴趣的:(MySQL源码分析)