萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> MySQL數據庫MyISAM存儲引擎轉為Innodb

MySQL數據庫MyISAM存儲引擎轉為Innodb

由於自己創建表時不懂MySQL數據庫MyISAM和InnoDB存儲引擎區別,所以隨便創建了,但是使用時發現MyISAM存儲引擎滿足不了我的需求,所以要轉換成Innodb,下面我命令方式給大家演示一下。

之前公司的數據庫存儲引擎全部為MyISAM,數據量和訪問量都不是很大,所以一直都沒什麼問題。但是最近出現了MySQL數據表經常被鎖的情況,直接導致了用戶連接網站時超時而返回502,於是決定把存儲引擎轉為Innodb的,以解決MyISAM的表鎖問題。下面將操作步驟記錄一下。

核心代碼

修改表的存儲引擎:

 代碼如下 復制代碼

•alter table tablename type=InnoDB



1、導出centos數據庫的表結構

 代碼如下 復制代碼

1.mysqldump -d -uxxx -p centos > centos_table.sql

其中-d參數表示不導出數據,只導出表結構

2、替換centos_table.sql裡的MyISAM為INNODB

 代碼如下 復制代碼

1.sed -i 's/MyISAM/INNODB/g' centos_table.sql

3、新建數據庫centos_new,並導入表結構

 代碼如下 復制代碼

1.mysql > create database centos_new;
2.mysql -uroot -p centos_new < centos_table.sql

可以通過show table status來檢查表引擎是否為INNODB。

4、導出centos的數據

 代碼如下 復制代碼

1.mysqldump -t -uroot -p centos > centos_data.sql

其中-t參數表示只導數據,不導表結構
5、導入數據到centos_new

 代碼如下 復制代碼

1.mysql -uroot -p centos_new < centos_data.sql

最後如果你想把centos_new數據庫名更改為centos

MyISAM和InnoDB存儲引擎的比較

主要區別:

•MyISAM是非事務安全型的,而InnoDB是事務安全型的。
•MyISAM鎖的粒度是表級,而InnoDB支持行級鎖定。
•MyISAM支持全文類型索引,而InnoDB不支持全文索引。
•MyISAM相對簡單,所以在效率上要優於InnoDB,小型應用可以考慮使用MyISAM。
•MyISAM表是保存成文件的形式,在跨平台的數據轉移中使用MyISAM存儲會省去不少的麻煩。
•InnoDB表比MyISAM表更安全,可以在保證數據不會丟失的情況下,切換非事務表到事務表(alter table tablename type=innodb)。

應用場景:

•MyISAM管理非事務表。它提供高速存儲和檢索,以及全文搜索能力。如果應用中需要執行大量的SELECT查詢,那麼MyISAM是更好的選擇。
•InnoDB用於事務處理應用程序,具有眾多特性,包括ACID事務支持。如果應用中需要執行大量的INSERT或UPDATE操作,則應該使用InnoDB,這樣可以提高多用戶並發操作的性能。

copyright © 萬盛學電腦網 all rights reserved