Code前端首页关于Code前端联系我们

WordPress 站点优化加速 MySQL 查询缓存优化

terry 2年前 (2023-09-26) 阅读数 54 #数据库

1 概述

打开 MySQL 查询缓存。当执行完全相同的SQL语句时,服务器会直接从缓存中读取结果。当数据在Cache失效之前发生变化,并且变化频繁的表不适合查询缓存。

2 操作流程

wordpress网站优化加速之MySQL查询缓存优化

1.客户端向服务器发送请求;

2。服务器将首先检查查询缓存。如果缓存命中,会立即返回缓存的结果。否则进入下一阶段;

3。服务器进行SQL解析和预处理,然后优化器生成相应的执行计划;

4。 MySQL根据优化器生成的执行计划调用存储引擎API。执行查询;

5。将结果返回给客户。

3 查询缓存配置

1.检查当前MySQL数据库是否支持查询缓存:

SHOW VARIABLES LIKE 'have_query_cache';
wordpress网站优化加速之MySQL查询缓存优化

2。检查当前MySQL是否启用查询缓存:

SHOW VARIABLES LIKE 'query_cache_type';
wordpress网站优化加速之MySQL查询缓存优化

3。检查查询缓存的大小:

SHOW VARIABLES LIKE 'query_cache_size';
wordpress网站优化加速之MySQL查询缓存优化

4。查看查询缓存状态变量:

SHOW STATUS LIKE 'Qcache%';
wordpress网站优化加速之MySQL查询缓存优化

各变量含义如下:

参数 含义
Qcache_free_blocks 查询内存数量 Qcache_free_memory 可用内存量查询缓存
Qcache_hits查询缓存命中数
Qcache_inserts❀ of 查询❝Q 查询数 che_lowmen_prunes由于内存 查询缓存不足 中删除的查询数量Qcache_not_cached编号不可接受的查询(由于query_cache_type设置而导致的不可移动或无法切除)
__CACHE_QUERIES在QUERYCACHERCACHE
QCACHE_TOTAL_blocks中注册MySQL的查询缓存默认是关闭的。您必须手动配置 query_cache_type 参数才能启用查询缓存。query_cache_type 该参数有三个可能的值:
含义
OFF 或 0 关闭查询缓存功能
ON
功能打开on 并且 SELECT 结果符合缓存。条件会被缓存,否则不会被缓存。如果显式设置 SQL_NO_CACHE,则不会对其进行缓存。
DEMAND 或 2根据需要执行查询缓存功能。只有显式指定SQL_CACHE的SELECT语句才会被缓存;其他不被缓存。缓存

在/usr/my.cnf配置中添加以下配置: wordpress网站优化加速之MySQL查询缓存优化

配置完成后,重启服务即可生效;

然后就可以在命令行执行SQL语句进行验证了。 SQL语句执行一次比较耗时,然后多执行几次查看后面几次的执行时间;获取查询缓存的缓存命中数,以判断是否使用查询缓存。 5 查询结果被缓存。

SQL_NO_CACHE:服务器不使用查询缓存。它既不检查查询缓存,也不检查结果是否被缓存,也不缓存查询结果。

示例:

SELECT SQL_CACHE id, name FROM customer;
SELECT SQL_NO_CACHE id, name FROM customer;

6 查询缓存错误

1) SQL 语句不一致。要命中查询缓存,查询SQL语句必须一致。

SQL1 : select count(*) from tb_item;
SQL2 : Select count(*) from tb_item;

2)当查询语句存在一些不确定性时,不会被缓存。如:now()、current_date()、curdate()、curtime()、rand()、uuid()、user()、database()。

SQL1 : select * from tb_item where updatetime < now() limit 1;
SQL2 : select user();
SQL3 : select database();

3)不要使用任何表查询语句。

select 'A';

4)查询mysql、information schema或performance_schema数据库中的表时,不会使用查询缓存。

select * from information_schema.engines;

5) 在存储的函数、触发器或事件的主体中执行的查询。

6) 如果表发生更改,则使用该表的所有缓存查询都将失效并从缓存中删除。这包括使用 MERGE 来连接已更改的表的查询。表可以通过多种类型的语句进行修改,例如 INSERT、UPDATE、DELETE、TRUNCATE TABLE、ALTER TABLE、DROP TABLE 或 DROP DATABASE。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门