query_cache_limit
query_cache_limit指定單個(gè)查詢能夠使用的緩沖區(qū)大小,缺省為1M。
優(yōu)化query_cache_size
從4.0.1開(kāi)始,MySQL提供了查詢緩沖機(jī)制。使用查詢緩沖,MySQL將SELECT語(yǔ)句和查詢結(jié)果存放在緩沖區(qū)中,今后對(duì)于同樣的 SELECT語(yǔ)句(區(qū)分大小寫(xiě)),將直接從緩沖區(qū)中讀取結(jié)果。根據(jù)MySQL用戶手冊(cè),使用查詢緩沖最多可以達(dá)到238%的效率。
通過(guò)檢查狀態(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語(yǔ)句中加入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無(wú)法運(yùn)行,這個(gè)是針對(duì)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)沒(méi)有開(kāi)啟
max_connections = 10000
#max_connect_errors = 3000
table_open_cache = 4096
#external-locking #默認(rèn)沒(méi)有開(kāi)啟
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)沒(méi)有開(kāi)啟
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)沒(méi)有開(kāi)啟
#log #默認(rèn)沒(méi)有開(kāi)啟,此處是查詢?nèi)罩?,開(kāi)啟會(huì)影響服務(wù)器性能
log_warnings #開(kāi)啟警告日志
# *** 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)沒(méi)有開(kāi)啟
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分頁(yè)用limit會(huì)越來(lái)越慢
- 詳解Mysql order by與limit混用陷阱
- mysql分頁(yè)的limit參數(shù)簡(jiǎn)單示例
- MySQL limit分頁(yè)大偏移量慢的原因及優(yōu)化方案
- Mysql排序和分頁(yè)(order by&limit)及存在的坑
- MySQL limit使用方法以及超大分頁(yè)問(wèn)題解決
- mysql踩坑之limit與sum函數(shù)混合使用問(wèn)題詳解
- 如何提高M(jìn)ySQL Limit查詢性能的方法詳解
- MySQL Limit性能優(yōu)化及分頁(yè)數(shù)據(jù)性能優(yōu)化詳解
- 淺談mysql使用limit分頁(yè)優(yōu)化方案的實(shí)現(xiàn)
- MySQL中l(wèi)imit對(duì)查詢語(yǔ)句性能的影響