1. 程式人生 > 實用技巧 >SQL中的儲存引擎

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儲存引擎儲存非永久需要的資料,或者是能夠從基於磁碟的表中重新生成的資料。