簡體   English   中英

從MyISAM將現有表移至InnoDB,哪一個更快?

[英]Move existing tables to InnoDB from MyISAM and which one is faster?

一個數據庫已經有多達25-30個表,並且都是MyISAM 這些表中的大多數相互關聯,這意味着許多查詢在ID上使用聯接並檢索數據。

其中一張表包含7到1千萬條記錄,如果我想執行搜索,更新或什至檢索所有數據,它會變得很慢。 現在,我向老板提出了一個解決方案,說將表轉換為InnoDB可能會帶來更好的性能。

我還解釋了InnoDB的好處:

  1. 由於我們無論如何都會在鍵上連接多個表並且它們是相關的,因此最好使用外鍵並具有關系數據庫,這將避免使用Orphan Rows 我在其中一張大表中發現了大約10-15k的孤立行,因此不得不手動將其刪除。

  2. 為了支持事務,我們會不時執行大更新,如果其中一個失敗,則必須用備份的表替換整個表,然后再次運行更新以確保所有查詢都已執行。 如果查詢2失敗,我們可以使用InnoDB恢復查詢1的所有更改。

現在,我從老板那里得到的答復是,我需要證明InnoDB的運行速度將比MyISAM快。 我的問題是,以上兩件事是否會通過消除孤立行來提高應用程序本身的速度?

總的來說,MyISAM比InnoDB快嗎?

注意:使用MySQL 5.5

您還應該向老板提及,對於同時具有讀/寫負載的大型表,InnoDB可能帶來的最大好處是-您獲得行級鎖定而不是表級鎖定。 如果您看到大量等待釋放表鎖的情況,這對於應用程序可能會帶來巨大的性能優勢。

當然,說服老板的最好方法就是證明這一點。 制作大表的副本並將其放在測試數據庫中。 在MyISAM中創建一個數據版本,在InnoDB中創建一個數據版本。 然后使用近似於當前數據庫讀/寫活動的負載混合對其進行負載測試。 自己找出是否更好。

剛剛更新了您對5.5的評論。 在5.5版本中,使用InnoDB毫無疑問。 在過去的幾年中,MyISAM引擎基本上沒有任何改善,並且開發工作圍繞InnoDB。 InnoDB是未來首選的MySQL引擎。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM