mysql進階-06存儲引擎Innodb

innodb是mysql5.5及以後版本默認存儲引擎

innodb支持事務
innodb適用表空間進行數據存儲

配置:innodb_file_per_table
    on:獨立表空間:tableName.ibd
    off:系統表空間:ibdataX

系統表空間和獨立表空間的選擇

比較:
    1. 系統表空間無法簡單的收縮文件大小
    2. 獨立表空間可以通過optimize table命令收縮系統文件
    3. 系統表空間會產生IO瓶頸
    4. 獨立表空間可以同時向多個文件刷新數據
    5. 建議使用獨立表空間
    mysql5.6以後獨立表空間是默認配置

innodb存儲引擎特性

1. innodb是一種事務性存儲引擎
 完全支持事務的ACID特性
 Redo Log和Undo Log(實現事務的這幾個特性)
    Redo Log 主要實現事務的持久性【存儲已提交的數據】
    Undo Log 存儲未提交的數據【需要隨機讀寫】

2. innodb支持行級鎖
    1. 行級鎖可以最大程度的支持併發
    2. 行級鎖是由存儲引擎層實現的

    鎖:
        數據庫系統區分文件系統的
        重要特性
    
      1. 鎖主要作用是管理共享資源的併發訪問
      2. 鎖用於實現事務的隔離性
    
    鎖類型:
        共享鎖(讀鎖)
        獨佔鎖(寫鎖)
- 寫鎖 讀鎖
寫鎖 不兼容 不兼容
讀鎖 不兼容 兼容
鎖的粒度
    行
    列
    表
鎖定的越少,效率越高

表級鎖:開銷小,併發低(mysql服務器上實現的)
行級鎖:開銷大,併發高

阻塞:
    一個事務中的鎖等待另一個鎖釋放
    數據庫連接大量堆積,性能降低
死鎖:
    1.多個事務之間相互佔用對方的資源
    2. 系統會自動發現死鎖
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章