首页 > 数据库 > mysql教程 > Optimizing MySQL performance_MySQL

Optimizing MySQL performance_MySQL

WBOY
发布: 2016-05-31 08:46:15
原创
1023 人浏览过

Optimizing MySQL performance

Here is a little trick I learned recently on how to optimize MySQL performance or rather how to think when trying to get the most out of MySQL performance.

There are 2 variables or settings in MySQL you want to pay attention to:

query_cache_size which is the maximum amount of data that may be stored in the cache
登录后复制

and

query_cache_limit which is the maximum size of a single resultset in the cache.
登录后复制

In other words, the query_cache_size is the bucket you want to fill with the query_cache_limit.

Now if you were to run something likemysqltuner.pland gives you something like the following tuning hints:

[OK] Query cache efficiency: 31.3% (39K cached / 125K selects)[!!] Query cache prunes per day: 2300654Variables to adjust:query_cache_size (> 128M)
登录后复制

or if you were to do something like:

mysql -e "show status like 'qc%';"
登录后复制

You should get something like this:

+-------------------------+----------+| Variable_name | Value|+-------------------------+----------+| Qcache_free_blocks| 2105 || Qcache_free_memory| 28552504 || Qcache_hits | 124244 || Qcache_inserts| 40719|| Qcache_lowmem_prunes| 2300654|| Qcache_not_cached | 90 || Qcache_queries_in_cache | 9415 || Qcache_total_blocks | 21119|+-------------------------+----------+8 rows in set (0.00 sec)
登录后复制

In both cases you might want to play with or tweak both the query_cache_size and the query_cache_limit values. Just keep in mind that high values are discouraged and this is a per installation basis.

Recommended values could range from:

query_cache_size=128Mquery_cache_limit=1M
登录后复制

To

query_cache_size=2Gquery_cache_limit=1M
登录后复制

It all depends on your query cache efficiency. Now to me this is very different from theMySQL’s key cache hit ratiowhich you should probably keep in mind when optimzing mysql performance.

Now, lets explain a little what some of these values mean:

Qcache_free_memory

Is the memory free for new queries to be cached

Qcache_hits

Query cache hits, shows how many queries have been served by the cache, keep an eye on these number, obviously the bigger the better.

Qcache_inserts

Tells you how many queries have been created and added to the cached pool, these value is not saved from during a reboot

Qcache_lowmem_prunes

From a purely optimization standpoint this may be the single most important number, if this number grows too fast or too large, it means you are running out of memory for the cache pool, as it is filling out too quickly, this indicates how many queries have been discarded from cache in order to cache new ones, increase the query cache size (query_cache_size) to avoid this. If you useVarnish(which why wouldn’t you?) this is very similar toN LRU nuked objects

Qcache_queries_in_cache

The queries actually in cache.

Ok, what else can I do to optimize MySQL Performance?

This is more like a homework but you’d be surprise what a great difference it makes to adjust thejoin_buffer_sizeandsort_buffer_sizevalues. Careful these values are per connection so setting them up too high can and will eat all of your RAM memory. Play with them at your own peril!

However if you are seeing that MySQL is creating too many temporary tables (and worse some of them in disks) then adjusting these values may help. Also using aramdriveto save the temporary tables may help optimizing and tuning MySQL.

Rating: 0.0/10(0 votes cast)

Rating:0(from 0 votes)

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板