MySQL如何改變表的存儲引擎方式
1.最簡單的方法是使用alter table語句
例如:
alter table tablename ENGINE = InnoDB;
上述方法可以適用于任何存儲引擎的轉(zhuǎn)換,但有一個問題,需要執(zhí)行很長時間,MySQL會按行將數(shù)據(jù)從原表復制到一張新的表中,在復制期間可能會消耗系統(tǒng)的所有I/O能力,同時原表上會加上鎖,所以,在繁忙的表上執(zhí)行操作要特別小心。
另外,如果轉(zhuǎn)換表的存儲引擎,將會失去和原引擎相關(guā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)
第三種技術(shù)綜合實現(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)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL報錯ERROR 1045 (28000): Access Denied
這篇文章主要介紹了如何在mac上重置MySQL root密碼的步驟,包括跳過權(quán)限驗證進入MySQL、更新密碼、恢復權(quán)限表、檢查用戶權(quán)限和驗證MySQL路徑,需要的朋友可以參考下2025-12-12
mysql初始化命令mysqld?--initialize參數(shù)說明小結(jié)
本文主要介紹了mysql初始化命令mysqld?--initialize參數(shù)說明小結(jié),文中通過圖表代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-08-08
MySQL5.7.14下載安裝圖文教程及MySQL數(shù)據(jù)庫語句入門大全
這篇文章主要介紹了MySQL5.7.14下載安裝詳細教程及MySQL數(shù)據(jù)庫語句入門大全的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-09-09
MySQL啟動報錯:InnoDB表空間丟失的問題排查與解決方案
在MySQL數(shù)據(jù)庫的日常運維中,InnoDB表空間丟失是一個較為常見的問題,本文將深入分析該問題的原因,并提供詳細的解決方法和預防措施,希望對大家有所幫助2025-07-07
解決mysql 1040錯誤Too many connections的方法
因為你的mysql安裝目錄下的my.ini中設定的并發(fā)連接數(shù)太少或者系統(tǒng)繁忙導致連接數(shù)被占滿2012-09-09
MySQL中int?(10)?和?int?(11)?的區(qū)別
這篇文章主要介紹了MySQL中int?(10)?和?int?(11)?的區(qū)別,根據(jù)mysql?中整數(shù)數(shù)據(jù)類型、不同類型的取值范圍、不同數(shù)據(jù)類型的默認顯示寬度展開對int的介紹,需要的朋友可以參考一下2022-01-01

