1

私のデータベースが最初に作成されたとき、それはすべて MyISAM として作成されました (特別な理由はありません) - 時間の経過とともに新しいテーブルが追加され、これが PHPMyAdmin のデフォルトのように見えるため、それらはすべて InnoDB になりました。

私が認識している問題が発生したことはありませんが、特にアプリケーションとデータベースがビジー状態になるため、パフォーマンスの最適化について本当に考え始める必要があるため、それらをすべて 1 つのタイプに変更して InnoDB を選択したいと考えています。変更などを行いますが、私の質問は、もしあれば、フロントエンドアプリケーションにどのような影響を与える可能性がありますか? このアプリケーションはカスタム コードの PHP アプリケーションであり、基本的には通常の CRUD 操作を行うだけなので、特別なことや異常なことは何もありません。

移行後に何に注意する必要がありますか? また、結果としてアプリケーションで動作しなくなったり、変更が必要になったりする可能性があるものはありますか? 特に最高のパフォーマンスを得るために InnoDB をカスタマイズする必要があることを理解しており、それを検討して喜んでいますが、最初にそれらをすべて変更し、数日間実行してから次の作業に進みたいと思っています。

ありがとう

4

1 に答える 1

2

このようなアーキテクチャの変更と同様に、それがアプリケーションにどのように影響するかを確認する唯一の方法は、それをテストすることです。つまり、実稼働Webサイト用ではなく、テストマシン上にあります。

MyISAMからInnoDBに切り替える際の注意点はごくわずかです。もちろん、InnoDBに合わせて調整する必要があります。いくつかのヒントについては、たとえば私のプレゼンテーションhttp://www.slideshare.net/billkarwin/mysql-55-guide-to-innodb-statusを参照してください。

また、MyISAM key_buffer_size構成変数に大量のRAMを割り当てた場合は、すべてをInnoDBに切り替えると、RAMは不要になることを覚えておいてください。使用されなくなったこのバッファに4GB以上が割り当てられているサイトをかなり多く監査しました。

アプリケーションで行う必要のある変更については、いいえ、必要はありません。InnoDBは、いくつかのエキゾチックなケースを除いて、MyISAMと同じSQLデータ型とクエリセマンティクスをサポートしています。

たとえば、MyISAMは、auto-inc列が2番目である複合主キーをサポートします。InnoDBでは、auto-inc列がPKの最初の列である必要があります。

于 2013-01-21T20:28:05.233 に答える