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 MVCC机制原理详解
Apr 20 MySQL
解决MySQL存储时间出现不一致的问题
Apr 28 MySQL
MySQL创建高性能索引的全步骤
May 02 MySQL
虚拟机linux端mysql数据库无法远程访问的解决办法
May 26 MySQL
MySQL查看表和清空表的常用命令总结
May 26 MySQL
MySql开发之自动同步表结构
May 28 MySQL
SQL注入的实现以及防范示例详解
Jun 02 MySQL
Pycharm远程调试和MySQL数据库授权问题
Mar 18 MySQL
Mysql超详细讲解死锁问题的理解
Apr 01 MySQL
mysql 索引的数据结构为什么要采用B+树
Apr 26 MySQL
MySQL中正则表达式(REGEXP)使用详解
Jul 07 MySQL
MySQL数据管理操作示例讲解
Dec 24 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
虫族 Zerg 魔法科技
2020/03/14 星际争霸
PHP调用Twitter的RSS的实现代码
2010/03/10 PHP
PHP获取MSN好友列表类的实现代码
2013/06/23 PHP
ThinkPHP在新浪SAE平台的部署实例
2014/10/31 PHP
php+ajax实现文章自动保存的方法
2014/12/30 PHP
php动态变量定义及使用
2015/06/10 PHP
php对xml文件的增删改查操作实现方法分析
2017/05/19 PHP
解决laravel session失效的问题
2019/10/14 PHP
PHP数组基本用法与知识点总结
2020/06/02 PHP
JQUERY THICKBOX弹出层插件
2008/08/30 Javascript
用JavaScript对JSON进行模式匹配(Part 1-设计)
2010/07/17 Javascript
用js实现控件的隐藏及style.visibility的使用
2013/06/14 Javascript
jquery选择器使用详解
2014/04/08 Javascript
第一次接触神奇的Bootstrap表单
2016/07/27 Javascript
webpack+vue.js实现组件化详解
2016/10/12 Javascript
关于JS与jQuery中的文档加载问题
2017/08/22 jQuery
vue按需加载组件webpack require.ensure的方法
2017/12/13 Javascript
vue.js实现带日期星期的数字时钟功能示例
2018/08/28 Javascript
[00:15]天涯墨客终极技能展示
2018/08/25 DOTA
Python实现的简单发送邮件脚本分享
2014/11/07 Python
浅谈Python中用datetime包进行对时间的一些操作
2016/06/23 Python
django 配置阿里云OSS存储media文件的例子
2019/08/20 Python
使用python客户端访问impala的操作方式
2020/03/28 Python
matlab中二维插值函数interp2的使用详解
2020/04/22 Python
基于 HTML5 Canvas实现 的交互式地铁线路图
2018/03/05 HTML / CSS
Zadig&Voltaire官网:法国时装品牌
2018/01/05 全球购物
用Java语言将一个键盘输入的数字转化成中文输出
2013/01/25 面试题
金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-> (一千零一拾一元整)输出
2015/05/29 面试题
电气个人求职信范文
2014/02/04 职场文书
营业用房租赁协议书
2014/11/26 职场文书
2014社会治安综合治理工作总结
2014/12/04 职场文书
英文慰问信
2015/02/14 职场文书
Go 语言结构实例分析
2021/07/04 Golang
OpenCV绘制圆端矩形的示例代码
2021/08/30 Python
小程序实现悬浮按钮的全过程记录
2021/10/16 HTML / CSS
使用Spring处理x-www-form-urlencoded方式
2021/11/02 Java/Android