查询数据库是否支持查询缓存(YES or ON)
show variables like 'have_query_cache';
查看数据库是否开启了查询缓存
show variables like 'query_cache_type';
OFF 或 0 查询缓存功能关闭
ON 或 1查询缓存功能打开,select的结果符合缓存条件即会缓存,否则不予缓存,显示指定SQL_NO_CACHE,不予缓存
DEMAND 或 2 查询缓存功能按需进行,显示指定SQL_CACHE的SELECT语句才会缓存;其他不予缓存
查看查询缓存的大小
show variables like 'query_cache_size';
查看缓存的状态
show status like 'Qcache%';
Qcache_free_blocks 缓存中可用的内存块数量
Qcache_free_memory 缓存中可用的内存量
Qcache_hits 查询缓存命中数
Qcache_lowmen_prunes 由于内存不足而从查询缓存中删除的查询数
Qcache_not_cached 非缓存查询的数量(query_cache_type设置而无法缓存)
Qcache_queries_in_cache 查询缓存中注册的查询数
Qcache_total_blocks 查询缓存中的块总数
开启查询缓存
找到mysql的配置文件添加 my.cnf 添加query_cache_type=1
开启查询缓存结果是
query_cache_type=DEMAND
select SQL_CACHE id from table
开启查询缓存结果是
query_cache_type=ON
select SQL_NO_CACHE id from table
myisam存储引擎使用key_buffer缓存索引块,加速myisam索引的读写速度。对于myisam表的数据块,mysql没有特别的缓存机制,完全依赖于操作系统的io缓存
key_buffer_size=512M
key_buffer_size的值越大效率越高,建议至少将1/4可用内存分配给key_buffer_size
show variables like 'key_buffer_size'; 查询key_buffer_size的大小
red_buffer_size
如果经常顺序扫描myisam表,可以通过增大read_buffer_size的大小值来改善性能,但不能调的过大,因为key_buffer_size是每个session独占的,如果设置多个会造成资源浪费
red_rnd_buffer_size
经常需要排序的myisam表的查询,如果带有order by 子句的sql 适当增加red_rnd_buffer_size的值可以改善此类sql性能---也是session独享的,也不能设置过大
设置innoDB事务等待行锁的时间,默认是50ms,可以根据需要动态设置,对于需要快速反馈的业务系统,可以将行锁的等待时间调小,避免事务长时间挂起,对于后台运行的批量处理程序,可以将行锁的等待时间调大,以避免发生大的回滚操作
show variables like 'innodb_lock_wait_timeout';