MySQL存儲引擎是什麼??
- Mysql的數據用不同的技術存儲在文件(或內存)中。
- 不同的技術擁有不同的存儲機制、索引技巧、鎖定水平等等。
- 通過選擇不同的技術獲得不同的功能,從而改善應用的整體功能,而這些不同的技術和功能就是存儲引擎(也稱作表引擎)。
MySQL的存儲引擎有哪些??
- 查看所有的存儲引擎:MariaDB [(none)]> SHOW ENGINES \G;
- 查看默認當前的存儲引擎:
MariaDB [(none)]> show variables like "default_storage_engine";
+------------------------+--------+
| Variable_name | Value |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+
1 row in set (0.01 sec)
INNODB和MyISAM存儲引擎的區別
- 鎖機制:INNODB支持行級鎖;MySIAM支持表級鎖(鎖的顆粒度不同)
- 事務:INNODB支持;MyIASM不支持
- 外鍵:INNODB支持;MyISAM不支持
- MVCC:只有INNODB支持 (MVCC:多版本併發控制機制 -> 基於鎖的併發機制)
應用場景:
- INNODB:可以進行事務回滾、併發控制等等;所以:併發高、數據一致、更新和刪除操作較多、事務的完整提交和回滾
- MyISAM:啥都不支持,限制併發能力;所以:讀操作和插入操作爲主(多讀少寫)
- Memory:特點是將數據存放在內存中,索引的數據結構是Hash方式;而INNODB和MyISAM是B+樹這種數據結構;
所以:針對於單記錄查詢來說,Memory效率更高,但是對範圍查找速度遠不如其他兩種存儲引擎;快速定位記錄
如何指定存儲引擎:
- 創建表的時候指定
create table student(id int(4),name char(8)) engine=xxx;
- 修改已經創建表的存儲引擎:(儘量少操作,因爲表中的數據量非常大的時候,改變存儲引擎導致數據存儲方式改變可能會導致堵塞)
alter table student engine=xxx;
- 指定默認存儲引擎: 配置文件中添加對應參數
配置文件:/etc/my.cnf | /etc/my.cnf.d/server.cnf
[mysqld]
default‐storage‐engine=INNODB