存儲引擎

存儲引擎概述

作爲可插拔式的組件提供

  • MySQL服務軟件自帶的功能程序,處理表的處理器
  • 不同的存儲引擎有不同的功能和數據存儲方式

相關

  • 查看可用的存儲引擎:
mysql> show engines;
  • 查看錶的存儲引擎:(建表時不指定存儲引擎則使用默認引擎)
mysql> show create table 表名; #查看錶的創建命令(包含引擎信息)
  • 修改默認儲存引擎:
] vim /etc/my.cnf
default-storage-engine="引擎名"
  • 建表時指定存儲引擎:
mysql> create table 表(字段...)engine="引擎名";
  • 修改表的存儲引擎:
mysql> alter table 表名 engine=引擎名;

存儲引擎

工作中常用存儲引擎:innodb/myisam

  • 讀操作多的表適合使用MyISAM:節省系統硬件資源
  • 寫操作多的表適合使用innodb:併發訪問量大

存儲引擎特點

  • MyISAM

    • 表文件:
    1. .frm 表結構
    2. .MYI 索引
    3. .MYD 表數據
    • 主要特點:
    1. 支持表級鎖
    2. 不支持事務、事務回滾、外鍵
  • InnoDB

    • 表文件:
    1. .frm 表結構
    2. .ibd 表空間(表索引+表記錄)
    • 主要特點:
    1. 支持行級鎖
    2. 支持事務、回滾、外鍵
    • 事務日誌文件:
    1. ibdata1
    2. ib_logfile0
    3. ib_logfile1

鎖表:對錶執行命令時,鎖定表或行,命令執行期間限制其他用戶對鎖定的數據進行操作

鎖級別 說明
表級鎖 訪問時整張表鎖表
行級鎖 訪問時只鎖定被訪問的行,其餘未加鎖的行可以被訪問
鎖類型 觸發鎖的SQL命令
讀鎖(共享鎖) select
寫鎖(排他鎖/互斥鎖) insert/update/delete
  • 共享鎖:一個select期間,可以同時再次select,不可以update/delete/insert
  • 排他鎖/互斥鎖:一個update/delete/insert期間,不可以執行select,也不可以update/delete/insert
mysql> show status like 'table_lock%'; #查看當前鎖狀態

事務特性:(ACID)

  1. Atomic:原子性
    事務的整個操作是一個整體,不可分割,要麼全部成功,要麼全部失敗
  2. Consistemcy:一致性
    事務操作的前後,表中的記錄沒有變化
  3. Isolation:隔離性
    事務操作時相互隔離不受影響的
  4. Durability:持久性
    數據一旦提交,不可改變,永久改變表數據
mysql> show variables like 'autocommit'; #查看提交狀態
mysql> set autocommit=off; #關閉自動提交(僅當前有效)
mysql> rollback; #數據回滾
mysql> commit; #提交數據
發佈了103 篇原創文章 · 獲贊 7 · 訪問量 6006
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章