国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 課堂 > 基礎(chǔ)知識(shí) > 正文

Innodb undo之 undo物理構(gòu)架的初始化

2024-09-12 20:29:59
字體:
供稿:網(wǎng)友
  水平有限,如果有誤請(qǐng)指出。
  一直以來未對(duì)Innodb 的undo進(jìn)行好好的學(xué)習(xí),最近剛好有點(diǎn)時(shí)間準(zhǔn)備學(xué)習(xí)一下,通過阿里內(nèi)核月報(bào)和自己看代碼的綜合總結(jié)一下。本文環(huán)境:
 
  代碼版本 percona 5.7.22
  參數(shù) innodb_undo_tablespaces = 4 及使用了4個(gè)undo tablespace
  參數(shù) innodb_rollback_segments = 128
  本文描述使用如上參數(shù)的設(shè)置。
 
  一、undo 表空間物理文件的建立
  本過程調(diào)用函數(shù)srv_undo_tablespaces_init進(jìn)行,棧幀如下:
 
  #0  srv_undo_tablespaces_init (create_new_db=true, n_conf_tablespaces=4, n_opened=0x2ef55b0)
      at /root/mysqlc/percona-server-locks-detail-5.7.22/storage/innobase/srv/srv0start.cc:824#1  0x0000000001bbd7e0 in innobase_start_or_create_for_mysql () at /root/mysqlc/percona-server-locks-detail-5.7.22/storage/innobase/srv/srv0start.cc:2188#2  0x00000000019ca74e in innobase_init (p=0x2f2a420) at /root/mysqlc/percona-server-locks-detail-5.7.22/storage/innobase/handler/ha_innodb.cc:4409#3  0x0000000000f7ec2a in ha_initialize_handlerton (plugin=0x2fca110) at /root/mysqlc/percona-server-locks-detail-5.7.22/sql/handler.cc:871#4  0x00000000015f9edf in plugin_initialize (plugin=0x2fca110) at /root/mysqlc/percona-server-locks-detail-5.7.22/sql/sql_plugin.cc:1252
  本過程主要有如下幾個(gè)步驟:
 
  根據(jù)參數(shù)innodb_undo_tablespaces 的配置通過調(diào)用srv_undo_tablespace_create分別進(jìn)行文件建立,默認(rèn)建立的大小為10M:
  for (i = 0; create_new_db && i < n_conf_tablespaces; ++i) //n_conf_tablespaces 為innodb_undo_tablespaces的配置的個(gè)數(shù)/** Default undo tablespace size in UNIV_PAGEs count (10MB). */const ulint SRV_UNDO_TABLESPACE_SIZE_IN_PAGES =
      ((1024 * 1024) * 10) / UNIV_PAGE_SIZE_DEF;
  ...
          err = srv_undo_tablespace_create(
              name, SRV_UNDO_TABLESPACE_SIZE_IN_PAGES); //建立undo文件...
  
  分別對(duì)4個(gè)undo tablespace調(diào)用srv_undo_tablespace_open 其主要調(diào)用fil_space_create 和 fil_node_create將新建立的undo tablespace加入Innodb的文件體系。
  for (i = 0; i < n_undo_tablespaces; ++i) {
  ....
  err = srv_undo_tablespace_open(name, undo_tablespace_ids[i]); //打開UNDO文件 建立 file node...
  }
  分別對(duì)4個(gè)undo tablespace 進(jìn)行fsp header初始化
  for (i = 0; i < n_undo_tablespaces; ++i) {
              fsp_header_init( //初始化fsp header 明顯 space id 已經(jīng)寫入
                  undo_tablespace_ids[i],
                  SRV_UNDO_TABLESPACE_SIZE_IN_PAGES, &mtr); //SRV_UNDO_TABLESPACE_SIZE_IN_PAGES 默認(rèn)的undo大小 10MB
 
  做完這個(gè)步驟只是生成了4個(gè)大小為10MB的 undo tablespace文件,并且已經(jīng)加入到Innodb文件體系,但是里面沒有任何類容。
 
  二、ibdata中system segment header的初始化
  本步驟調(diào)用 trx_sys_create_sys_pages->trx_sysf_create進(jìn)行,本步驟除了初始化transaction system segment以外還會(huì)初始化其header( ibdata page no 5))信息如下:
 
  /* Create the trx sys file block in a new allocated file segment */
      block = fseg_create(TRX_SYS_SPACE, 0, TRX_SYS + TRX_SYS_FSEG_HEADER,
                  mtr); //建立segment
      buf_block_dbg_add_level(block, SYNC_TRX_SYS_HEADER);
      ut_a(block->page.id.page_no() == TRX_SYS_PAGE_NO);
      page = buf_block_get_frame(block); //獲取內(nèi)存位置
      mlog_write_ulint(page + FIL_PAGE_TYPE, FIL_PAGE_TYPE_TRX_SYS, //寫入block 的類型
               MLOG_2BYTES, mtr);
      ...    /* Start counting transaction ids from number 1 up */
      mach_write_to_8(sys_header + TRX_SYS_TRX_ID_STORE, 1); // 初始化TRX_SYS_TRX_ID_STORE
      /* Reset the rollback segment slots.  Old versions of InnoDB
      define TRX_SYS_N_RSEGS as 256 (TRX_SYS_OLD_N_RSEGS) and expect
      that the whole array is initialized. */
      ptr = TRX_SYS_RSEGS + sys_header;
      len = ut_max(TRX_SYS_OLD_N_RSEGS, TRX_SYS_N_RSEGS)
          * TRX_SYS_RSEG_SLOT_SIZE;//TRX_SYS_OLD_N_RSEGS 為256個(gè)
      memset(ptr, 0xff, len); //將slot的信息的全部初始化為ff
      ptr += len;
      ut_a(ptr <= page + (UNIV_PAGE_SIZE - FIL_PAGE_DATA_END));    /* Initialize all of the page.  This part used to be uninitialized. */
      memset(ptr, 0, UNIV_PAGE_SIZE - FIL_PAGE_DATA_END + page - ptr); //將剩下的空間設(shè)置為0x00
      mlog_log_string(sys_header, UNIV_PAGE_SIZE - FIL_PAGE_DATA_END
              + page - sys_header, mtr);    /* Create the first rollback segment in the SYSTEM tablespace */
      slot_no = trx_sysf_rseg_find_free(mtr, false, 0);
      page_no = trx_rseg_header_create(TRX_SYS_SPACE, univ_page_size,
                       ULINT_MAX, slot_no, mtr); //將第一個(gè)slot固定在ibdata中
  完成了這一步過后ibdata的 block 5 就初始化完了,而且我們看到所有的rollback segment slots 都初始化完成(源碼所示有256個(gè),實(shí)際上最多只會(huì)有128個(gè),其中0號(hào)solt固定在ibdata中),注意這里的槽大小是TRX_SYS_RSEG_SLOT_SIZE設(shè)置的大小為8字節(jié),4字節(jié)space id ,4字節(jié) page no,它們會(huì)指向 rollback segment header所在的位置。
 
  三、進(jìn)行rollback segment header的初始化
  調(diào)用 trx_sys_create_rsegs進(jìn)行:
 
  說明一下關(guān)于innodb_undo_logs參數(shù)和innodb_rollback_segments參數(shù),他們作用就是設(shè)置rollback segment 的個(gè)數(shù),本文以128為例。
  根據(jù)注釋和代碼innodb_undo_logs已經(jīng)是個(gè)淘汰的參數(shù),應(yīng)該用innodb_rollback_segments代替。
  這兩個(gè)參數(shù)默認(rèn)是就是TRX_SYS_N_RSEGS及 128 其實(shí)不用設(shè)置的。本文也用128進(jìn)行討論。

(編輯:武林網(wǎng))

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
在线视频观看亚洲| 国产原创av在线| 午夜羞羞小视频在线观看| 国产小视频在线| 国产精品入口麻豆完整版| 欧美啪啪精品| 国产一二三区在线| 国产黄色免费在线观看| 91中文字幕| 男人天堂99| 国产精品你懂的在线观看| 国产高清一级片| jlzzjlzz欧美大全| 国产在线视频精品视频免费看| 成人免费一区二区三区牛牛| 国产成人亚洲欧美电影| av首页在线| 黄色片免费在线| 夜夜操天天干| 国产三级在线看| 免费99热在线观看| 国产精品理人伦一区二区三区 | 免费男女羞羞的视频网站中文字幕| 国产在线资源| 亚洲xxxxxx| 国产成人综合美国十次| 成网站在线观看人免费| 亚洲精品在线视频免费| 国产精品臀控福利在线观看| 精品国产美女福利到在线不卡| 国产剧情av在线| 男人天堂99| av在线天堂| 97在线免费| 国产黄色av免费看| 国产视频精选在线| 国产麻豆高清视频在线第一页| 18成年在线观看| 国产亚洲依依| 中文字幕色视频| 国产偷倩在线播放| 国产小视频免费在线网址| 国产免费福利| 交视频在线观看国产| а√天堂8资源在线官网 | 国产呻吟对白刺激无套视频在线| 牛牛热在线视频| 久久这里精品| 国产中文在线视频| 国产一区久久精品| 国产亚av手机在线观看| 日本一本久久| 国内精品免费一区二区三区| 黄色片大全在线观看| 国产免费视频在线| 国产精品黄页网站在线播放免费| 国产婷婷视频在线| 尤物网址在线观看| 国产精品久久麻豆| 夜夜操天天干| 国产美女在线观看| 国产jizz| 欧美日韩在线中文字幕| 国产69精品久久久久孕妇国产69久久| 国产免费a∨片在线观看不卡| 国产网站免费观看| 四虎成人精品在永久在线观看| www中文字幕在线观看| 欧美日韩综合高清一区二区| 天堂资源中文在线| 影音先锋中文字幕在线| 毛片在线视频| 国产欧美日韩专区| www在线视频观看| 国产福利资源| 国产性一级片| 国产免费视频| jizz一区二区三区| 精品成人一区二区三区免费视频| 黄色电影网站在线观看| 尤物在线视频观看| 午夜视频在线看| www网站在线观看| 国产白浆在线| 国产色a在线| 二人午夜免费观看在线视频| 亚洲最新永久观看在线| 最近中文字幕mv免费高清在线| 亚洲精品乱码电影在线观看| 国产a级网站| 国产三线在线| 国产秀色在线www免费观看| 免费一区二区三区视频狠狠| 在线免费国产视频| 91精品专区| 国产高清一级片| 国产精品美女一区二区视频| 国产精品一区在线看| 黄色网页网址在线免费| 久热国产在线视频| 久热免费在线视频| 青青草观看免费视频在线| 99久久国产视频| av丝袜在线| 美女av在线播放| 国产精选一区二区三区不卡催乳| 黄色片大全在线观看| 免费看av大片| 免费看ww视频网站入口| 免费国产阿v视频在线观看| 欧美人成在线观看网站高清| 非洲黑人最猛性xxxx交| 午夜免费福利在线观看| 中文字幕专区| 国产黄色片大全| 香蕉视频网站在线播放| 欧美日韩在线精品成人综合网| 思思99精品视频在线观看| 青草青在线视频| 国产精品臀控福利在线观看| 国产网站av| 精品视频三区| 欧美日韩久久中文字幕| 中文字幕视频在线| 在线国产1区| 五月伊人六月| 亚洲精品少妇久久久久久| 就爱干草视频| 91黄色在线| 国产美女高潮一区二区三区| 精品剧情v国产在线观看| 美女国产在线| 国产青青草在线| www黄在线观看| 国产黄色片中文字幕| 男人天堂99| 精品国产一区二区三区不卡在线| 波多野结衣久久高清免费| 国产欧美日本亚洲精品一4区| 日韩精品免费一区二区| 国产高潮av| 国产一区电影| 丁香花高清视频完整版在线观看| 国产精品18久久久久久久久久| 老司机精品视频一区二区| 91亚洲天堂| 国产精品福利视频一区二区三区 | 国产www视频在线观看| 国产在线传媒| 久久国产综合视频| 香蕉视频在线看| 97一区二区三区| 国产桃色电影在线播放| 国产精品一区二区三区视频网站| av在线天堂| av色在线观看| 天天噜天天色| baoyu777.永久免费视频| eeuss在线观看| 亚洲综合在线免费| 国产成人精品实拍在线| 国产高清视频在线| 国产成人亚洲欧美电影| 国产超碰在线| eeuss影院在线| 免费观看久久久久| 国产在线中文字幕| 国产字幕在线看| 18加网站在线| 国产经典av| 四虎国产精品永久地址998| www.操操操| 成年网站免费入口在线观看| 久久精品无码一区二区日韩av | 最新国产在线精品91尤物| 91caoporn在线| 国产一区精品| 99综合精品久久| 日韩a视频在线观看| 成 人免费视频播放| 国产另类图片| 97视频免费| 国产在线麻豆精品| 国产福利图片| 青青九九免费视频在线| 国产视频xxx| 日本一卡二卡四卡精品| 麻豆精品视频入口| 国产精品人人| 交换国产精品视频一区| 国产激情视频一区二区三区| 日本免费视频www| 五月婷婷导航| xxxx视频在线| 2018狠狠干| 国产九九九九| 免费观看久久久久| 中文视频在线| 最近高清中文在线字幕在线观看| 中文av资源在线|