MySQL資料庫MyISAM儲存引擎轉為Innodb

來源:互聯網
上載者:User

之前公司的資料庫儲存引擎全部為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,這樣可以提高多使用者並行作業的效能。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.