首頁 > 軟體

MySql儲存引擎的作用

2022-09-16 22:00:51

1. 儲存引擎是什麼

儲存引擎是 MySql 中特有的一個術語,其它資料庫中沒有。

實際上儲存引擎是一個表儲存/組織資料的方式。

不同的儲存引擎,表儲存資料的方式不同。

2. 如何給表新增指定儲存引擎

mysql> show create table t_student;
| t_student | CREATE TABLE `t_student` (
  `no` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `cno` int DEFAULT NULL,
  PRIMARY KEY (`no`),
  KEY `cno` (`cno`),
  CONSTRAINT `t_student_ibfk_1` FOREIGN KEY (`cno`) REFERENCES `t_class` (`classno`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |

在建表的時候可以在最後小括號的 “)” 的右邊使用:

ENGINE 來指定儲存引擎

CHARSET 來指定這張表的字元編碼方式

mysql 的預設儲存引擎是:InnoDB

mysql 的預設的字元編碼方式是:utf8

mysql> create table t_product (id int primary key, name varchar(255))engine=InnoDB default charset=utf8;

3. mysql支援那些儲存引擎

mysql> show engines g

+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

mysql 支援九大儲存引擎

mysql 的版本不同,支援的引擎情況不同

4. mysql常用儲存引擎的介紹

1. MyISAM儲存引擎

特徵:

使用三個檔案表示每個表

  • 格式檔案 - 儲存表結構的定義(mytable.frm)
  • 資料檔案 - 儲存錶行的內容(mytable.MYD)
  • 索引檔案 - 儲存表上索引(mytable.MYI):索引是一本書的目錄,可以縮小掃描範圍,提供查詢效率。

優點:

由於表由三個檔案來儲存因此可以被壓縮、唯讀來儲存空間

缺點:

不支援事務,安全性低

對於一張表來說,如果新增 unique 約束,在被約束的欄位上就會自動建立索引

2. InnoDB儲存引擎

InnoDB 是 mysql 預設的儲存引擎,同時也是一個重量級的儲存引擎。

InnoDB 支援事務,支援資料庫崩潰後自動恢復機制。

InnoDB 儲存引擎最主要的特點是:非常安全!!!

特徵:

  • 每個 InnoDB 表在資料庫目錄中以.frm 格式檔案表示
  • InnoDB 表空間 tablespace 被用於儲存表的內容
  • 提供一組用來記錄事務性活動的紀錄檔檔案
  • 用 COMMIT(提交)、SAVEPOINT 及 ROLLBACK(回滾)支援事務處理
  • 提供全 ACID 相容
  • 在 MySQL 伺服器崩潰後提供自動恢復
  • 多版本(MVCC)和行級鎖定
  • 支援外來鍵及參照的完整性,包括級聯刪除和更新

3. MEMORY儲存引擎

使用 MEMORY 儲存引擎的表,其資料在記憶體中,且行的長度固定。

這兩個特點使得 MEMORY 儲存引擎非常快!!!

特徵:

  • 在資料庫目錄內,每個表均以.frm 格式的檔案表示。
  • 表資料及索引被儲存在記憶體中。
  • 表級鎖機制。
  • 不能包含 TEXT 或 BLOB 欄位。

MEMORY 儲存引擎以前被稱為 HEAP 引擎。

優點:

查詢效率最高!!!不需要和硬碟互動。

缺點:

不安全,關機之後資料消失,因為資料和索引都是在記憶體當中。

到此這篇關於MySql儲存引擎的作用的文章就介紹到這了,更多相關MySql儲存引擎內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com