データベースがデータを返し、phpスクリプトがデータのフェッチを開始する瞬間まで、phpスクリプトがクエリを実行するため、正確に何が起こっているのかを知りたいです。
理論的には、巨大なテーブルを備えたPostgreデータベースがあり、20列以上のレコードが1,000万/2,000万件あり、データベースのすべての行をたとえばファイルに配置するように要求するphpスクリプトがあります。
私の知識は次のとおりです。
- phpスクリプトは、SQLクエリを使用してpg_queryコマンドを実行します
- postgresphpドライバー/拡張クエリを介してデータベースに渡されます
- データベースが作業を行い、結果をドライバーに返します
- php postgresドライバーは、結果をサーバーのRAMメモリに保存し、結果を参照するphpスクリプトにリソースIDを返します。
- pg_fetch_rowはRAMメモリからレコードを読み取ります
私は上記の作業を行っているphpコードの可能な限り最高の最適化を達成しようとしています。
質問は次のとおりです。
- 私の知識は正しいですか?何かが足りない場合、または私がいくつかのステップについて正しくない場合は、私を修正してください。
- データベースの結果に割り当てられているRAMメモリの量を知るにはどうすればよいですか?サーバーに十分なメモリがない場合、これは重要になる可能性があります。
- 単一の行をフェッチしてファイルに保存し、行がある限りこれらの2つの手順を繰り返すことができるので、phpスクリプトに必要なメモリを最小限に抑えることができますが、リソースによって使用されるメモリにどのように影響しますか?
前もって感謝します。