この記事では、PHP でのファイルの読み書きとデータベースの読み書きの効率の比較を紹介します。詳しく知りたい人は参考にしてください。
テストプログラムは以下のとおりです。
//説明1: データベース読み取りステートメントはシンプルパケット関数を2回呼び出しているため、読み取りファイルも2回連続の呼び出しに変更されます。これは最初の呼び出しです。 、一意のインデックスを持ちます。
コードは次のとおりです | コードをコピーします |
///命令 2: 4K データで 1 回、再形成されたデータで 1 回の計 2 回テストします set_time_limit(0); function fnGet($filename ) function fnGetContent($filename) $begin=fnGetMicroTime(); $begin=fnGetMicroTime(); $dbcon->mydb_free_results(); fnWriteCache('test.txt',$content); echo 'ファイルテスト結果を直接読み取ります: //---- ------ ------------------------ $begin=fnGetMicroTime(); 4Kサイズデータのクエリ結果: fetch_row 100000回: 16.737720012665秒 fetch_array 100000回: 16.661195993423秒 fetch_object 100000回: 16 .77506589 8895 秒 ファイルの直接読み取りテスト結果: file_get_contents の直接読み取り 100000 回時間: 5.4631857872009 秒 fopen 直接読み取り 100000 回 時間: 11.463611125946 秒 fetch_row 100000 回 時間: 12.812072038651 秒 fetch_array 1 00000回 時間: 12.667390108109秒 fetch_object 100000回 時間: 12.988099098206秒 ファイル直接読み取りテスト結果: file_get_contents 直接読み取り 100000 回 時間: 5.6616430282593 秒 fopen 直接読み取り 100000 回 時間: 11.542816877365 秒 1. ファイルを直接読み取る データベースクエリより効率的 1この記事には接続時間と切断時間は含まれていません。 2. 一度に読み取られるコンテンツが大きいほど、ファイルを直接読み取ることの利点はより明らかです (ファイルの読み取りにかかる時間はわずかに増加します。これは、ファイル ストレージの継続性とクラスター サイズに関係します)。 Tianyuan と同じ 逆のことが予想されます。これは、MYSQL に大きなファイルを読み取るための追加操作がある可能性があることを示しています (単純な代入変換であれば、時間は 2 回近く 30% 増加します)。 3. テストせずにファイルを書き込んだり INSERT したりすると、データベースの効率が悪化するだけであると推測できます。 4. 小さな設定ファイルがデータベース機能を使用する必要がない場合は、別のファイルに保存する方が適しています。大きなファイルを保存する方が便利です。ファイル内の写真や音楽などの場合は、パスやサムネイルなどのインデックス情報のみをデータベースに入れる方が合理的です。 5. PHP 上でファイルを読み込むだけであれば、fopen や fclose よりも file_get_contents の方が効率的であり、この関数の存在を判断する時間を除けば約 3 秒かかります。 6. fetch_row と fetch_object は fetch_array から変換する必要があります。Tianyuan は PHP のソース コードを見ていませんが、これはインターネットで言われていることに反するようです。 。 |