2016-11-19 5 views
3

私はphpサイトを介していくつかのMySQLデータベースに接続するブラウザアプリケーションを開発しています。これらのデータベースは、単一のAWS RDSインスタンスに設定されます。これらのデータベースをセットアップすると、私はさまざまなdbエンジンについてよく知られていませんでした。さまざまなタイプについて読んだ後、私はInnoDBを低いIOPS要求に対して使用し、MyISAMを高いIOPS要求に対して使用することを決めました。DBをMyISAMからInnoDBに変更する必要がありますか? (AWS通知)

Amazon Webサービスと言われます:

DBインスタンスのテスト-1は、InnoDBテーブルに移行されていないMyISAMテーブルが含まれてい

。これらのテーブルは、ポイントインタイムリストアを実行する能力に影響する可能性があります。これらのテーブルをInnoDBに変換することを検討してください。参考にしてください http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.BackingUpAndRestoringAmazonRDSInstances.html#Overview.BackupDeviceRestrictions

InnoDBを使用してMyISAMデータベースを再作成する必要がありますか?

+0

大規模なデータスループット要件の場合、MyISAMが高速であるという事実は、典型的なWebアプリケーションワークロードを実行するCRUDアプリケーションの場合、InnoDBの復元力が強く、機能セットが豊富であるためにはるかに優れています。 – Dai

答えて

5

InnoDBよりも速いMyISAMについての悩みは、2000年代半ばの現在のコードからのホールドオーバーです。

ほとんどのタイプのクエリでは、MyISAMはInnoDBよりも速くでなく、です。このブログのベンチマークを2007年から見てください。https://www.percona.com/blog/2007/01/08/innodb-vs-myisam-vs-falcon-benchmarks-part-1/

InnoDBは、これまでよりも優れていて、より速く、より信頼性が高くなっています。 MyISAMは開発されていません。

アップデート: MySQL 8.0では、システムテーブルでさえもInnoDBに変換されました。明らかに、MyISAMを段階的に廃止する意図があります。 MySQLの将来のバージョンでは非推奨となり、削除される予定です(ただし、今後数年間はそうは言えません)。

テーブルスキャンのようにMyISAMが高速になる可能性があるエッジケースがいくつかありました。しかし、あなたは本当にテーブルスキャンのためにあなたのデータベースを最適化すべきではありません。 に正しいインデックスを作成して、テーブルスキャンを回避する必要があります。

アップデート2018年2月:のMyISAMだけでメルトダウンCPUのバグのため、最近の修正からさらに40%のパフォーマンスヒットを負ったが、これは、テーブル・スキャンに影響を与えます。メルトダウンの脆弱性を修正する責任があり、システムにパッチを当てているとすれば、MyISAMは現在パフォーマンス上の責任になります。 https://mariadb.org/myisam-table-scan-performance-kpti/

しかし、どのような切り札それはInnoDBはACIDの動作をサポートし、MyISAMテーブルが任意の ACIDの4つの資質をサポートしていないという事実である:現在のパッチでのMyISAMパフォーマンスのテストを参照してください。 MyISAM versus InnoDB

ACIDのサポートに失敗することは単なる学問的な点ではありません。これは、更新中のテーブルロックやバックアップ中のグローバルロックなどに変換されます。

関連する問題