系統學習----存儲引擎介紹

MySQL存儲引擎是什麼??

  • Mysql的數據用不同的技術存儲在文件(或內存)中。
  • 不同的技術擁有不同的存儲機制、索引技巧、鎖定水平等等。
  • 通過選擇不同的技術獲得不同的功能,從而改善應用的整體功能,而這些不同的技術和功能就是存儲引擎(也稱作表引擎)。

MySQL的存儲引擎有哪些??

  • 查看所有的存儲引擎:MariaDB [(none)]> SHOW ENGINES \G;
  • 查看默認當前的存儲引擎:
        MariaDB [(none)]> show variables like "default_storage_engine";
        +------------------------+--------+
        | Variable_name          | Value  |
        +------------------------+--------+
        | default_storage_engine | InnoDB |     # INNODB
        +------------------------+--------+
        1 row in set (0.01 sec)

INNODB和MyISAM存儲引擎的區別

  • 鎖機制:INNODB支持行級鎖;MySIAM支持表級鎖(鎖的顆粒度不同)
  • 事務:INNODB支持;MyIASM不支持
  • 外鍵:INNODB支持;MyISAM不支持
  • MVCC:只有INNODB支持 (MVCC:多版本併發控制機制 -> 基於鎖的併發機制)

應用場景:

  1. INNODB:可以進行事務回滾、併發控制等等;所以:併發高、數據一致、更新和刪除操作較多、事務的完整提交和回滾
  2. MyISAM:啥都不支持,限制併發能力;所以:讀操作和插入操作爲主(多讀少寫)
  3. Memory:特點是將數據存放在內存中,索引的數據結構是Hash方式;而INNODB和MyISAM是B+樹這種數據結構;
    所以:針對於單記錄查詢來說,Memory效率更高,但是對範圍查找速度遠不如其他兩種存儲引擎;快速定位記錄

如何指定存儲引擎:

  1. 創建表的時候指定
create table student(id int(4),name char(8)) engine=xxx;
  1. 修改已經創建表的存儲引擎:(儘量少操作,因爲表中的數據量非常大的時候,改變存儲引擎導致數據存儲方式改變可能會導致堵塞)
alter table student engine=xxx; 
  1. 指定默認存儲引擎: 配置文件中添加對應參數
    配置文件:/etc/my.cnf | /etc/my.cnf.d/server.cnf
[mysqld]  
default‐storage‐engine=INNODB
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章