2010-11-12 33 views
1

所以我是數據庫MySql和數據庫配置期間的新手。我最初使用默認的Innodb引擎部署了MySQl,並通過MySQL工作臺創建了一個帶有單個表的數據庫。瞭解MySQL引擎與數據庫類型?

但是,我決定更改爲MyISAM。如果我將默認引擎更改爲MyISAM,我做了更改以使用MyISAM,還是必須重新創建數據庫,並更改了默認引擎設置?

基本上,我創建了一個Innodb默認引擎類型的數據庫,並且想爲我的項目運行一個MyISAM DB。

任何幫助或澄清是非常感謝。

回答

1

引擎是每個表,而不是每個數據庫。

更改默認存儲引擎之前創建的任何表都需要轉換爲新類型。

除非您手動更改舊的表格,否則只有新表格將使用新的默認類型。

您可以更改使用

ALTER TABLE TableName ENGINE=MyISAM 
+0

那麼MySQL的另一個令人困惑的部分是,我一直將數據庫視爲:Schema - > Database - > table;但是,使用MySQL就像Schema == Database一樣。那麼你是說你可以有一個Innodb表和一個MyISAM表的數據庫「X」嗎? – pghtech 2010-11-12 16:14:31

+0

是的,你可以。我之前在大多數表和MyISAM中使用InnoDB的地方都有不同的要求。這兩種表格都在同一個數據庫中。 – 2010-11-12 16:22:37

+1

最重要的是,如果需要,可以在單個查詢中使用所有這些不同的表(引擎)類型。針對InnoDB表加入MyISAM表,並將結果存儲在HEAP臨時表中 - MySQL不關心,只要查詢正確即可。唯一需要擔心底層表類型的主要時間是在事務中,因爲某些類型(如MyISAM)不支持它們。 – 2010-11-12 20:42:05

2

可以使用

ALTER TABLE MyTable ENGINE=MYISAM 

注意,這將會給你,如果你定義表上的所有外鍵的錯誤信息更改表的類型的MyISAM。另外,如果表很大,可能需要一段時間,因爲MySQL所做的是創建一個新的選定類型的表,將舊錶中的所有數據複製到它中,然後刪除舊錶。

編輯:如果您更改了默認引擎,那麼您尚未更改任何已創建表的engime。你必須明確地改變這些表格。

0

需要更改您在爲了創造讓它在MyISAM數據運行的表的存儲引擎。

ALTER TABLE MyTableName ENGINE = MYISAM;