Mysql 存儲引擎

mysql存儲引擎:mysql

MySQL服務器採用了模塊化風格,各部分之間保持相對獨立,尤爲體如今存儲架構上。存儲引擎負責管理數據存儲,以及MySQL的索引管理。經過定義的API,MySQL服務器可以與存儲引擎進行通訊。目前使用最多的是MyISAM和InnoDB。InnoDB被Oracle收購後,MySQL自行開發的新存儲引擎Falcon將在MySQL6.0版本引進。linux

MyISAM引擎是一種非事務性的引擎,提供高速存儲和檢索,以及全文搜索能力,適合數據倉庫等查詢頻繁的應用。MyISAM中,一個table實際保存爲三個文件,.frm存儲表定義,.MYD存儲數據,.MYI存儲索引。sql

InnoDB則是一種支持事務的引擎。因此的數據存儲在一個或者多個數據文件中,支持相似於Oracle的鎖機制。通常在OLTP(聯機事務處理系統(OLTP)也稱爲面向交易的處理系統,其基本特徵是顧客的原始數據能夠當即傳送到計算中心進行處理,並在很短的時間內給出處理結果)應用中使用較普遍。若是沒有指定InnoDB配置選項,MySQL將在MySQL數據目錄下建立一個名爲ibdata1的自動擴展數據文件,以及兩個名爲ib_logfile0和ib_logfile1的日誌文件。數據庫

建立table時能夠經過engine關鍵字指定使用的存儲引擎,若是省略則使用系統默認的存儲引擎:服務器

CREATE TABLE t (i INT) ENGINE = MYISAM;架構

查看系統中支持的存儲引擎類型:app

1 mysql> show engines;
| Engine | Support | Comment || MyISAM | YES | Default engine as of MySQL 3.23 with      greatperformance |
2 | MEMORY | YES | Hash based, stored in memory, useful for temporarytables |
3 | InnoDB | DEFAULT | Supports transactions, row-level locking, andforeign keys |
4 | BerkeleyDB | NO | Supports transactions and page-level locking|
5 | BLACKHOLE | NO | /dev/null storage engine (anything you write toit disappears) |
6 | EXAMPLE | NO | Example storage engine |
7 | ARCHIVE | YES | Archive storage engine |
8 | CSV | NO | CSV storage engine |
9 | ndbcluster | NO | Clustered, fault-tolerant, memory-based tables|
10 | FEDERATED | NO | Federated MySQL storage engine |
11 | MRG_MYISAM | YES | Collection of identical MyISAM tables |
12 | ISAM | NO | Obsolete storage engine |12 rows in set (0.00 sec)

標準安裝程序中只提供部分引擎的支持,若是須要使用其餘的存儲引擎,須要使用源代碼加不一樣的參數從新編譯。其中DEFAULT代表系統的默認存儲引擎,能夠經過修改配置參數來變動:ide

default-storage-engine=MyISAM模塊化

查看某個存儲引擎的具體信息spa

1 mysql> show engine InnoDB status\G;

通常安裝系統默認是INNODB

default-storage-engine=INNODB

  1.能夠在啓動數據庫服務器時在命令行後面加上–default-storage-engine或–default-table-type選項。
  2.更靈活的方式是在隨MySQL服務器發佈同時提供的MySQL客戶端時指定使用的存儲引擎。最直接的方式是在建立表時指定存儲引擎的類型,向下面這樣:

1 CREATE TABLE mytable (id int, titlechar(20)) ENGINE = INNODB

修改表的存儲引擎:

1 ALTER TABLE engineTest ENGINE = INNODB;

修改默認存儲引擎:

在mysql配置文件(linux下爲/etc/my.cnf),在mysqld後面增長default-storage-engine=INNODB便可。

可是若是表創建的時候是MyISAM,要更改整個數據庫表的存儲引擎,通常要一個表一個表的修改,比較繁瑣,能夠採用先把數據庫導出,獲得SQL,把MyISAM修改爲INNODB,再導入的方式。

相關文章
相關標籤/搜索