MySQL核心InnoDB儲存引擎(卷1)筆記,mysqlinnodb

來源:互聯網
上載者:User

MySQL核心InnoDB儲存引擎(卷1)筆記,mysqlinnodb
MySQL核心InnoDB儲存引擎(卷1)目錄

  • 1概覽
  • 2基本資料結構和演算法
  • 3同步機制
  • 4重做日誌
  • 5mini-transaction(mtr)
  • 6儲存管理
  • 7記錄
  • 8索引頁
  • 9鎖
  • 10B+樹索引
  • 11Insert Buffer
  • 12緩衝池
  • 13交易處理
  • 14資料字典
  • 15服務管理
概覽基本資料結構和演算法同步機制
  • p38 若sync_primary_wait_array中1000個cell都已指派,則ut_error觸發crash
  • 重做日誌
  • LSN(表示事務寫入redo log的位元組量?)
  • 檢查點:將緩衝池中的頁重新整理到磁碟
  • redo日誌的大小是固定的(3GB)->歸檔日誌
  • ib_logfile<N>
  • redo日誌塊(512B-12-8)
  • 重做日誌組*
  • 組提交:fsync -> log_flush_up_to 會對最後一個日誌塊進行複製
  • 恢複:recovery_from_checkpoint_start
  • mini-transaction(mtr)
  • Force-Log-at-Commit
  • mtr_t mtr; mtr_start(&mtr); ... mtr_commit(&mtr);
  • 更新多行記錄時,MLOG_MULTI_REC_END
  • 儲存管理
  • 段(segment)
  • 資料表空間
  • 資料結構:fil_system/space/node_struct
  • 4個非同步I/O線程:非同步讀、非同步寫、插入緩衝、重做日誌
  • 記錄
  • p103 VARCHAR類型的NULL不佔用磁碟空間,而CHAR NULL用0x00填充
  • 大記錄:BLOB/TEXT(溢出頁,extern屬性)
  • 邏輯記錄
  • 行記錄版本(MVCC只是列?):通過隱藏的事務ID列
  • p114 函數read_view_sees_trx_id用來判斷當前事務是否可以讀記錄的目前的版本,不是,則row_sel_build_prev_vers_for_mysql
  • 索引頁
  • Page Directory(定位記錄在頁內的位置)
  • Page Cursor*
  • lock_rec_struct = { space, page_no, n_bits }
  • p144 LOCK_GAP(代表範圍鎖不包含端點)
  • 顯式鎖和隱式鎖**(略)
  • 行鎖的維護*(重點,略)
  • 自增鎖(atomic?)
  • 死結*
  • B+樹索引
  • DML操作
  • 主鍵更新
  • 持久遊標 btr_pcur_struct
  • 自適應雜湊索引*
  • Insert Buffer緩衝池
  • 線性預讀*
  • 邏輯預讀
  • 頁的重新整理
  • 交易處理
  • undo日誌實現:復原段 + undo段
  • undo記錄
  • purge*
  • rollback
  • commit
  • 資料字典服務管理
    MySQL儲存引擎沒有InnoDB

    使用
    mysql> show engines;
    指令 看看有沒InnoDB
    如果沒有 介意重裝
     
    Mysql資料庫3種儲存引擎有什不同?

    這個是考慮效能的問題,還有事務的支援,吧 百度一下你就知道

    MyISAM、InnoDB、Heap(Memory)、NDB

    貌似一般都是使用 InnoDB的,

    mysql的儲存引擎包括:MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDBCluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等,其中InnoDB和BDB提供事務安全表,其他儲存引擎都是非事務安全表。
    最常使用的2種儲存引擎:
    1.Myisam是Mysql的預設儲存引擎,當create建立新表時,未指定新表的儲存引擎時,預設使用Myisam。每個MyISAM在磁碟上儲存成三個檔案。檔案名稱都和表名相同,副檔名分別是.frm(儲存表定義)、.MYD(MYData,儲存資料)、.MYI(MYIndex,儲存索引)。資料檔案和索引檔案可以放置在不同的目錄,平均分布io,獲得更快的速度。
    2.InnoDB儲存引擎提供了具有提交、復原和崩潰恢複能力的事務安全。但是對比Myisam的儲存引擎,InnoDB寫的處理效率差一些並且會佔用更多的磁碟空間以保留資料和索引。

    不知道是不是對你有協助
     

    相關文章

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.