用SHOW STATUS来Profiling Queries

mysql> FLUSH STATUS;

将数据库服务器端的session中的一些计数器重置,如果服务器已经运行了一段时间,这会非常有帮助。

mysql> SELECT SQL_NO_CACHE| SQL_CACHE

 film_actor.actor_id, COUNT(*)

    -> FROM sakila.film_actor

    ->    INNER JOIN sakila.actor USING(actor_id)

    -> GROUP BY film_actor.actor_id

    -> ORDER BY COUNT(*) DESC;

4.0.1开始,MySQL多了一个缓冲区,叫查询缓冲区,主要用来存放重复执行的查询文本和结果,当再次遇到相同的查询,服务器会直接从缓冲区中返回结果。
该功能是内建的功能,如不想支持该功能,可在编译服务器时用configure脚本的–without-query-cache选项去掉该功能。有篇博客不错(http://blog.sina.com.cn/s/blog_482c6a980100fe98.html).

SQL_NO_CACHE| SQL_CACHE

SELECT 语句中指定查询缓存的选项,对于那些肯定要实时的从表中获取数据的查询,或者对于那些一天只执行一次的查询,还有就是调试SQL语句时我们不需要缓存结果,都可以指定不进行查询缓存,使用 SQL_NO_CACHE 选项。
对于那些变化不频繁的表,查询操作很固定,我们可以将该查询操作缓存起来,这样每次执行的时候不实际访问表和执行查询,只是从缓存获得结果,可以有效地改善查询的性能,使用 SQL_CACHE 选项。

mysql> SHOW SESSION STATUS LIKE ‘Select%’;

mysql> SHOW SESSION STATUS LIKE ‘Handler%’;

mysql> SHOW SESSION STATUS LIKE ‘Created%’;

mysql> SHOW SESSION STATUS LIKE ‘Created%’;

标签: , , ,

留下回复