MySQL如何改變表的存儲引擎方式
1.最簡單的方法是使用alter table語句
例如:
alter table tablename ENGINE = InnoDB;
上述方法可以適用于任何存儲引擎的轉(zhuǎn)換,但有一個問題,需要執(zhí)行很長時間,MySQL會按行將數(shù)據(jù)從原表復制到一張新的表中,在復制期間可能會消耗系統(tǒng)的所有I/O能力,同時原表上會加上鎖,所以,在繁忙的表上執(zhí)行操作要特別小心。
另外,如果轉(zhuǎn)換表的存儲引擎,將會失去和原引擎相關的所有特性
例如,將一張InnoDB表轉(zhuǎn)換為MyISAM,然后再轉(zhuǎn)換回InnoDB,原InnoDB表上的所有的外健將丟失。
2.導入導出
為了更好的控制轉(zhuǎn)換的過程,可以使用mysqldump工具將數(shù)據(jù)導出到文件,然后修改文件中create table語句的存儲引擎選項,注意同時修改表名,因為同一個數(shù)據(jù)庫中不能存在相同的表名,即使它們使用的是不同的存儲引擎。
同時要注意mysqldump會默認自動的在create table 語句前加上drop table語句,不注意這一點可能會導致數(shù)據(jù)丟失。
3.創(chuàng)建與查詢(create 和 select)
第三種技術綜合實現(xiàn)了第一種的高效和第二種的安全,不需要導出整張表的數(shù)據(jù),而是先創(chuàng)建一個新的存儲引擎的表,然后利用insert 和select 語法來導入數(shù)據(jù)
create table innodb_table like myisam_table; alter table innodb_table engine = InnoDB; insert into innodb_table select * from myisam_table;
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
安裝MySQL 5后無法啟動(不能Start service)解決方法小結(jié)
有時候我們在安裝mysql軟件時,卻無法啟動,或服務器安全設置以后都可能導致mysql無法運行2012-07-07MySQL中日期和時間戳轉(zhuǎn)換之字符到DATE和TIMESTAMP的相互轉(zhuǎn)換
這篇文章主要介紹了MySQL中日期和時間戳轉(zhuǎn)換之字符到DATE和TIMESTAMP相互轉(zhuǎn)換的相關資料,包括字符串與日期/時間類型之間的轉(zhuǎn)換,日期/時間類型之間的轉(zhuǎn)換,UNIX_TIMESTAMP與日期/時間類型之間的轉(zhuǎn)換以及時區(qū)轉(zhuǎn)換,需要的朋友可以參考下2024-12-12