mysql優(yōu)化之query_cache_limit參數(shù)說明
query_cache_limit
query_cache_limit指定單個(gè)查詢能夠使用的緩沖區(qū)大小,缺省為1M。
優(yōu)化query_cache_size
從4.0.1開始,MySQL提供了查詢緩沖機(jī)制。使用查詢緩沖,MySQL將SELECT語句和查詢結(jié)果存放在緩沖區(qū)中,今后對于同樣的 SELECT語句(區(qū)分大小寫),將直接從緩沖區(qū)中讀取結(jié)果。根據(jù)MySQL用戶手冊,使用查詢緩沖最多可以達(dá)到238%的效率。
通過檢查狀態(tài)值Qcache_*,可以知道query_cache_size設(shè)置是否合理(上述狀態(tài)值可以使用SHOW STATUS LIKE ‘Qcache%'獲得)。如果Qcache_lowmem_prunes的值非常大,則表明經(jīng)常出現(xiàn)緩沖不夠的情況,如果Qcache_hits的值也非常大,則表明查詢緩沖使用非常頻繁,此時(shí)需要增加緩沖大??;如果Qcache_hits的值不大,則表明你的查詢重復(fù)率很低,這種情況下使用查詢緩沖反而會(huì)影響效率,那么可以考慮不用查詢緩沖。此外,在SELECT語句中加入SQL_NO_CACHE可以明確表示不使用查詢緩沖。
與查詢緩沖有關(guān)的參數(shù)還有query_cache_type、query_cache_limit、query_cache_min_res_unit。query_cache_type指定是否使用查詢緩沖,可以設(shè)置為0、1、2,該變量是SESSION級(jí)的變量。query_cache_limit指定單個(gè)查詢能夠使用的緩沖區(qū)大小,缺省為1M。query_cache_min_res_unit是在4.1版本以后引入的,它指定分配緩沖區(qū)空間的最小單位,缺省為4K。檢查狀態(tài)值Qcache_free_blocks,如果該值非常大,則表明緩沖區(qū)中碎片很多,這就表明查詢結(jié)果都比較小,此時(shí)需要減小 query_cache_min_res_unit。
因?yàn)槲覀兊姆?wù)器內(nèi)容96G所以如下設(shè)置
query_cache_size = 128M
query_cache_limit = 8M
比較完整的my.ini文件,大家可以根據(jù)自己的服務(wù)器適當(dāng)調(diào)整,以防止mysql無法運(yùn)行,這個(gè)是針對mysql5.6版本的。
[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set = utf8
#設(shè)置客戶端的字符編碼
[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
#設(shè)置服務(wù)器端的字符編碼#下面三個(gè)參數(shù)默認(rèn)12500,1400,2000
performance_schema_max_table_instances = 20000
table_definition_cache = 2000
table_open_cache = 4096
#*** network ***
back_log = 1024
#skip-networking #默認(rèn)沒有開啟
max_connections = 10000
#max_connect_errors = 3000
table_open_cache = 4096
#external-locking #默認(rèn)沒有開啟
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 #默認(rèn)沒有開啟
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 #默認(rèn)沒有開啟
#log #默認(rèn)沒有開啟,此處是查詢?nèi)罩?,開啟會(huì)影響服務(wù)器性能
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 #默認(rèn)沒有開啟
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
如果想優(yōu)化mysql可以結(jié)合MySQL的Query Cache詳解的文章。
- MySQL查詢優(yōu)化:LIMIT 1避免全表掃描提高查詢效率
- 為什么MySQL分頁用limit會(huì)越來越慢
- 詳解Mysql order by與limit混用陷阱
- mysql分頁的limit參數(shù)簡單示例
- MySQL limit分頁大偏移量慢的原因及優(yōu)化方案
- Mysql排序和分頁(order by&limit)及存在的坑
- MySQL limit使用方法以及超大分頁問題解決
- mysql踩坑之limit與sum函數(shù)混合使用問題詳解
- 如何提高M(jìn)ySQL Limit查詢性能的方法詳解
- MySQL Limit性能優(yōu)化及分頁數(shù)據(jù)性能優(yōu)化詳解
- 淺談mysql使用limit分頁優(yōu)化方案的實(shí)現(xiàn)
- MySQL中l(wèi)imit對查詢語句性能的影響
相關(guān)文章
MYSQL數(shù)據(jù)庫數(shù)據(jù)拆分之分庫分表總結(jié)
這篇文章主要介紹了MYSQL數(shù)據(jù)庫數(shù)據(jù)拆分之分庫分表總結(jié),需要的朋友可以參考下2016-07-07MySQL中的聚簇索引、非聚簇索引、聯(lián)合索引和唯一索引詳細(xì)介紹
本文主要介紹了MySQL的索引類型,根據(jù)索引的存儲(chǔ)方式來劃分,索引可以分為聚簇索引和非聚簇索引。聚簇索引的特點(diǎn)是葉子節(jié)點(diǎn)包含了完整的記錄行,而非聚簇索引的葉子節(jié)點(diǎn)只有所以字段和主鍵ID,感興趣的同學(xué)可以閱讀本文2023-04-04Mysql修改datadir導(dǎo)致無法啟動(dòng)問題解決方法
這篇文章主要介紹了Mysql修改datadir導(dǎo)致無法啟動(dòng)問題解決方法,本文原因是SELINUX導(dǎo)致,用關(guān)閉SELINUX的方法解決了這個(gè)問題,需要的朋友可以參考下2015-02-02MySQL查詢優(yōu)化的5個(gè)實(shí)用技巧
這篇文章主要介紹了MySQL查詢優(yōu)化的5個(gè)實(shí)用技巧,從數(shù)據(jù)類型、字符集、子查詢等角度分析了MySQL查詢優(yōu)化的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-12-12Mysql?5.7?新特性之?json?類型的增刪改查操作和用法
這篇文章主要介紹了Mysql?5.7?新特性之json?類型的增刪改查,主要通過代碼介紹mysql?json類型的增刪改查等基本操作的用法,需要的朋友可以參考下2022-09-09MySQL實(shí)現(xiàn)模糊查詢的高效方法總結(jié)(附30條優(yōu)化建議)
數(shù)據(jù)庫SQL優(yōu)化是老生常談的問題,在面對模糊查詢的時(shí)候又有什么好的優(yōu)化建議呢?這篇文章主要給大家介紹了關(guān)于MySQL實(shí)現(xiàn)模糊查詢的高效方法,文中還附30條優(yōu)化建議,需要的朋友可以參考下2024-03-03