SQL中的存儲引擎


(了解內容)

概述

1、存儲引擎是MySQL特有的,其它數據庫沒有。
2、使用:SHOW CREATE TABLE t_class(表名);完整的建表語句:

CREATE TABLE `t_class` (
  `cno` int NOT NULL,
  `cname` varchar(128) NOT NULL,
  PRIMARY KEY (`cno`),
  UNIQUE KEY `cname` (`cname`)
) ENGINE=InnoDB 
DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

3、注意:在MySQL當中,凡是標識符是可以使用反引號(`)括起來的。(只限於mysql,不通用)
4、建表的時候可以指定存儲引擎,也可以指定字符集。
5、這里MySQL默認使用的存儲引擎是InnoDB方式。默認采用的字符集是utf8mb4。

存儲引擎的本質

1、通過采用不同的技術將數據存儲在文件或內存中。
2、每一種技術都有不同的存儲機制,不同的存儲機制提供不同的功能和能力。
3、通過選擇不同的技術,可以獲得額外的速度或功能,改善我們的應用。
4、查看引擎的命令:show engines;
在這里插入圖片描述

引擎的使用

1、在創建表時,可使用< ENGINES> 選項為CREATE TABLE語句顯示指定存儲引擎。
例如:

CREATE TABLE 表名(
NO INT
)ENGINE = MyISAM;

2、如果創建表時沒有指定存儲引擎,則使用當前默認的存儲引擎。
3、默認的存儲引擎可在my.ini 配置文件中使用default-storage-engin選項指定。
4、修改表的存儲引擎使用:

ALTER TABLE 表名 ENGINE = 存儲引擎名稱;

5、查看表使用的存儲引擎,命令如下:
(Navicat中不支持\G、\g,在cmd中就可以。)
a)show create table t_class\G;
在這里插入圖片描述
b)show table status like 't_class'\G;
在這里插入圖片描述

常見的存儲引擎

MyISAM存儲引擎

1、MyISAM引擎是MySQL數據庫最常用的。
2、它管理的表具有以下特性:
特性一:使用三個文件表示每個表:
a)格式文件 — 存儲表的結構(mytable.frm)
b)數據文件 — 存儲表的數據(mytable.MYD)
c)索引文件 — 存儲表的索引(mytable.MYI)
特性二:可轉換為壓縮、只讀表來節省空間,同時提高檢索效率。
(不支持事務。)

InnoDB存儲引擎

1、InnoDB存儲引擎是MySQL數據庫的缺省引擎(默認引擎)
2、它管理的表具體有以下特征:
a)每個InnoDB表在數據庫目錄中以.frm格式文件表示;
b)InnoDB表空間tablespace被用於存儲表的內容;
c)提供一組用來記錄事務性活動的日志文件;
d)用COMMIT(提交)、SAVEPOINT及ROLLBACK(回滾)支持事務處理
e)提供全部ACID兼容;
f)在MySQL服務器崩潰后提供自動恢復;
g)多版本(MVCC)和行級鎖定;
h)支持外鍵及引用的完整性,包括級聯更新和刪除。

MEMORY存儲引擎

1、使用MEMORY存儲引擎的表,因為數據存儲在內存中,且行的長度固定,所以使得MEMORY存儲引擎非常快;
2、MEMORY存儲引擎管理的表具有下列特征:
a)在數據庫目錄內,每個表均以.frm格式文件表示;
b)表數據及索引被存儲在內存中;
c)表級鎖機制;
d)字段屬性不能包含TEXT或BLOB字段;
3、MEMORY存儲引擎以前被稱為HEAP引擎。

選擇合適的存儲引擎

1、MyISAM表最適合於大量的數據讀而少量數據更新的混合操作。MyISAM表的另一種適用情形是使用壓縮的只讀表。
2、如果查詢中包含較多的數據更新操作,應使用InnoDB。其行級鎖機制和多版本的支持為數據讀取和更新的混合提供了良好的並發機制。
3、使用MEMORY存儲引擎存儲非永久需要的數據,或者是能夠從基於磁盤的表中重新生成的數據。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM