自動目錄
MySQL 表格格式預設為 MyISAM,但在4.0以上的mysql 其實支援不只一種型態,我們用以下指令來看看有哪些型態
查看系統支援的引擎種類
[5.0]
SHOW VARIABLES LIKE 'have%' ;
[5.0~5.5]
SHOW ENGINES;
5.0 SHOW VARIABLES LIKE 'have%' ;畫面
查看預設引擎
> show variables like '%engine%'
修改預設引擎
修改my.cnf
default-storage-engine = myisam
重新啟動
修改表格引擎
如果我們的表格是 MyISAM ,想要更改為 InnoDB,則使用 alter的語法:
> ALTER TABLE 表格名 TYPE=InnoDB
新版的Mysql 語法
> ALTER TABLE 表格名 ENGINE=InnoDB
記憶體型
> ALTER TABLE tbl_name ENGINE = MEMORY
如果 MyISAM 原本有全文索引,則轉換會失敗,得先移除全索
> ALTER TABLE 表格名 DROP INDEX 索引名
至於 MyISAM 和 InnoDB 的優劣,相信很多文章,我只簡單結論一下:
屬性 | MyISAM | InnoDB |
速度 SELECT | 相似 | 相似 |
速度 UID | 快 | 極慢 * |
空間利用 | 好 | 可能 2 倍於 MyISAM |
記憶體 | 較好 | 較差 |
檔案 | 每個表是獨立檔案 | 全部表放在一個tablespace,由多個檔案組成 |
全索 | 可 | 不可 |
關聯** | 不可 | 可 |
交易Transaction | 較麻煩只可TABLE LOCK | 較易 可達 ROW LOCK,自動偵測死鎖 |
* 同事瑩光說時間大概差了18倍
參考資料
[1] https://dev.mysql.com/doc/refman/5.7/en/storage-engine-setting.html
原文 2009-12-26 00:39:08