mysql 查询设置调优_MySQl 查询性能优化相关
0.
1.參考
緩存一切數(shù)據(jù),讀取內(nèi)存而不是硬盤(pán)IO
如果你的服務(wù)器默認(rèn)情況下沒(méi)有使用MySQL查詢緩存,那么你應(yīng)該開(kāi)啟緩存。開(kāi)啟緩存意味著MySQL 會(huì)把所有的語(yǔ)句和語(yǔ)句執(zhí)行的結(jié)果保存下來(lái),如果隨后有一條與緩存中完全相同的語(yǔ)句需要執(zhí)行,那么MySQL 就會(huì)返回緩存的結(jié)果。緩存不會(huì)過(guò)時(shí),因?yàn)镸ySQL 會(huì)在表數(shù)據(jù)更新后刷新緩存。
Look for the?[mysqld]?group header in?my.cnf?and put those lines under it
[mysqld]query_cache_type =1query_cache_size =4096M
query_cache_limit =2M
query_cache_strip_comments =1
Every change to a table requires scanning the 4GB to purge entries for that table.? 一旦數(shù)據(jù)更新,會(huì)清空內(nèi)存的所有緩存并更新,所以應(yīng)該合理設(shè)置緩存總大小?query_cache_size
2.MySQL 查詢緩存
當(dāng)前設(shè)置
mysql> show variables like "query_cache%";
+------------------------------+---------+
| Variable_name | Value |
+------------------------------+---------+
| query_cache_limit | 1048576 | #單條最大 1MB,1000條數(shù)據(jù)返回45KB,這里設(shè)置為 51200 比較合適
| query_cache_min_res_unit | 4096 |? ? ?#100條數(shù)據(jù)返回4.8KB,這里設(shè)置為 5120 比較合適,不夠會(huì)再申請(qǐng)一塊
| query_cache_size | 1048576 | #總共分配1MB,修改為?52428800,即50MB,能夠緩存 1w 個(gè) 100條查詢結(jié)果。
| query_cache_type | OFF | #修改為 1 或 ON?緩存除了以 SELECT SQL_NO_CACHE 開(kāi)頭的所有查詢結(jié)果。另一個(gè)選項(xiàng)是?2 或 DEMAND 只緩存以 SELECT SQL_CACHE 開(kāi)頭的查詢結(jié)果。
| query_cache_wlock_invalidate | OFF |? #表鎖定時(shí)認(rèn)為緩存不可用,修改為 ON
+------------------------------+---------+
5 rows in set (0.01 sec)
mysql> select @@query_cache_type;
+--------------------+
| @@query_cache_type |
+--------------------+
| OFF |
+--------------------+
1 row in set, 1 warning (0.00 sec)
mysql> set @@query_cache_type=ON;
ERROR 1651 (HY000): Query cache is disabled; restart the server with query_cache_type=1 to enable it
mysql> exit;
修改緩存設(shè)置??vi /etc/my.cnf 重啟?service mysqld restart
query_cache_limit = 50K
query_cache_min_res_unit = 5K
query_cache_size = 50M
query_cache_type = 1
query_cache_wlock_invalidate = ON
查詢緩存狀態(tài)
mysql> show status like "Qcache%";
+-------------------------+----------+
| Variable_name | Value |
+-------------------------+----------+
| Qcache_free_blocks | 1 | #太多碎片,最小分配內(nèi)存單位設(shè)置不合理?
| Qcache_free_memory | 52365352 |
| Qcache_hits | 0 |? #命中緩存的查詢次數(shù)
| Qcache_inserts | 12 | #插入次數(shù)
| Qcache_lowmem_prunes | 0 |? ?#總緩存空間不足?
| Qcache_not_cached | 0 |
| Qcache_queries_in_cache | 12 |? ? #現(xiàn)有緩存?zhèn)€數(shù)
| Qcache_total_blocks | 26 |
+-------------------------+----------+
8 rows in set (0.00 sec)
設(shè)置?query_cache_min_res_unit 為 5K 或 10K 下面結(jié)果都是1:2,所以還是設(shè)置為 5K???
Qcache_queries_in_cache | 1152 |
| Qcache_total_blocks | 2307 |
3.
總結(jié)
以上是生活随笔為你收集整理的mysql 查询设置调优_MySQl 查询性能优化相关的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: jmu-python-重复元素判定_Py
- 下一篇: mysql 交集_MYSQL交集函数