ホームページ >バックエンド開発 >PHPチュートリアル >DataReaderの使い方:データベースのソートの比較と利用条件を詳しく解説
MySQL サーバーと PHP サーバーの両方が最適な方法で構成されていると仮定すると、システムのスケーラビリティ (Scalability) とユーザーが認識するパフォーマンス (User-perceived Performance) が私たちが追求する主な目標です。実際の動作では、MYSQL のデータは HASH テーブルや BTREE などのメモリに保存されることが多く、同時に INDEX は多くのアプリケーションで事前ソートを実行しています。最初の選択。
PHP には MySQL と比較して以下の利点があります:
1. Web サイト全体のスケーラビリティと全体的なパフォーマンスを考慮すると、アプリケーション層 (PHP) でソートすることで明らかにデータベースの負荷が軽減され、Web サイト全体のスケーラビリティが向上します。実際、データベース内でのソートのコストは非常に高く、メモリと CPU を消費します。多くの同時ソートがある場合、DB は簡単にボトルネックに達します。
2. アプリケーション層(PHP)とMYSQLの間にデータ中間層があり、それが適切に活用されていれば、PHPの方がメリットが大きくなります。
3. PHP のメモリ内データ構造は、特定のアプリケーション向けに特別に設計されており、データベースよりも簡潔で効率的です。
4. PHP はデータの災害復旧の問題を考慮する必要がなく、この部分の操作損失を削減できます。 PHP には存在しない テーブルロックの問題
6. MySQL ではソート、リクエスト、結果の返却もネットワーク接続を介して行う必要がありますが、PHP ではソート後に直接返すことができるため、ネットワーク IO が削減されます。
実行速度に関しては、アプリケーションの設計に問題があり、不要なネットワーク IO が大量に発生しない限り、大きな差は発生しないはずです。また、アプリケーション層は PHP のキャッシュ設定に注意する必要があります。これを超えると内部エラーが報告されるため、アプリケーションに応じてキャッシュを評価または調整する必要があります。具体的な選択は、特定のアプリケーションによって異なります。
PHP でのソートがより良い状況をいくつか挙げてください:
1. データソースが MySQL にない、ハードディスク、メモリ、またはネットワークからのリクエストがある
2. データが MySQL に存在し、量が大きくない、そして対応するインデックスがありません このとき、PHP でデータを取り出して並べ替えた方が速いです
3. データソースは複数の MySQL サーバーから来ます このとき、複数の MySQL からデータを取り出した方が速いです。そして、それを PHP で並べ替えます
4. MySQL に加えて、ハードディスク、メモリ、ネットワークからのリクエストなど、他のデータ ソースもあります。現時点では、これらのデータを MySQL に保存するのは適切ではありません。次に、それらを並べ替えます。
MySQL で並べ替える必要があるいくつかの例をリストします。 1. MySQL にすでに存在するこの並べ替えられたインデックス
2. たとえば、MySQL 内のデータの量が多く、結果セットに必要なサブセットは非常に小さいです。 , 1,000,000 行のデータ、TOP 10 を取る;
3. 1 つのソートと複数の呼び出しの場合、さまざまなサービスに提供できる統計集計の場合は、MySQL でのソートが推奨されます。さらに、ディープ データ マイニングの場合、通常のアプローチでは、アプリケーション層での並べ替えなどの複雑な操作を完了し、その結果を MySQL に保存して、何度でも簡単に使用できるようにします。
4. データソースがどこから来たとしても、データ量が一定の規模に達すると、メモリ/キャッシュが占有されるため、PHP での並べ替えには適さなくなります。このとき、データはコピー、インポート、または実行されます。 MySQL に保存され、INDEX で最適化される方が PHP よりも優れています。ただし、そのような操作は Java または C++ で処理する方がよいでしょう。 大規模なデータセットの集計や要約など、一部のデータでは、クライアント側での並べ替えの方が利益と損失を上回ります。もちろん、検索エンジンと同様のアイデアを使用して、同様のアプリケーション状況を解決することもできます。
ウェブサイトの全体的な検討には、マンパワーとコストの考慮も含める必要があります。 Web サイトのサイズや負荷が小さく、人手が限られている場合 (人員や機能が制限される可能性があります)、アプリケーション層 (PHP) でのソートには多くの開発とデバッグ作業が必要となり、時間と時間がかかります。損失する価値はありません。DB で処理するほうが簡単で高速です。大規模な Web サイトの場合、電気代とサーバーのコストは非常に高くなります。システム アーキテクチャを慎重に計画することで、現時点でアプリケーション層 (PHP) が可能であれば、コストを大幅に節約できます。ビジネス ニーズに合わせて整理し、アプリケーション層で実行してみてください。
PHP および MySQL の実行ソートに関する関連知識は以上です。この紹介が役立つことを願っています。
以上、DataReaderを使ったデータベースのソート比較と、DataReaderの使い方を含めた利用条件の詳細な説明を紹介しましたので、PHPチュートリアルに興味のある方の参考になれば幸いです。