2

我问这个问题的原因是我想确定我的某些查询是否会使用比 query_cache_limit 更多的内存。有些人建议使用“显示表​​状态,如“表名”。我认为这与这个问题无关。谢谢。

4

2 回答 2

1

结果集的大小在库存 MySQL 中不可用。

Percona Server通过在其扩展的慢查询日志格式中添加一个字段来支持此信息。查看此日志中的“Bytes_sent”字段。

请参阅http://www.percona.com/doc/percona-server/5.5/diagnostics/slow_extended_55.html#memory-footprint

于 2013-05-15T21:24:18.383 回答
1

请注意,这不适合胆小的人。在另一个盒子上做,而不是生产!

停止mysql并在valgrind的视图下启动它。

做你的事一段时间。例如运行一个使用您的例程/查询的快速 php。

最多可能捕获 20 秒的数据使用量。

然后通过下面的相同停止停止mysql。

然后检查 /tmp 目录中的日志文件...按时间戳检查数据

service mysql stop
apt-get install valgrind
valgrind --tool=massif --massif-out-file=/tmp/massif.out /etc/init.d/mysql start



    #-----------
    snapshot=32
    #-----------
    time=217073
    mem_heap_B=1140
    mem_heap_extra_B=324
    mem_stacks_B=0
    heap_tree=empty
    #-----------
    snapshot=33
    #-----------
    time=226099
    mem_heap_B=1156
    mem_heap_extra_B=332
    mem_stacks_B=0
    heap_tree=detailed
    n3: 1156 (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
     n5: 944 0x40AA47: ??? (in /bin/dash)
      n3: 832 0x41184C: ??? (in /bin/dash)
       n1: 704 0x4120F5: ??? (in /bin/dash)
        n1: 704 0x4020E4: ??? (in /bin/dash)
         n0: 704 0x4E4E76B: (below main) (libc-start.c:226)
       n1: 96 0x411EC0: ??? (in /bin/dash)
        n1: 96 0x4048E3: ??? (in /bin/dash)
         n1: 96 0x403BD5: ??? (in /bin/dash)
          n1: 96 0x40A88C: ??? (in /bin/dash)
           n1: 96 0x402159: ??? (in /bin/dash)
            n0: 96 0x4E4E76B: (below main) (libc-start.c:226)
       n1: 32 0x41212F: ??? (in /bin/dash)
        n1: 32 0x4020E4: ??? (in /bin/dash)
         n0: 32 0x4E4E76B: (below main) (libc-start.c:226)
于 2013-05-15T21:42:56.307 回答