mysql myisam轉innodb的2種方法

2022-08-01 11:39:09 字數 1916 閱讀 8599

mysql中的myisam和innodb有什麼區別,在這兒就不哆嗦了。乙個好比便利店,乙個好比大型購物中心,他們是為了適應不同的場合而存在的。當流量比較小,我們可以用myisam,當流量大時,我們可能會把資料庫中的,全部表或者部分表轉換成innodb。下面說2種切實可行的方法來完成這種轉換。

一,用alter table來實現。

mysql> alter table merchant type=innodb;  

query ok, 2806 rows affected, 1 warning (0.33 sec)  

records: 2806  duplicates: 0  warnings: 0  

轉換方法很簡單。myisam在磁碟上的儲存有三個檔案,.myd,.myi,.frm檔案,轉換後這三個檔案會不會消失呢?innodb中共享表空間或者獨立表空間會不增加呢?

[root@krlcgcms01 test]# ls |grep merhcant|xargs -i du {}  

12       merchant.frm  

690       merchant.myd  

144       merchant.myi  

上面是轉換前的檔案大小,轉換後.myd,.myi消失了。而innodb的共享表空間增加8m.檢視

複製列印

?[root@krlcgcms01 data]# ls |grep ibdata |xargs -i du -m {}  

10      ibdata1   //轉換前的

[root@krlcgcms01 data]# ls |grep ibdata |xargs -i du -m {}  

18      ibdata1   //轉換後的

mysql表在磁碟上的儲存方式的轉換,並不要額外的去轉換。這樣比較方便。innodb在這裡我設定的是共享表空間,這次轉換的表的大小不超過1m,但共享表空間自動增加了8m,所以共享表空間的大小,並不是按照表的大小來增加的,是有基數的。我們可以通過innodb_autoextend_increment來設定

二,匯出資料,重新建表

1,匯出表結構以及資料,刪除老表,重新建表

檢視複製列印?

//方法1,我們可以把把建立這個表的sql拷貝出來,把engine=myisam換成,engine=innodb

mysql> show create table merchant\g;  

*************************** 1. row ***************************  

table: merchant  

create table: create table `merchant` (  

`btid` int(5) unsigned zerofill not null auto_increment,  

`btname` varchar(100) not null,  

`btnote` text,  

primary key  (`btid`),  

unique key `btname` (`btname`)  

) engine=myisam default charset=utf8  

1 row in set (0.00 sec)  

//方法2,直接匯出表結構,在檔案裡面替換乙個myisam

mysqldump -udba -p -d test merchant >/tmp/test/mytest/merchant.sql;  

2,匯出資料

mysqldump -udba -p --no-create-info test merchant >/tmp/test/mytest/merchant_data.sql;  

3,刪除老表,重新建表,匯入資料,這個就不說了,linux

簡單的mysql備份和匯入,以及檔案的備份和匯入

mysql myisam轉innodb的2種方法

mysql中的myisam和innodb有什麼區別。乙個好比便利店,乙個好比大型購物中心,他們是為了適應不同的場合而存在的。當流量比較小,我們可以用myisam,當流量大時,我們可能會把資料庫中的,全部表或者部分表轉換成innodb。下面說2種切實可行的方法來完成這種轉換。一,用alter tabl...

mysql MYISAM表批量壓縮

關於對myisam表的壓縮,可以使用myisampack和myisamchk完成 myisampack完之後必須進行myisamchk才能使用壓縮後的表,而且是唯讀的 其詳細地用法可以參考官方文件 這兩個操作需要謹慎使用,在壓縮之前需要確認mysqld已關閉或者要壓縮的表不會有其他的sql操作 而且...

mysql MyISAM表的儲存格式

myisam支援三種不同的儲存格式 固定格式,動態格式,已壓縮格式 只能使用myisampack工具來建立 靜態表特徵 固定格式 靜態格式是myisam表的預設儲存格式。當表不包含變數長度列 varchar,blob,或text 時,使用這個格式。每一行用固定位元組數儲存。靜態格式是三種儲存格式中最...