您好,登錄后才能下訂單哦!
我們在性能測試監控MYSQL數據庫時,作為專業非功能性測試人員,我們需要了解操作系統工作原理、業務實現架構邏輯、應用架構實現邏輯、數據庫工作原理,才能真正的做好非功能性測試,而大部分業務型交易問題都是因為數據庫問題原因產生的性能瓶頸,而更多數情況都是因為對數據庫出現問題的情況和處理思路不清晰。在進行MySQL的優化之前必須要了解的就是MySQL的查詢過程,也就是實際前端業務操作到從磁盤撈取數據整個實現過程如果運作,了解了這些,明白查詢優化是遵循MySQL優化器方式運行,具體如下圖:
根據上圖所示我們了解到,無論是手機端還是PC端,例如我們點餐系統,通過APP客戶端,我們查詢要點的餐飲,這時通過網絡連接同數據庫服務層建立TCP連接。
讀寫數據方式
1、步驟一與數據庫連接建立:
連接管理模塊會建立連接,并請求一個連接線程。如果連接池中有空閑的連接線程,則分配給這個連接,如果沒有,在沒有超過最大連接數的情況下,創建新的連接線程負責這個客戶端。
2、步驟二檢查語法
接下來驗證用戶是否有權限。例如你有注冊,查看該用戶是會員用戶,方可提供點餐服務,連接線程開始接收并處理來自客戶端的SQL語句。連接線程接收到SQL語句之后,將語句交給SQL語句解析模塊進行語法分析和語義分析。
3、步驟三檢查緩存
如果是查詢語句,則可以先看查詢緩存中是否有結果,如果有結果可以直接返回給客戶端。
4、步驟四檢查引擎優化
如果查詢緩存中沒有結果,就需要真的查詢數據庫引擎層了,于是發給SQL優化器,進行查詢的優化。就是請求數據庫引擎層,打開表,接下來的處理過程就到了數據庫引擎層,例如InnoDB。
5、步驟五,數據讀取方式
在數據庫引擎層,要先查詢緩存是否有數據,如果有直接返回,如果沒有就要從磁盤上去讀取,把磁盤中找到相應的數據加載到緩存中,下次讀取直接從緩存讀取從而使得后面的查詢更加高效。
6、步驟六,關閉連接
獲取數據后返回給客戶端,關閉連接,釋放連接線程,過程結束。
性能問題分析:
如果語法寫的有問題,則在從磁盤撈取數據時會出現磁盤IO高或者CPU高,那就是語法寫法問題或者索引使用問題,如果語法分析沒問題,則看緩存頁配置是否太小了,或者本身物理內存就小,給緩存的空間就少了。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。