从 MySQL4开始,出现了QueryCache查询缓存,
如果使用了QueryCache,当查询接收到一个和之前同样的查询,
服务器将会从查询缓存种检索结果,而不是再次分析和执行上次的查询。
这样就大大提高了性能,节省时间,非常有用。
打开查询缓存,是通过几个步骤来设置的,例如:虽然你设置Mysql允许查询缓存,但
是如果你设置的查询缓存大小为了0,这和没有允许没什么区别。
所以必须是几个步骤的设置才能真正打开查询缓存这个功能。
下面我用 mysql6.0 最为演示最常用的设置查询缓存
第一: query_cache_type 使用查询缓存的方式
一般,我们会把 query_cache_type 设置为 ON,默认情况下应该是ON
mysql> select @@query_cache_type; +--------------------+ | @@query_cache_type | +--------------------+ | ON | +--------------------+ 这样 当我们执行 select id,name from tableName; 这样就会用到查询缓存。
在 query_cache_type 打开的情况下,如果你不想使用缓存,需要指明 select sql_no_cache id,name from tableName;
当然也可以禁用查询缓存: mysql> set session query_cache_type=off; 这里我们不讨论这个,我们演示常用的设置。
第二: 系统变量 have_query_cache 设置查询缓存是否可用
mysql> show variables like 'have_query_cache';
+------------------+-------+ | Variable_name | Value | +------------------+-------+ | have_query_cache | YES | +------------------+-------+ 上面的显示,表示设置查询缓存是可用的。
第三: 系统变量 query_cache_size
表示查询缓存大小,也就是分配内存大小给查询缓存,如果你分配大小为0,
那么 第一步 和 第二步 起不到作用,还是没有任何效果。
mysql> select @@global.query_cache_size;
+---------------------------+ | @@global.query_cache_size | +---------------------------+ | 16777216 | +---------------------------+ 上面是 mysql6.0设置默认的,之前的版本好像默认是0的,那么就要自己设置下。
设置 set @@global.query_cache_size=1000000; 这里是设置1M左右,900多K。
再次查看下 select @@global.query_cache_size;
+---------------------------+ | @@global.query_cache_size | +---------------------------+ | 999424 | +---------------------------+ 显示我们设置新的大小,表示设置成功。
第四: query_cache_limit 控制缓存查询结果的最大值
例如: 如果查询结果很大, 也缓存????这个明显是不可能的。
MySql 可以设置一个最大的缓存值,当你查询缓存数结果数据超过这个值就不会 进行缓存。缺省为1M,也就是超过了1M查询结果就不会缓存。
mysql> select @@global.query_cache_limit;
+----------------------------+ | @@global.query_cache_limit | +----------------------------+ | 1048576 | +----------------------------+
这个是默认的数值,如果需要修改,就像设置缓存大小一样设置,使用set 重新指定大小。
|
相关推荐
提高MySql查询性能 - 打开和设置查询缓存 视频教程 京华志&精华志出品 希望大家互相学习,互相进步 支持CSDN 支持微软 主要包括C# ASP.NET SQLDBA 源码 毕业设计 开题报告 答辩PPT等等好多知识
5. **性能优化**:通过调整SQL语句、索引优化、配置参数调整等方式,可以提高MySQL的性能。 总的来说,MySQL 8.0.31为Windows用户提供了稳定且高效的数据库服务。了解并熟练掌握MySQL的安装、配置和管理,对于任何...
5. **参数化查询**:使用PreparedStatement对象,防止SQL注入攻击,提高查询性能。 6. **事件和通知**:支持数据库事件和查询结果的异步通知,可以实现数据更改时的实时响应。 7. **元数据获取**:可以获取数据库...
### MySQL性能优化详解 #### 一、优化概述 MySQL作为一种广泛使用的开源关系型数据库管理系统,在很多应用场景中都可能遇到性能瓶颈的问题。常见的性能瓶颈主要分为两大类:**CPU瓶颈**和**I/O瓶颈**。 - **CPU...
- 使用连接池(如C3P0、HikariCP)管理数据库连接,避免频繁的打开和关闭连接,提高系统效率。 9. **安全性**: - 为了安全,不建议在代码中硬编码数据库凭据(用户名和密码)。可以使用环境变量、配置文件或安全...
6. **查询优化器改进**:查询优化器更智能,能更准确地选择执行计划,从而提高查询速度。 二、安装MySQL 5.5.25-win32的过程: 1. **下载与准备**:首先,从官方渠道下载`mysql-5.5.25-win32.msi`安装包,确保文件...
此版本可能包含了性能优化、错误修复以及对新特性的支持,比如对特定MySQL服务器版本的兼容性改进。 使用mysql-connector-net-6.4.6,你可以: 1. 连接管理:创建并管理到MySQL服务器的连接,包括设置连接字符串...
- **连接管理**:创建、打开、关闭和管理到MySQL服务器的连接。 - **SQL语句执行**:支持预编译的SQL语句,批处理操作,以及事务处理。 - **结果集处理**:高效地获取和处理查询结果,支持多种数据类型和复杂查询...
研究结论通常会总结优化缓存对MySQL性能提升的具体效果,指出哪些策略最有效,以及在特定工作负载下如何选择最佳的缓存设置。 7. 总结 通过对MySQL缓存的深入研究,我们可以理解缓存在数据库性能中的关键作用,学习...
6. **优化与安全**:为了提高性能,应使用预编译的`PreparedStatement`而非`Statement`,因为它可以缓存SQL语句。同时,务必使用参数化查询来防止SQL注入攻击。 7. **关闭资源**:操作完成后,记得关闭打开的连接、...
1. **性能提升**:MySQL 5.5通过优化查询处理器、InnoDB存储引擎和并发处理能力,显著提高了数据读写速度,使其更适合高流量和大数据量的应用场景。 2. **InnoDB增强**:MySQL 5.5默认使用InnoDB存储引擎,支持事务...
对于大型项目,还应该了解如何配置连接池,以提高并发性能和资源利用率。 总之,MySQL-Connector/Net 6.4.2是.NET开发者连接MySQL数据库的关键工具,它提供了全面的功能和良好的性能,使得.NET应用能够充分利用...
MySQL性能优化是一个重要的主题,尤其是对于处理大量数据的系统来说,高效的数据库操作直接影响到应用程序的响应速度和用户体验。本文主要围绕慢查询分析、优化索引和配置调整三个方面展开。 一、优化概述 优化...
MySQL 常用性能查询语句 MySQL 是一种关系型数据库管理系统,提供了多种方式来查询和优化数据库性能。...通过这些性能查询语句,可以更好地了解和优化 MySQL 数据库的性能,提高数据库的稳定性和性能。
1. **性能优化**:MySQL 5.7通过InnoDB存储引擎的改进提高了查询处理速度,例如支持更大的InnoDB缓存池,更高效的索引处理,以及并行查询优化。 2. **JSON支持**:添加了对JSON数据类型的内置支持,允许存储和检索...
4. **性能优化**:通过使用缓存、批处理和连接池等技术,驱动程序可以提高数据访问效率,减少网络延迟。 5. **安全性**:支持 SSL 加密,确保数据在传输过程中的安全,同时还可以实现基于角色的权限控制,限制对...
MySQL支持多种缓存机制,包括查询缓存、InnoDB缓存、表缓存和键缓存。 ##### 1. 查询缓存 - **定义**:查询缓存存储了SELECT查询的结果集,当相同的查询再次执行时,可以直接从缓存中获取结果,无需重新执行查询。 ...
- **影响**:合理的值能显著提升表的打开速度,进而提高查询性能。需要注意的是,此值需根据实际应用的连接数和复杂度灵活调整。 - **external-locking=FALSE**: - **作用**:关闭外部锁定机制。 - **影响**:...
1. **性能提升**:MySQL 5.6引入了InnoDB存储引擎的性能优化,如InnoDB Buffer Pool实例化、更高效的查询缓存、并行复制等,显著提升了数据库的读写速度。 2. **高可用性**:支持半同步复制,确保数据在主从复制中的...