当前位置:首页 > 系统运维 > 正文内容

MySQL缓存查询的实际应用

a8116255316年前 (2010-05-19)系统运维13

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

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

设置缓存global query_cache_size

set global query_cache_size = 102760448;  set global query_cache_limit = 2097152;  set global query_cache_size = 600000;  

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

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

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

SELECT * FROM tbl_name  Select * from tbl_name 

查询缓存相关参数

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缓存查询缓存

| query_cache_wlock_invalidate | OFF | +------------------------------+---------+  

下面是一个简单的例子:

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

设置缓存内存

Query OK, 0 rows affected (0.00 sec)  MySQL> set session query_cache_type = ON;  

开启查询缓存

mysql> select count(*) from animals; +----------+ | count(*) 

| +----------+ | 6 | +----------+ 1 row in set (0.00 sec)   

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

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在缓存中直接得到结果,不需要再去解析

+---------------+-------+ 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 row in set (0.00 sec) mysql> insert into animals select 9,'testsds' ;  

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

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 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缓存查询和设置的介绍,不知道各位对MySQL的认识是不是更上一层楼了,时时关注ITjs,学习最新Mysql技术。

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://www.2345hao.cn/blog/index.php/post/20419.html

分享给朋友:

“MySQL缓存查询的实际应用” 的相关文章

windows 7系统的电脑发出嘟嘟嘟的声音该怎么解决?

windows 7系统的电脑发出嘟嘟嘟的声音该怎么解决?

在某些电脑中,机器内部蜂鸣器与系统的声音输出方案是相关联的,这样一来会导致当系统输出声音时,即使电脑没有连接外部音响或耳机,也会通过内置蜂鸣器发出“嘟嘟哔哔”的声音。这个问题主要出现在Windows 7电脑中,假如你的电脑恰好遇到了这样的问题,可参考下面的方法来解决: 1、在桌面“计算机”图标上右...

windows 7系统开机提示press any key to restart的故障分析及解

windows 7系统开机提示press any key to restart的故障分析及解

Windows 7 64位系统开机后提示"press any key to restart",无法进入系统了,具体现象如下所示: 故障分析: 故障的主要原因还是硬盘的问题,可以先检查是不是接触不良或坏了,进行修复或更换即可。 解决方法: 1、开机按F8不动到高级选项出现在松手,选“...

如何删除自带的不常用应用为windows 7减负

如何删除自带的不常用应用为windows 7减负

对于Windows 7系统来说,其默认安装的许多工具是我们很少使用或从来不用的,比如系统自带的扫雷、纸牌游戏等。删除此类长期不用的系统组件,不但可以让系统更清爽,更重要的是还可以提高系统的运行速度,特别是对于硬件配置相对较低的上网本来说,尤其如此。接下来,笔者就给大家介绍一下如何删除Windows...

windows 7查看电脑近期使用情况确定有没有被他人使用

windows 7查看电脑近期使用情况确定有没有被他人使用

我一个朋友最近装装了Windows 7,他总感觉有人用了他的电脑,但是一直不确定,他想知道有没有人动用他的电脑,问我有没有办法 我说设置一下就行了: 启动Windows 7,在搜索栏中输入编辑组,马上就搜索到了编辑组策略,点击即可启动程序编辑组策略。依次展开组策略左侧树形列表的计算机配置/管理模...

各个都很实用:windows 7系统电脑日常小技巧

各个都很实用:windows 7系统电脑日常小技巧

在使用Windows 7的时候很多用户对于系统的很多功能并不是很了解,也正是因为这样的不了解导致很多用户在使用Win 之后并不能体验Windows 7的功能便携和强大功能,导致很多用户对于Windows 7的认识还是比较模糊,不过为了让更多的朋友了解Windows 7的特点和便携应用,今天就为大家汇...

Skylake平台不能通过USB接口装windows 7系统

Skylake平台不能通过USB接口装windows 7系统

Intel会在2015年推出Broadwell、Skylake两代14nm处理器,前者可以使用9系芯片组,Skylake升级到了LGA1151插槽,需要搭配新的100系列芯片组,但初期的Skylake-S又不能超倍频,所以今年Q2季度开始会很混杂。Skylake一代会支持DDR4,100系列芯片组升...