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%’;