日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 连接 监控_mysql监控优化(一)连接数和缓存

發布時間:2023/12/10 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 连接 监控_mysql监控优化(一)连接数和缓存 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、mysql的連接數

MYSQL數據庫安裝完成后,默認最大連接數是100,一般流量稍微大一點的論壇或網站這個連接數是遠遠不夠的,連接數少的話,在大并發下連接數會不夠用,會有很多線程在等待其他連接釋放,就可能會導致數據庫連接超時或者響應時間過長,所以需要調整最大連接數。

1、設置mysql的最大連接數,在mysql的配置文件中增加:

max_connections = 1000#mysql的最大連接數,默認如果不寫的話是100個

wait_timeout = 10超時時間

2、查看當前有多少個連接

show status like '%Threads_connected%';

show processlist;

二、mysql的緩存。緩存來自兩個維度。

緩存1(MySQL層):查詢緩存 Query Cache

緩存2(存儲引擎層):InnoDB_Buffer_Pool

1、查詢緩存Qcache

緩存完整的SELECT查詢結果,當查詢命中緩存,MySQL會立刻返回結果,跳過解析、優化和執行階段。

查詢緩存會跟蹤系統中的每張表,如果這些表發生變化,那么和這張表相關的所有查詢緩存全部失效。

查詢緩存對應用程序是完全透明的。應用程序無須關心MySQL是通過查詢緩存返回的結果還是實際執行返回的結果。事實上,這2種結果是完全相同的。

在檢查查詢緩存的時候,MySQL不會對SQL進行任何處理,它精確的使用客戶端傳來的查詢(select),只要字符大小寫,或者注釋有一點點不同,查詢緩存就認為是不同的查詢。

任何一個包含不確定的函數(比如now(),current_date())的查詢不會被緩存。

(1)mysql查詢緩存開啟需要注意的問題

開啟查詢緩存對于讀寫都增加了額外的開銷。對于讀,在查詢開始前需要先檢查緩存;對于寫,在寫入后需要更新緩存。

一般情況這些開銷相對較小,所以查詢緩存一般還是有好處的。但也要根據業務特征權衡是否需要開啟查詢緩存。

(2)Qcache參數。查詢緩存參數,在mysql配置文件中添加,linux下為my.cnf,windows下為my.ini:

1.query_cache_type = on ? ?? ? ? ? 是否開啟查詢緩存,具體選項是off,on

2.query_cache_size = 200M? ? ? ??分配給查詢緩存的總內存,一般建議不超過256M

3.query_cache_limit = 1M ? ? ? ? ??這個選項限制了MySQL存儲的最大結果。如果查詢的結果比這個大,那么就不會被緩存。

(3)查看Qcache狀態

查詢qcache狀態:

SHOW VARIABLES LIKE '%query_cache%';

命令參數列表

have_query_cache 該MySQL 是否支持Query Cache;

query_cache_limit 緩存塊大小,超過該大小不會被緩存

query_cache_min_res_unit 每個qcache最小的緩存空間大小

query_cache_size 分配給查詢緩存的總內存

query_cache_type 是否開啟

query_cache_wlock_invalidate 控制當有鎖加在表上的時候,是否先讓該表相關的 Query Cache失效

(4)監控Qcache的使用情況

查詢qcache當前使用情況:

SHOW STATUS LIKE 'Qcache%';

命令參數列表

Qcache_free_blocks? Query Cache中目前還有多少剩余的blocks。如果該值顯示較大,則說明Query Cache 中的內存碎片較多了,可能需要尋找合適的機會進行整理。如果這個值非常大,可以使用FLUSH QUERY CACHE;語句來清理查詢緩存碎片以提高內存使用性能。該語句不從緩存中移出任何查詢。

Qcache_free_memory? Query Cache 中目前剩余的內存大小

Qcache_hits? 緩存命中次數

Qcache_inserts 多少次未命中然后插入

Query Cache 命中率= Qcache_hits / ( Qcache_hits + Qcache_inserts );

Qcache_lowmem_prunes 多少條Query 因為內存不足而被清除出Query

Qcache_not_cached? ?因為query_cache_type 的設置或者不能被cache 的Query 的數量

Qcache_queries_in_cache? 當前Query Cache 中cache 的Query 數量;

Qcache_total_blocks 當前Query Cache 中的block 數量

2、存儲引擎層-innodb buffer pool

buffer pool是innodb存儲引擎帶的一個緩存池,查詢數據的時候,它首先會從內存中查詢,如果內存中存在的話,直接返回,從而提高查詢響應時間。

innodb buffer pool和qcache的區別是:qcacche緩存的是sql語句對應的結果集,buffer pool中緩存的是表中的數據。Buffer pool是設置的越大越好,一般設置為服務器物理內存的70%。

(1)Innodb_buffer_pool參數:

innodb_buffer_pool_size :Innodb_buffer_pool的大小

innodb_buffer_pool_dump_now:默認為關閉OFF。如果開啟該參數,停止MySQL服務時,InnoDB將InnoDB緩沖池中的熱數據保存到本地硬盤。

innodb_buffer_pool_load_at_startup:默認為關閉OFF。如果開啟該參數,啟動MySQL服務時,MySQL將本地熱數據加載到InnoDB緩沖池中。

(2)查看Innodb_buffer_pool的狀態

查詢Innodb_buffer_pool狀態:

SHOW VARIABLES LIKE '%innodb_buffer_pool%';

命令參數列表

innodb_buffer_pool_size 設置的bp大小

innodb_buffer_pool_filename? 熱數據文件名稱

innodb_buffer_pool_dump_at_shutdown 停止mysq服務時是否自動保存熱數據

innodb_buffer_pool_dump_now 啟動mysql服務時是否自動讀取熱數據

(3)監控Innodb_buffer_pool使用情況

查詢Innodb_buffer_pool當前使用情況:

SHOW STATUS LIKE '%Innodb_buffer_pool%';

命令參數列表

主要關注的兩個參數

Innodb_buffer_pool_read_requests 總共查詢bp的次數

Innodb_buffer_pool_reads 從物理磁盤中獲取到數據的次數

通過這兩個參數我們可以知道bp的命中率

總結

以上是生活随笔為你收集整理的mysql 连接 监控_mysql监控优化(一)连接数和缓存的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。