長春建站優(yōu)化加徽信xiala5百度網(wǎng)址怎么輸入?
存儲引擎
Mysql中特有的術(shù)語,Oracle中沒有。
存儲引擎就是一個表存儲/組織數(shù)據(jù)的方式。不同的存儲引擎,表存儲數(shù)據(jù)的方式不同。
指定存儲引擎
在建表的時候可以在最后小括號的")"的右邊使用:
ENGINE來指定存儲引擎。
CHARSET來指定這張表的字符編碼方式。
mysql默認(rèn)的存儲引擎是:InnoDB
mysql默認(rèn)的字符編碼方式是:utf8
建表時指定存儲引擎,以及字符編碼方式。create table t_product(id int primary key,name varchar(255))engine=InnoDB default charset=gbk;
通過show create table 表名;
就能看到表的存儲引擎以及編碼方式了
show create table t_product;
+-----------+----------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table|
+-----------+----------------------------------------------------------------------------------------------------------------------------------------------+
| t_product | CREATE TABLE `t_product` (`id` int NOT NULL,`name` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk |
+-----------+----------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
查看mysql支持哪些存儲引擎
輸入命令
show engines \G
*************************** 1. row ***************************Engine: MEMORYSupport: YESComment: Hash based, stored in memory, useful for temporary tables
Transactions: NOXA: NOSavepoints: NO
*************************** 2. row ***************************Engine: MRG_MYISAMSupport: YESComment: Collection of identical MyISAM tables
Transactions: NOXA: NOSavepoints: NO
*************************** 3. row ***************************Engine: CSVSupport: YESComment: CSV storage engine
Transactions: NOXA: NOSavepoints: NO
*************************** 4. row ***************************Engine: FEDERATEDSupport: NOComment: Federated MySQL storage engine
Transactions: NULLXA: NULLSavepoints: NULL
*************************** 5. row ***************************Engine: PERFORMANCE_SCHEMASupport: YESComment: Performance Schema
Transactions: NOXA: NOSavepoints: NO
*************************** 6. row ***************************Engine: MyISAMSupport: YESComment: MyISAM storage engine
Transactions: NOXA: NOSavepoints: NO
*************************** 7. row ***************************Engine: InnoDBSupport: DEFAULTComment: Supports transactions, row-level locking, and foreign keys
Transactions: YESXA: YESSavepoints: YES
*************************** 8. row ***************************Engine: BLACKHOLESupport: YESComment: /dev/null storage engine (anything you write to it disappears)
Transactions: NOXA: NOSavepoints: NO
*************************** 9. row ***************************Engine: ARCHIVESupport: YESComment: Archive storage engine
Transactions: NOXA: NOSavepoints: NO
9 rows in set (0.00 sec)
MyISAM
它管理的表具有以下特征:
-
格式文件——存儲表的結(jié)構(gòu)(mytable.frm)
-
數(shù)據(jù)文件——存儲表中的內(nèi)容(mytable.MYD)
-
索引文件——存儲表上索引(mytable.MYI):索引是一本書的目錄,縮小掃描范圍,提高查詢效率的一種機(jī)制。
對于一張表來說,只要是主鍵,或者加有unique
約束字段的,都會自動創(chuàng)建索引。
MyISAM存儲引擎特點:
-
可被轉(zhuǎn)換為壓縮、只讀表來節(jié)省空間,這是這種存儲引擎的優(yōu)勢!!!!
-
不支持事務(wù)機(jī)制,安全性較低。
InnoDB
mysql的默認(rèn)存儲引擎。
InnoDB支持事務(wù),支持?jǐn)?shù)據(jù)庫崩潰后的恢復(fù)機(jī)制。
– 每個 InnoDB 表在數(shù)據(jù)庫目錄中以.frm 格式文件表示– InnoDB 表空間 tablespace 被用于存儲表的內(nèi)容(表空間是一個邏輯名稱。表空間存儲數(shù)據(jù)+索引。)– 提供一組用來記錄事務(wù)性活動的日志文件– 用 COMMIT(提交)、SAVEPOINT 及ROLLBACK(回滾)支持事務(wù)處理– 提供全 ACID 兼容– 在 MySQL 服務(wù)器崩潰后提供自動恢復(fù)– 多版本(MVCC)和行級鎖定– 支持外鍵及引用的完整性,包括級聯(lián)刪除和更新
MEMORY
使用 MEMORY 存儲引擎的表,其數(shù)據(jù)存儲在內(nèi)存中,且行的長度固定,這兩個特點使得 MEMORY 存儲引擎非???。
– 在數(shù)據(jù)庫目錄內(nèi),每個表均以.frm 格式的文件表示。– 表數(shù)據(jù)及索引被存儲在內(nèi)存中。(目的就是快,查詢快!)– 表級鎖機(jī)制。– 不能包含 TEXT 或 BLOB 字段。
這個引擎的優(yōu)點就是在于查詢效率極高,不需要和硬盤交互,但是也極不安全,電腦斷電之后,數(shù)據(jù)就會消失,因為索引和數(shù)據(jù)都是存在內(nèi)存中的。