如何减少对Mysql的访问以优化SQL语句
2016-06-03 11:27
627 查看
避免对同一数据做重复检索:
应用中需要理清楚对数据库的访问逻辑,需要对相同表的访问,尽量集中在相同sql访问,一次提取结果,减少对数据库的重复访问。
使用mysql query cache
作用:查询缓存存储SELECT查询的文本以及发送给客户端的相应结果。如果随后收到一个相同的查询,服务器从查询缓存中重新得到查询结果,而不再需要解析和执行查询。适用范围:不发生数据更新的表。当表更改(包括表结构和表数据)后,查询缓存值的相关条目被清空。
查询缓存的主要参数设置:
show variables like ‘%query_cache%’;
have_query_cache表明服务器在安装使已经配置了高速缓存
query_cache_size表明缓存区大小,单位为M
query_cache_type的变量值从0到2,含义分别为
0或者off(缓存关闭)
1或者on(缓存打开,使用sql_no_cache的select除外)
2或者demand(只有带sql_cache的select语句提供高速缓存)
在 SHOW STATUS 中,你可以监视查询缓存的性能:
变量 | 含义 |
---|---|
Qcache_queries_in_cache | 在缓存中已注册的查询数目 |
Qcache_inserts | 被加入到缓存中的查询数目 |
Qcache_hits | 缓存采样数数目 |
Qcache_lowmem_prunes | 因为缺少内存而被从缓存中删除的查询数目 |
Qcache_not_cached | 没有被缓存的查询数目 (不能被缓存的,或由于 QUERY_CACHE_TYPE) |
Qcache_free_memory | 查询缓存的空闲内存总数 |
Qcache_free_blocks | 查询缓存中的空闲内存块的数目 |
Qcache_total_blocks | 查询缓存中的块的总数目 |
加cache层
Cache(高速缓存)、Memory(内存)、Hard disk(硬盘)都是数据存取单元,但存取速度却有很大差异,呈依次递减的顺序。对于CPU来说,它可以从距离自己最近的Cache高速地存取数据,而不是从内存和硬盘以低几个数量级的速度来存取数据。而Cache中所存储的数据,往往是CPU要反复存取的数据,有特定的机制(或程序)来保证Cache内数据的命中率(HitRate)。因此,CPU存取数据的速度在应用高速缓存后得到了巨大的提高。
因为将数据写入高速缓存的任务由Cache Manager负责,所以对用户来说高速缓存的内容肯定是只读的。需要你做的工作很少,程序中的SQL语句和直接访问DBMS时没有分别,返回的结果也看不出有什么差别。而数据库厂商往往会在DB
Server的配置文件中提供与Cache相关的参数,通过修改它们,可针对我们的应用优化Cache的管理。
相关文章推荐
- 使用mysql连接池提高性能
- Mysql锁的优化
- MySQL基本语法
- Mysql数据表的优化
- 教你如何调整Mysql中insert、update、delete的顺序来以提高效率
- Mysql join语句的优化
- mysql 主从复制 error 1677
- datafactory连接mysql
- mysql各个层面优化
- Mysql order by语句的优化
- Mysql group by语句的优化
- Mysql insert语句的优化
- Mysql大量插入数据时SQL语句的优化
- Mysql索引优化教程
- Mysql下优化SQL的一般步骤
- Mysql SQL Mode详解
- Mysql使用SQL的安全问题,Mysql防止SQL注入
- Mysql锁机制和事务控制
- Mysql索引的设计、使用和优化
- Mysql字符集|为Mysql选择合适的字符集