High Performance MySQL一书(2004)中的查询性能一章说,MySQL(4.0.1)试图在分析或执行查询缓存之前在查询缓存中定位任何“SELECT”查询的结果。MySQL使用它接收到的确切查询文本,因此缓存是敏感的,这意味着
SELECT * FROM table1
不同于
select * FROM table1
我想知道在MySQL 5.x中是否仍然是这样,所以我们应该总是输入'select‘而不是'SELECT’。
我执行下面的查询设置mysql缓存,所有查询都成功执行,但是如何从这个缓存测试在网站中缓存和使用什么。
mysql> SET GLOBAL query_cache_size = 1000000;
Query OK, 0 rows affected (0.04 sec)
mysql> SHOW VARIABLES LIKE 'query_cache_size';
我在memsql和mysql中运行了下面的查询,但是它所花费的时间完全不同。
梅姆斯林
select count(*) from po A , cu B , tsk C where A.customer_id = B.customer_id and B.taskid = C.id and A.domain = 5 and week(B.post_date) = 22;
+----------+
| count(*) |
+----------+
| 98952 |
+----------+
1 row in set (19.89 sec)
Mysql
select count(*)
我使用的监控系统每隔几个小时就会报告一次有很多低度的梅子
清华12月5日01:21:52 UTC 2013 7347查询缓存低位修剪600秒(12.24/秒)
清华12月5日10:21:52 UTC 2013 10596查询缓存低删除600秒(17.66/秒)
清华12月5日11:26:52 UTC 2013 8979查询缓存低位修剪600秒(14.96/秒)
mysql> SHOW STATUS LIKE 'Qc%';
Variable_name Value
Qcache_free_blocks 2250
Qcache_free_mem
我试图运行tuningprimer.sh来调整mysql设置。我已经将mysql查询缓存增加了几次,使其达到当前的2GB,但根据测试结果,仍然不够:
> QUERY CACHE Query cache is enabled Current query_cache_size = 2.00 G
> Current query_cache_used = 1.72 G Current query_cache_limit = 8 M
> Current Query cache Memory fill ratio = 86.22 % Current
> query_cache_mi
有什么方法可以确定是否从MySQL查询缓存中检索已执行的查询?
当然..。有很多方法可以在一般级别(SHOW STATUS LIKE '%qcache%'等)计算缓存查询的数量,但我特别想知道当前执行的查询是否是从MySQL缓存加载的。
例如,在PHP语言中,函数mysql_insert_id();在一个单独的查询中返回最后插入的ID。
在这个方向上,最好调用像mysql_is_query_from_cache($previous_query);这样的元数据函数来验证之前的查询结果实际上是从MySQL查询缓存中检索出来的
对此有什么想法吗?
我现在正在重建一个cakephp构建,并试图弄清楚是什么占用了额外的时间和ram等等,现在我只是想了解这里发生了什么
我发现在每个页面加载中都有这样的30-40个mysql调用:
SELECT CHARACTER_SET_NAME FROM INFORMATION_SCHEMA.COLLATIONS WHERE COLLATION_NAME = ?;
我真的不知道为什么,在哪里,这是蛋糕需要的东西,还是老程序员拉屎粉丝,或者这就像“什么”?
我现在已经将这个查询定位到一个核心文件中:
lib/Cake/Model/Datasource/Database/mysql.php
职能如下:
get