3


3

PHPを使用してクエリからMySql結果セットサイズを取得する

クエリを実行するときに「結果」セットのサイズを取得することは可能ですか?

適切なMySql cache_limit(MB)を設定する必要があるため、いくつかのクエリを試していますが、キャッシュ設定を微調整するために` result`セットのサイズを知る必要があります。

クエリ(または結果)のサイズを測定するとき、 `query_cache_limit`は正確に何をしますか…​

どんな助けにも感謝します!

ありがとう

3 Answer


4


mysqlサーバーからphpプロセスに送信されるデータのサイズを測定するには、いくつかの方法があります。

純粋なSQL

クエリを実行し、その直後に「SHOW SESSION STATUS」を実行します。 送信および受信バイトを含むいくつかの統計を取得します。

Bytes_received  191
Bytes_sent      120

「SHOW SESSION STATUS」クエリのみからバイトを減算すると、正確な値が得られます。

mysqlnd

PHP 5.3は、「MySQL Native Driver」を提供します。これにより、接続をデバッグするための優れたオプションが提供されます。

クエリを実行してから、 `mysqli_get_connection_stats`を呼び出します。 ネットワーク統計も返します:

Array
(
    [bytes_sent] => 43
    [bytes_received] => 80
    ...

ここではmysqliとmysqlndを使用する必要がありますが、純粋なSQLソリューションと同様に、より正確な数値が得られます。


2


おおよその見積もりとして、あなたは試すことができます


or

echo strlen(serialize(mysql_fetch_assoc($ result)));


0


おそらく前後でmemory_get_usageを使用するPetahの方法が最も簡単な方法だと思います。 より正確な結果を得るには、 `mb_strlen`を使用できますが、結果の各行と各行の各フィールドをループして、合計を合計する必要があります。 また、正しいエンコーディングを使用する必要があります。