mysql优化之query_cache_limit参数说明


Posted in MySQL onJuly 01, 2021

query_cache_limit

query_cache_limit指定单个查询能够使用的缓冲区大小,缺省为1M。

优化query_cache_size

  从4.0.1开始,MySQL提供了查询缓冲机制。使用查询缓冲,MySQL将SELECT语句和查询结果存放在缓冲区中,今后对于同样的 SELECT语句(区分大小写),将直接从缓冲区中读取结果。根据MySQL用户手册,使用查询缓冲最多可以达到238%的效率。

  通过检查状态值Qcache_*,可以知道query_cache_size设置是否合理(上述状态值可以使用SHOW STATUS LIKE ‘Qcache%'获得)。如果Qcache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况,如果Qcache_hits的值也非常大,则表明查询缓冲使用非常频繁,此时需要增加缓冲大小;如果Qcache_hits的值不大,则表明你的查询重复率很低,这种情况下使用查询缓冲反而会影响效率,那么可以考虑不用查询缓冲。此外,在SELECT语句中加入SQL_NO_CACHE可以明确表示不使用查询缓冲。

  与查询缓冲有关的参数还有query_cache_type、query_cache_limit、query_cache_min_res_unit。query_cache_type指定是否使用查询缓冲,可以设置为0、1、2,该变量是SESSION级的变量。query_cache_limit指定单个查询能够使用的缓冲区大小,缺省为1M。query_cache_min_res_unit是在4.1版本以后引入的,它指定分配缓冲区空间的最小单位,缺省为4K。检查状态值Qcache_free_blocks,如果该值非常大,则表明缓冲区中碎片很多,这就表明查询结果都比较小,此时需要减小 query_cache_min_res_unit。

因为我们的服务器内容96G所以如下设置

query_cache_size = 128M
query_cache_limit = 8M

比较完整的my.ini文件,大家可以根据自己的服务器适当调整,以防止mysql无法运行,这个是针对mysql5.6版本的。

[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set = utf8
#设置客户端的字符编码
[mysqld]
# generic configuration options
port = 3306
socket = /tmp/mysql.sock
basedir="E:/database/mysql/"
datadir="E:/database/mysql/data/"
tmpdir = "E:/database/mysql/tmp/"
#*** char set ***
character-set-server = utf8
#设置服务器端的字符编码

#下面三个参数默认12500,1400,2000
performance_schema_max_table_instances = 20000
table_definition_cache = 2000
table_open_cache = 4096

#*** network ***
back_log = 1024
#skip-networking #默认没有开启
max_connections = 10000
#max_connect_errors = 3000
table_open_cache = 4096
#external-locking #默认没有开启
max_allowed_packet = 256M
max_heap_table_size = 128M
secure_file_priv=''
explicit_defaults_for_timestamp=true
concurrent_insert=2

#*** timeout ***
interactive_timeout=1000
wait_timeout=1000

# *** global cache ***
read_buffer_size = 64M
read_rnd_buffer_size = 64M
sort_buffer_size = 64M
join_buffer_size = 1024M

# *** thread ***
thread_cache_size = 64
# thread_concurrency = 8
thread_stack = 512K

# *** query cache ***
query_cache_size = 128M
query_cache_limit = 8M

# *** index ***
ft_min_word_len = 8

#memlock #默认没有开启
default-storage-engine=MYISAM
innodb=OFF
default-tmp-storage-engine=MYISAM
transaction_isolation = REPEATABLE-READ

# *** tmp table ***
tmp_table_size = 1024M

# *** bin log ***
#log-bin=mysql-bin
binlog_cache_size = 4M
binlog_format=mixed
#log_slave_updates #默认没有开启
#log #默认没有开启,此处是查询日志,开启会影响服务器性能
log_warnings #开启警告日志

# *** slow query log ***
slow_query_log
long_query_time = 10
# *** Replication related settings
#server-id = 1
#server-id = 2
#master-host = <hostname>
#master-user = <username>
#master-password = <password>
#master-port = <port>
#read_only
#*** MyISAM Specific options
#myisam_recover
key_buffer_size = 2048M
bulk_insert_buffer_size = 128M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover_options=force,backup

# *** INNODB Specific options ***
#skip-innodb #默认没有开启
loose-innodb-trx=0
loose-innodb-locks=0
loose-innodb-lock-waits=0
loose-innodb-cmp=0
loose-innodb-cmp-per-index=0
loose-innodb-cmp-per-index-reset=0
loose-innodb-cmp-reset=0
loose-innodb-cmpmem=0
loose-innodb-cmpmem-reset=0
loose-innodb-buffer-page=0
loose-innodb-buffer-page-lru=0
loose-innodb-buffer-pool-stats=0
loose-innodb-metrics=0
loose-innodb-ft-default-stopword=0
#loose-innodb-ft-inserted=0
loose-innodb-ft-deleted=0
loose-innodb-ft-being-deleted=0
loose-innodb-ft-config=0
loose-innodb-ft-index-cache=0
loose-innodb-ft-index-table=0
loose-innodb-sys-tables=0
loose-innodb-sys-tablestats=0
loose-innodb-sys-indexes=0
loose-innodb-sys-columns=0
loose-innodb-sys-fields=0
loose-innodb-sys-foreign=0
loose-innodb-sys-foreign-cols=0

[mysqldump]
quick
max_allowed_packet = 256M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 2048M
sort_buffer_size = 2048M
read_buffer = 32M
write_buffer = 32M

[mysqlhotcopy]
interactive-timeout

[mysqld_safe]
open-files-limit = 10240
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

如果想优化mysql可以结合MySQL的Query Cache详解的文章。

MySQL 相关文章推荐
MySQL基础(二)
Apr 05 MySQL
MySQL 分页查询的优化技巧
May 12 MySQL
简单了解 MySQL 中相关的锁
May 25 MySQL
浅谈MySQL user权限表
Jun 18 MySQL
为什么代码规范要求SQL语句不要过多的join
Jun 23 MySQL
MyBatis 动态SQL全面详解
Oct 05 MySQL
MySQL 数据类型详情
Nov 11 MySQL
Windows下载并安装MySQL8.0.x 版本的完整教程
Apr 10 MySQL
MySQL库表太大怎么办? 数据库分库分表项目实践
Apr 11 MySQL
MySQL创建管理子分区
Apr 13 MySQL
MySQL 数据库范式化设计理论
Apr 22 MySQL
MySQL 数据库 增删查改、克隆、外键 等操作
May 11 MySQL
MySQL中存储时间的最佳实践指南
Jul 01 #MySQL
MySQL连表查询分组去重的实现示例
Jul 01 #MySQL
python中的mysql数据库LIKE操作符详解
Jul 01 #MySQL
解决Mysql的left join无效及使用的注意事项说明
mysql left join快速转inner join的过程
MySQL 十大常用字符串函数详解
Mysql中调试存储过程最简单的方法
Jun 30 #MySQL
You might like
PHP的历史和优缺点
2006/10/09 PHP
搜索和替换文件或目录的一个好类--很实用
2006/10/09 PHP
zend framework配置操作数据库实例分析
2012/12/06 PHP
PHP list() 将数组中的值赋给变量的简单实例
2016/06/13 PHP
Laravel 登录后清空COOKIE的操作方法
2019/10/14 PHP
TNC vs BOOM BO3 第一场2.13
2021/03/10 DOTA
JavaScript 定义function的三种方式小结
2009/10/16 Javascript
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
2013/06/25 Javascript
jquery获取元素值的方法(常见的表单元素)
2013/11/15 Javascript
如何在JavaScript中实现私有属性的写类方式(二)
2013/12/04 Javascript
Angular用来控制元素的展示与否的原生指令介绍
2015/01/07 Javascript
javascript常用的方法分享
2015/07/01 Javascript
JS获取鼠标坐标位置实例分析
2016/01/20 Javascript
AngularJS基础 ng-submit 指令简单示例
2016/08/03 Javascript
jQuery焦点图轮播效果实现方法
2016/12/19 Javascript
原生Javascript插件开发实践
2017/01/18 Javascript
原生JS实现九宫格抽奖效果
2017/04/01 Javascript
使用Angular CLI快速创建Angular项目的一些基本概念和写法小结
2018/04/22 Javascript
如何解决webpack-dev-server代理常切换问题
2019/01/09 Javascript
Vue指令指令大全
2019/02/09 Javascript
Python判断文件和文件夹是否存在的方法
2015/05/21 Python
Python实现快速排序算法及去重的快速排序的简单示例
2016/06/26 Python
使用Python画出小人发射爱心的代码
2019/11/23 Python
pytorch之inception_v3的实现案例
2020/01/06 Python
详解python tcp编程
2020/08/24 Python
CSS实现的一闪而过的图片闪光效果
2014/04/23 HTML / CSS
一款纯css3制作的2015年元旦雪人动画特效教程
2014/12/29 HTML / CSS
X/HTML5 和 XHTML2
2008/10/17 HTML / CSS
浅谈HTML5 FileReader分布读取文件以及其方法简介
2017/11/09 HTML / CSS
应届毕业生求职信范例分享
2013/12/17 职场文书
风险评估实施方案
2014/03/09 职场文书
2014年企业党支部工作总结
2014/12/04 职场文书
计生个人工作总结
2015/02/28 职场文书
2015年学生会干事工作总结
2015/04/09 职场文书
骆驼祥子读书笔记
2015/06/26 职场文书
创业计划书之废品回收
2019/09/26 职场文书