InnoDB鎖結構個數最大限制

yzs87發表於2018-01-28

innodb鎖個數是固定的,系統中存在的數量在初始化時就已經確定好。

    innobase_start_or_create_for_mysql->lock_sys_create(srv_lock_table_size)->
lock_sys->rec_hash = hash_create(srv_lock_table_size);

鎖都存放在鎖系統的雜湊表中,該雜湊表最大是系統中頁個數的5倍:

    srv_normalize_init_values->
srv_lock_table_size = 5 * (srv_buf_pool_size / UNIV_PAGE_SIZE);

space和page_no雜湊一個key值,作為資料頁的鎖標號,從lock_sys->rec_hash表中獲取鎖結構,後續頁加鎖時,透過lock_hash_val從lock_sys->rec_hash中獲取鎖指標,然後建立鎖結構申請記憶體。
    buf_page_get_gen->
        block->lock_hash_val = lock_rec_hash(space, offset);

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31493717/viewspace-2150584/,如需轉載,請註明出處,否則將追究法律責任。

相關文章