PHPがクエリ結果を保存するために大量のメモリを使用するのはなぜですか

マーク

オーバーヘッドを回避するために直接を使用Laravel 8してMySQL 8テーブルに対してクエリを実行するために使用しますが、とにかく多くのメモリを消費しています。例を示すために、次のクエリを実行して、正確に300000個の要素を選択しますquery builderEloquent

私のコードは次のようになります:

$before = memory_get_usage();
$q_coords = DB::table('coords')->selectRaw('alt, lat, lng, id')
    ->where('active', 1)->take(300000)->get();

$after = memory_get_usage();
echo ($after - $before);

169760384と表示されますこれは、間違えない限り169MBのようなものを意味します。
クエリで4 x 8バイト(32バイト)のようなものを表す2つのfloat2つのbigIntのみを要求したため、私には多くのように見えます
そして..32x 300 000レコード〜= 9600000(ほぼ10MB)。

どうしてそんなに多くのメモリを使うことができるのでしょうか?びっくりしました。

編集

私もPDO直接使ってみましたが、同じ結果です。

$query = DB::connection()->getPdo()->query("select alt, lat, lng, id from coords WHERE active = 1 LIMIT 300000");
$q_coords = $query->fetchAll();
ダビデ

PHPでは、各変数は特定のデータ構造で処理されdynamic typinggarbage collectionなどを許可します。
ここで(かなり古いがまだ問題ない)記事を見ることができます:リンク

また、たとえば文字列と見なされる配列キーを格納するためにバケットが必要なため、配列にはより具体的な処理があることがわかります。

つまり、(記事によると)配列の要素を格納するために使用されるデータは約144バイトあるということです。
さて、私はあなたの結果を正確に説明することはできませんが、あなたの場合は次のようなものがあると言うことができます:

300 000 * 144 * 4 = 172 800 000

どの意味300000行4つの変数144バイトの変数で。

ご覧のとおり、PHP 7で行われた改善やその他の要因を計算で考慮していなくても、得られたものからそれほど遠くはありません...

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

PHPがクエリ結果を保存するために大量のメモリを使用するのはなぜですか

分類Dev

PHPがクエリ結果を保存するために大量のメモリを使用するのはなぜですか

分類Dev

PHPがクエリ結果を保存するために大量のメモリを使用するのはなぜですか

分類Dev

PHPがクエリ結果を保存するために大量のメモリを使用するのはなぜですか

分類Dev

PHPがクエリ結果を保存するために大量のメモリを使用するのはなぜですか

分類Dev

メモリ使用量のピークを見つけるために異なる結果が得られるのはなぜですか?

分類Dev

read.csv()を使用するときにRが大量のメモリを使用するのはなぜですか?

分類Dev

このクエリを使用すると、結果が空になるのはなぜですか

分類Dev

DockerがVIRTメモリを大量に消費するのはなぜですか?

分類Dev

Pythonの「shelve」を「dict」に変換するとメモリが大量に使用されるのはなぜですか?

分類Dev

カスタムスタッククラスが大量のメモリを使用するのはなぜですか?

分類Dev

C ++の配列と比較して、クラスが大量のメモリを使用するのはなぜですか

分類Dev

クエリが結果を生成するのに非常に時間がかかるのはなぜですか

分類Dev

このクエリが結果を複製するのはなぜですか?

分類Dev

mysqlクエリが異なる結果を返すのはなぜですか?

分類Dev

UIImageが大量のメモリを消費するのはなぜですか?

分類Dev

Perlで正規表現の結果を保存するために括弧が必要なのはなぜですか?

分類Dev

サブクエリを使用すると結果が重複するのはなぜですか?

分類Dev

SPARQLを使用してクエリ結果にURLが表示されるのはなぜですか?

分類Dev

Reactアプリが大量のメモリを使用するのはなぜですか?

分類Dev

クエリが間違った結果を返すのはなぜですか?

分類Dev

クエリが多くの結果に戻るのはなぜですか?

分類Dev

このJavaプログラムがメモリを大量に消費するのはなぜですか?

分類Dev

このコードが大量のメモリを使用しているのはなぜですか?

分類Dev

サブクエリを使用してクエリ結果を保存するための最良の方法は何ですか?

分類Dev

UIGraphicsImageRendererで画像を描画するときに、なぜ大量のメモリを使用するのですか?

分類Dev

UIGraphicsImageRendererで画像を描画するときに、なぜ大量のメモリを使用するのですか?

分類Dev

プログラムが大量のメモリを使用して実行されるのはなぜですか?

分類Dev

ブラウザが大量のメモリを使用しているのはなぜですか?

Related 関連記事

  1. 1

    PHPがクエリ結果を保存するために大量のメモリを使用するのはなぜですか

  2. 2

    PHPがクエリ結果を保存するために大量のメモリを使用するのはなぜですか

  3. 3

    PHPがクエリ結果を保存するために大量のメモリを使用するのはなぜですか

  4. 4

    PHPがクエリ結果を保存するために大量のメモリを使用するのはなぜですか

  5. 5

    PHPがクエリ結果を保存するために大量のメモリを使用するのはなぜですか

  6. 6

    メモリ使用量のピークを見つけるために異なる結果が得られるのはなぜですか?

  7. 7

    read.csv()を使用するときにRが大量のメモリを使用するのはなぜですか?

  8. 8

    このクエリを使用すると、結果が空になるのはなぜですか

  9. 9

    DockerがVIRTメモリを大量に消費するのはなぜですか?

  10. 10

    Pythonの「shelve」を「dict」に変換するとメモリが大量に使用されるのはなぜですか?

  11. 11

    カスタムスタッククラスが大量のメモリを使用するのはなぜですか?

  12. 12

    C ++の配列と比較して、クラスが大量のメモリを使用するのはなぜですか

  13. 13

    クエリが結果を生成するのに非常に時間がかかるのはなぜですか

  14. 14

    このクエリが結果を複製するのはなぜですか?

  15. 15

    mysqlクエリが異なる結果を返すのはなぜですか?

  16. 16

    UIImageが大量のメモリを消費するのはなぜですか?

  17. 17

    Perlで正規表現の結果を保存するために括弧が必要なのはなぜですか?

  18. 18

    サブクエリを使用すると結果が重複するのはなぜですか?

  19. 19

    SPARQLを使用してクエリ結果にURLが表示されるのはなぜですか?

  20. 20

    Reactアプリが大量のメモリを使用するのはなぜですか?

  21. 21

    クエリが間違った結果を返すのはなぜですか?

  22. 22

    クエリが多くの結果に戻るのはなぜですか?

  23. 23

    このJavaプログラムがメモリを大量に消費するのはなぜですか?

  24. 24

    このコードが大量のメモリを使用しているのはなぜですか?

  25. 25

    サブクエリを使用してクエリ結果を保存するための最良の方法は何ですか?

  26. 26

    UIGraphicsImageRendererで画像を描画するときに、なぜ大量のメモリを使用するのですか?

  27. 27

    UIGraphicsImageRendererで画像を描画するときに、なぜ大量のメモリを使用するのですか?

  28. 28

    プログラムが大量のメモリを使用して実行されるのはなぜですか?

  29. 29

    ブラウザが大量のメモリを使用しているのはなぜですか?

ホットタグ

アーカイブ