是否可以在正在运行的查询中获取已用内存?
就像是:
mysql> SELECT MEMORY_PEAK as memory; #return memory usage by mysql before run query
mysql> SELECT id FROM table WHERE id>2; #run query
mysql> SELECT MEMORY_PEAK as memory; #return memory usage by mysql after run query
Run Code Online (Sandbox Code Playgroud)
并返回类似(返回 17kb)的内容:
+----------+
| memory |
+----------+
| 20100 |
+----------+
+------+
| id |
+------+
| 3 |
+------+
+----------+
| memory |
+----------+
| 2026767 |
+----------+
Run Code Online (Sandbox Code Playgroud)
或者
mysql> USAGE SELECT id FROM table WHERE id>2;
并返回类似(返回 17kb)的内容:
+---------+
| USAGE |
+---------+
| 16767 |
+---------+
Run Code Online (Sandbox Code Playgroud)
这可能吗?
我需要它来做各种测试,看看哪些引擎查询和性能更好(个人经验)。
在 MySQL 5.7 中,假设您主要使用 INNODB 表,您可以通过运行以下查询查看当前使用了多少内存:
SHOW ENGINE INNODB STATUS
Run Code Online (Sandbox Code Playgroud)
您可以通过运行此查询查看您的数据库将使用的最大内存量:
SELECT ( @@key_buffer_size
+ @@query_cache_size
+ @@innodb_buffer_pool_size
+ @@innodb_log_buffer_size
+ @@max_connections * (
@@read_buffer_size
+ @@read_rnd_buffer_size
+ @@sort_buffer_size
+ @@join_buffer_size
+ @@binlog_cache_size
+ @@thread_stack
+ @@tmp_table_size )
) / (1024 * 1024 * 1024) AS MAX_MEMORY_GB;
Run Code Online (Sandbox Code Playgroud)
答案似乎是“还没有”。
看起来这将被添加到 MySQL Server 5.7 中。
http://dev.mysql.com/doc/refman/5.7/en/memory-summary-tables.html
归档时间: |
|
查看次数: |
23811 次 |
最近记录: |