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 中相关的锁
May 25 MySQL
为什么MySQL选择Repeatable Read作为默认隔离级别
Jul 26 MySQL
Mysql实现简易版搜索引擎的示例代码
Aug 30 MySQL
深入解析MySQL索引数据结构
Oct 16 MySQL
面试中老生常谈的MySQL问答集锦夯实基础
Mar 13 MySQL
Pycharm远程调试和MySQL数据库授权问题
Mar 18 MySQL
MySQL磁盘碎片整理实例演示
Apr 03 MySQL
Windows 64位 安装 mysql 8.0.28 图文教程
Apr 19 MySQL
MySQL数据库事务的四大特性
Apr 20 MySQL
mysql 索引的数据结构为什么要采用B+树
Apr 26 MySQL
MySQL 字符集 character
May 04 MySQL
MySQL分布式恢复进阶
Jul 23 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程序61条面向对象分析设计的经验小结
2008/11/12 PHP
CodeIgniter中使用Smarty3基本配置
2015/06/29 PHP
YII使用url组件美化管理的方法
2015/12/28 PHP
PHP单例模式是什么 php实现单例模式的方法
2016/05/14 PHP
功能强大的php文件上传类
2016/08/29 PHP
PHP利用正则表达式将相对路径转成绝对路径的方法示例
2017/02/28 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
2018/11/20 PHP
laravel 事件/监听器实例代码
2019/04/12 PHP
jQuery+CSS 半开折叠效果原理及代码(自写)
2013/03/04 Javascript
web css实现整站样式互相切换
2013/10/29 Javascript
浅析tr的隐藏和显示问题
2014/03/05 Javascript
使用jQueryMobile实现滑动翻页效果的方法
2015/02/04 Javascript
Javascript中this关键字的一些小知识
2015/03/15 Javascript
JavaScript中通过提示框跳转页面的方法
2016/02/14 Javascript
JS通过调用微信API实现微信支付功能的方法示例
2017/06/29 Javascript
vue的基本用法与常见指令
2017/08/15 Javascript
react在安卓中输入框被手机键盘遮挡问题的解决方法
2018/09/03 Javascript
nodejs高大上的部署方式(PM2)
2018/09/11 NodeJs
Vuex的基本概念、项目搭建以及入坑点
2018/11/04 Javascript
vue从一个页面跳转到另一个页面并携带参数的解决方法
2019/08/12 Javascript
vue动态渲染svg、添加点击事件的实现
2020/03/13 Javascript
Python的math模块中的常用数学函数整理
2016/02/04 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
2018/12/28 Python
python paramiko远程服务器终端操作过程解析
2019/12/14 Python
CSS3动画之流彩文字效果+图片模糊效果+边框伸展效果实现代码合集
2017/08/18 HTML / CSS
ABOUT YOU匈牙利:500个最受欢迎的时尚品牌
2019/07/19 全球购物
澳洲CFL商城:CHEMIST FOR LESS(中文)
2021/02/28 全球购物
消防安全检查制度
2014/02/04 职场文书
学校运动会霸气口号
2014/06/07 职场文书
项目合作协议书
2014/09/23 职场文书
公务员年度考核评语
2014/12/31 职场文书
2015年建党94周年演讲稿
2015/03/19 职场文书
小学国庆节活动总结
2015/03/23 职场文书
2015年幼儿园学前班工作总结
2015/05/18 职场文书
2016应届大学生自荐信模板
2016/01/28 职场文书