MySQL存儲引擎(瞭解)

1:查看建表sql語句:

show create table t_student1;

2:完整的建表語句:

CREATE TABLE `t_student1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `sex` char(1) DEFAULT '1',
  `classno` int(11) DEFAULT NULL,
  `birth` char(10) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `classno` (`classno`),
  FOREIGN KEY (`classno`) REFERENCES `t_class` (`cno`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 |

注意:在mysql中,凡是標識符是可以使用飄號括起來的。不通用。

mysql默認使用的存儲引擎是InnoDB方式。
默認採用的字符集是UTF8。

3:什麼是存儲引擎呢?

存儲引擎這個名字只有在mysql中存在。(Oracle中有對應的機制,但是不叫做存儲引擎。Oracle中沒有特殊的名字,就是”表的存儲方式”)。

mysql支持很多存儲引擎,每一個存儲引擎都對應了一種不同的存儲方式。每一個存儲引擎都有自己的優缺點,需要在合適的時機選擇合適的存儲引擎。

4:查看當前mysql支持的存儲引擎?

show engines \G

當前使用的mysql版本是5.5.36,支持9個存儲引擎。

5:常見的存儲引擎?

Engine: MyISAM
Support: YES
Comment: MyISAM storage engine
Transactions: NO
XA: NO
Savepoints: NO

MyISAM是mysql最常用的存儲引擎,但是這種引擎不是默認的。
MyISAM採用三個文件組織一張表:
xxx.frm(存儲格式的文件)
xxx.myd(存儲表中數據的文件)
xxx.myi(存儲表中索引的文件)
優點:可被壓縮,節省存儲空間,並且可以轉換爲只讀表,提高檢索效率。
缺點:不支持事務。
------------------------------------------------------------------------------

Engine: InnoDB
Support: DEFAULT
Comment: Supports transactions, row-level locking, and foreign keys
Transactions: YES
XA: YES
Savepoints: YES
優點:支持事務,行級鎖,外鍵等。這種存儲引擎數據的安全得到保障。

表的結構存儲在:xxx.frm文件中
數據存儲在tablespace這樣的表空間中(邏輯概念),無法被壓縮,無法轉換成只讀。
這種InnoDB存儲引擎在mysql數據庫崩潰之後提供自動恢復機制。
InnoDB支持級聯刪除和級聯更新。
------------------------------------------------------------------------------

Engine: MEMORY
Support: YES
Comment: Hash based, stored in memory, useful for temporary tables
Transactions: NO
XA: NO
Savepoints: NO
缺點:不支持事務,數據容易丟失,因爲所有數據和索引都是存儲在內存中。

優點:查詢速度最快。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章