在进行查询时是否可以获得result
- 的大小?
我需要设置一个合适的MySql cache_limit
(MB),因此我正在尝试一些查询,但我需要知道result
的大小 - 用于微调我的缓存配置
query_cache_limit
在衡量查询(或结果)的大小时到底做了什么......
任何帮助表示赞赏!
由于
答案 0 :(得分:4)
有几种方法可以衡量从mysql服务器发送到php进程的数据大小:
执行查询并在其后直接执行SHOW SESSION STATUS
。您将获得多个统计信息,包括发送和接收的字节:
Bytes_received 191
Bytes_sent 120
仅从SHOW SESSION STATUS
查询中减去字节,并且您具有确切的值。
PHP 5.3提供了“MySQL本机驱动程序”,它为您提供了一些调试连接的不错选项。
进行查询,然后致电mysqli_get_connection_stats
。它也会返回网络统计信息:
Array
(
[bytes_sent] => 43
[bytes_received] => 80
...
您需要在这里使用mysqli和mysqlnd,但与纯SQL解决方案一样,您可以获得更准确的数字。
答案 1 :(得分:2)
粗略估计你可以试试
<?php
// This is only an example, the numbers below will
// differ depending on your system
echo memory_get_usage() . "\n"; // 36640
$a = mysql_fetch_assoc($result);
echo memory_get_usage() . "\n"; // 57960
unset($a);
echo memory_get_usage() . "\n"; // 36744
?>
或
echo strlen(serialize(mysql_fetch_assoc($result)));
答案 2 :(得分:0)
我相信Petah之前和之后使用memory_get_usage的方法可能是最简单的方法。要获得更准确的结果,您可以使用mb_strlen
,但是您需要遍历结果中的每一行以及每行的每个字段,总结您的总计。您还需要使用正确的编码。