Mysql配置估算 姜博文

2021-09-28 06:11:04 字數 1815 閱讀 9298

影響qps的因素有很多,常見的有:

key buer命中率

innodb buer命中率

query cache命中率

i/o吞度量 … … 等等一系列快取的命中情況與引數配置,以下計算方法皆基於mysql伺服器與程式經過持續優化後的情況討論。

qps根據業務情況進行計算:

在對資料庫延時要求較為嚴格的系統場景下,我們假設單個query的時間為10ms 對於4核cpu,在極限情況下可以併發處理4個執行緒(此處不考慮執行緒間的上下文切換),那麼此時mysql伺服器可以支 撐400qps:

qps並沒有乙個準確的計算標準,只能根據業務場景進行計算。 例如在insert操作極為頻繁的業務場景下,cache命中率就會極為低下,但是查詢操作卻極少。此時qps受到cache 命中率的影響較小,qps則會根據index的設計而進行伸縮。但是在update與select操作都較為頻繁的業務場景 下,qps就會相比極限狀況小上很多。因為此時index的更新頻繁,i/o占用較大,且cache命中率低下。 對於mysql的效能查詢

所以,我們對於當前伺服器的qps應當具體優化,以達到無限趨近與極限狀況下的qps預期。

計算當前qps 查詢所有query

查詢啟動時間

計算公式為:

1000ms/10ms*4=400qps

show global status like 『questions』;

show global status like 『uptime』;

/那麼此時的qps為0.1 2. 計算常用cache命中率 2.1 innodb buer

計算公式為:

那麼當前的innodb buer命中率則為99.98%(這也太高了。。。) 如果在select操作極多的情況下,該值低於80%,就應該考慮調整innodb buer pool的容量,以支援更多的 快取加入。 或者查詢

該值不為0,則表示innodb引擎在寫入buer pool時產生了等待,也需要對innodb buer pool的容量進行優 化。 2.2 table cache 該值的命中率不用太過關心,直接給出計算方法:

2.3 query cache 對於資料會被重複查詢的業務場景,且資料不會被頻繁修改!此時可以開啟query cache。

qps = questions / uptime

show status like 『innodb_buffer_pool_read%』;

innodb_buffer_hit = (1 - innodb_buffer_pool_reads / innodb_buffer_pool_read_requests) * 100%

show status like 『innodb_log_waits』;

table_open_cache = max_connections * sql中最大的多表查詢語句中的表數量

show status like 『qcache%』;

/計算公式為:

那麼當前的query cache命中率為97.16% 配置計算

對於配置的計算方式,記憶體體積皆為經驗之談,具體計算方式應根據業務場景具體計算:記憶體通常為cpu核數的4 倍。而cpu的核心數,根據業務場景,判斷單個query所能接受的時長query_time,與前端業務處理側的單日的pv 數pv。

計算公式為:

該公式基於 每天80%的訪問集中在20%的時間裡 這一理論,720該值可以隨意修改。

query_cache_hit = (qcache_hits / (qcache_hits + qcache_inserts)) * 100%

業務忙時所需qps峰值 = (pv * 80%) / 720 cpu核心數 = 業務忙時所需qps峰值 / query_time

vim配置C 博文整理

最近開始研究在linux下用vim寫 下面對我學習過程中用到的部落格位址做乙個整理,希望能幫助大家。1.一步一步配置vim的c 開始環境 注 vimrc檔案中第三行記得改為 runtime debian.vim,原博文有錯誤 測試語法高亮要先建立cpp再測試,本小白被坑慘了 d 2.如何安裝中文vi...

pm2集群模式mysql配置 pm2配置檔案介紹

pm2的優勢 pm2是乙個帶有負載均衡功能的node應用的程序管理!內建負載均衡 使用node cluster 集群模組 可以在後台執行 可以0秒停機過載,可以理解為不需要停機重啟,在使用者愉快的瀏覽頁面時我們已經程式更新了 控制台檢測 日誌管理 熱過載在我們的node專案中實現 將以下pm2配置檔...

pm2集群模式mysql配置 pm2配置檔案介紹

name wuwu 專案名 script bin www 執行檔案 cwd 根目錄 args 傳遞給指令碼的引數 interpreter 指定的指令碼直譯器 interpreter args 傳遞給直譯器的引數 watch true,是否監聽檔案變動然後重啟 ignore watch 不用監聽的檔案...