0

0

MySQL缓存查询的实际应用

php中文网

php中文网

发布时间:2016-06-07 16:13:28

|

1074人浏览过

|

来源于php中文网

原创

以下的文章主要讲述的是MySQL缓存查询与设置global query_cache_size的实际操作步骤,我们大家都知道其访问量一增加的话,MySQL数据库的压力就大!如果对其减小压力呢?首先缓存。 我这里有专业数据师来讲解。 设置缓存global query_cache_size setglobal qu

以下的文章主要讲述的是mysql缓存查询与设置global query_cache_size的实际操作步骤,我们大家都知道其访问量一增加的话,mysql数据库的压力就大!如果对其减小压力呢?首先缓存。

我这里有专业数据师来讲解。

设置缓存global query_cache_size

  1. set global query_cache_size = 102760448;
  2. set global query_cache_limit = 2097152;
  3. set global query_cache_size = 600000;

缓存机制简单的说就是缓存sql文本及查询结果,如果运行相同的sql,服务器直接从缓存中取到结果,而不需要再去解析和执行sql。如果表更改了,那么使用这个表的所有缓冲查询将不再有效,查询缓存值的相关条目被清空。更改指的是表中任何数据或是结构的改变,包括INSERT、UPDATE、DELETE、TRUNCATE、ALTER TABLE、DROP TABLE或DROP DATABASE等,也包括那些映射到改变了的表的使用MERGE表的查询。显然,这对于频繁更新的表,MySQL缓存查询缓存是不适合的,而对于一些不常改变数据且有大量相同sql查询的表,查询缓存会节约很大的性能。

查询必须是完全相同的(逐字节相同)才能够被认为是相同的。另外,同样的查询字符串由于其它原因可能认为是不同的。使用不同的数据库、不同的协议版本或者不同默认字符集的查询被认为是不同的查询并且分别进行缓存。

下面sql查询缓存认为是不同的:
 

  1. SELECT * FROM tbl_name
  2. Select * from tbl_name

查询缓存相关参数

  1. MySQL> SHOW VARIABLES LIKE '%query_cache%';
    +------------------------------+---------+ | Variable_name | Value |
    +------------------------------+---------+ | have_query_cache | YES |

查询缓存是否可用 | query_cache_limit | 1048576 | --可缓存具体查询结果的最大值 | query_cache_min_res_unit | 4096 | | query_cache_size | 599040 | --查询缓存的大小 | query_cache_type | ON | --阻止或是支持MySQL缓存查询缓存

  1. | query_cache_wlock_invalidate | OFF | +------------------------------+---------+

下面是一个简单的例子:

  1. [MySQL@csdba1850 ~]$ MySQL -u root -p
  2. Enter password:
  3. Welcome to the MySQL monitor. Commands end with ; or \g.
  4. Your MySQL connection id is 3
  5. Server version: 5.0.45-community MySQL Community Edition (GPL)
  6. Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
  7. MySQL> set global query_cache_size = 600000;

设置缓存内存

B2S商城系统
B2S商城系统

B2S商城系统B2S商城系统是由佳弗网络工作室凭借专业的技术、丰富的电子商务经验在第一时刻为最流行的分享式购物(或体验式购物)推出的开源程序。开发采用PHP+MYSQL数据库,独立编译模板、代码简洁、自由修改、安全高效、数据缓存等技术的应用,使其能在大浏览量的环境下快速稳定运行,切实节约网站成本,提升形象。注意:如果安装后页面打开出现找不到数据库等错误,请删除admin下的runtime文件夹和a

下载
  1. Query OK, 0 rows affected (0.00 sec)
  2. MySQL> set session query_cache_type = ON;

开启查询缓存
 

  1. Query OK, 0 rows affected (0.00 sec)
  2. MySQL> use test Reading table information for completion
    of table and column names You can turn off this feature to
    get a quicker startup with -A Database changed
    mysql> show tables;
    +----------------+ | Tables_in_test | +----------------+ | animals |
    | person | +----------------+ 5 rows in set (0.00 sec)
    mysql> select count(*) from animals; +----------+ | count(*)
    | +----------+ | 6 | +----------+ 1 row in set (0.00 sec)

Qcache_hits表示mysql缓存查询在缓存中命中的累计次数,是累加值。

  1. mysql> SHOW STATUS LIKE 'Qcache_hits'; +---------------+-------+
    | Variable_name | Value | +---------------+-------+ | Qcache_hits
    | 0 | --0次 +---------------+-------+ 8 rows in set (0.00 sec)
    mysql
    > select count(*) from animals; +----------+ | count(*)
    | +----------+ | 6 | +----------+ 1 row in set (0.00 sec)
    mysql
    > SHOW STATUS LIKE 'Qcache%'; +---------------+-------+
    | Variable_name | Value | +---------------+-------+ | Qcache_hits | 1 |

表示sql在缓存中直接得到结果,不需要再去解析

  1. +---------------+-------+ 8 rows in set (0.00 sec)
    mysql
    > select count(*) from animals; +----------+
    | count(*) | +----------+ | 6 | +----------+ 1 row in set (0.00 sec)
    mysql
    > select count(*) from animals; +----------+ | count(*)
    | +----------+ | 6 | +----------+ 1 row in set (0.00 sec)
    mysql
    > SHOW STATUS LIKE 'Qcache_hits'; +---------------+-------+
    | Variable_name | Value | +---------------+-------+ | Qcache_hits | 3 |

上面的sql也是是从缓存中直接取到结果

  1. +---------------+-------+ 1 row in set (0.00 sec) mysql> insert into animals select 9,'testsds' ;

插入数据后,跟这个表所有相关的sql缓存就会被清空掉

  1. Query OK, 1 row affected (0.00 sec) Records:
    1 Duplicates: 0 Warnings: 0 mysql
    > select count(*) from animals;
    +----------+ | count(*) | +----------+ | 7 | +----------+
    1 row in set (0.00 sec) mysql
    > SHOW STATUS LIKE 'Qcache_hits';
    +---------------+-------+ | Variable_name | Value |
    +---------------+-------+ | Qcache_hits | 3 |

还是等于3,说明上一条sql是没有直接从缓存中直接得到的

  1. +---------------+-------+ 1 row in set (0.00 sec)
    mysql
    > select count(*) from animals; +----------+
    | count(*) | +----------+ | 7 | +----------+
    1 row in set (0.00 sec) mysql
    > SHOW STATUS LIKE 'Qcache_hits';
    +---------------+-------+ | Variable_name | Value | +---------------+-------+
    | Qcache_hits | 4 | +---------------+-------+ 1 row in set (0.00 sec)

以上的相关内容就是对mysql缓存查询和设置的介绍,望你能有所收获。
 


相关专题

更多
C++ 高级模板编程与元编程
C++ 高级模板编程与元编程

本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

10

2026.01.23

php远程文件教程合集
php远程文件教程合集

本专题整合了php远程文件相关教程,阅读专题下面的文章了解更多详细内容。

29

2026.01.22

PHP后端开发相关内容汇总
PHP后端开发相关内容汇总

本专题整合了PHP后端开发相关内容,阅读专题下面的文章了解更多详细内容。

21

2026.01.22

php会话教程合集
php会话教程合集

本专题整合了php会话教程相关合集,阅读专题下面的文章了解更多详细内容。

21

2026.01.22

宝塔PHP8.4相关教程汇总
宝塔PHP8.4相关教程汇总

本专题整合了宝塔PHP8.4相关教程,阅读专题下面的文章了解更多详细内容。

13

2026.01.22

PHP特殊符号教程合集
PHP特殊符号教程合集

本专题整合了PHP特殊符号相关处理方法,阅读专题下面的文章了解更多详细内容。

11

2026.01.22

PHP探针相关教程合集
PHP探针相关教程合集

本专题整合了PHP探针相关教程,阅读专题下面的文章了解更多详细内容。

8

2026.01.22

菜鸟裹裹入口以及教程汇总
菜鸟裹裹入口以及教程汇总

本专题整合了菜鸟裹裹入口地址及教程分享,阅读专题下面的文章了解更多详细内容。

55

2026.01.22

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

9

2026.01.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 1.9万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 807人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号