{eval=Array;=+count(Array);}
MySQL作為關系型數據庫,一般在項目開發當中是作為程序的首選,但網站的性能的瓶頸總是出現在數據庫身上,一般項目開發后都會根據對應業務來進行數據庫的壓測。檢查數據庫能夠承受線上環境的用戶的訪問請求。
一般都會采用mysqlslap壓測工具,模擬出大量客戶端同時操作數據庫的情況,通過結果信息來了解數據庫的性能狀況。然后進行數據庫的優化。
壓力測試工具
mysqlslap 是 Mysql 自帶的壓力測試工具 ,主要工就是對數據庫服務器做基準測試。
注: 基準測試的具體做法是:在系統上運行一系列測試程序并把性能計數器的結果保存起來。這些結構稱為“性能指標”。性能指標通常都保存或歸檔,并在系統環境的描述中進行注解。對于業務開發人員也能夠知道服務器的性能指標在哪個區間。
以后在實際運行過程中,當監控的數據接近了基準指標時,說明數據庫服務器快要滿負荷了,需要分析是數據庫結構設計、SQL語句這類用法問題,還是硬件資源的確不夠了,然后進對應進行的處理
數據庫服務器也可能需要硬件升級,升級之后也需要進行基準測試,和之前的測試結果對比,確保升級后的性能是提升的,防止不恰當的升級或者錯誤的配置引起性能下降。
mysqlslap 用法介紹
1、簡單用法
對數據庫做一個簡單的自動測試,基于原生內容來做
mysqlslap --user=root --password=test --auto-generate-sql
--auto-generate-sql 作用是自動生成測試SQL
結果中各項含義:
Average number of ...
運行所有語句的平均秒數
Minimum number of ...
運行所有語句的最小秒數
Maximum number of ...
運行所有語句的最大秒數
Number of clients ...
客戶端數量
Average number of queries per client
每個客戶端運行查詢的平均數
2、添加并發
并發是大型項目都會遇到并且頭疼的問題,所以測試可以加入并發的參數。
mysqlslap --user=root --password=test--concurrency=100 --number-of-queries=1000 --auto-generate-sql
--concurrency=100 指定同時有100個客戶端連接
--number-of-queries=1000 指定總的測試查詢次數(并發客戶端數 * 每個客戶端的查詢次數)
3、使用自己的測試庫和測試語句
自動測試可以幫助我們了解硬件層面的狀況,對于產品特定的情況,還是需要使用自己的庫來測試比較好,可以復制一份產品庫過來,然后對此庫測試,例如
mysqlslap --user=root --password=test --concurrency=70 --create-schema=test --query="SELECT * FROM dept_emp;"
--create-schema 用來指定測試庫名稱
--query 是自定義的測試語句
實際場景中,一般是測試多個復雜的語句,可以定義一個腳本文件,例如
echo "SELECT * FROM employees;SELECT * FROM titles;SELECT * FROM image;SELECT * FROM dept_manager;SELECT * FROM theme;" > ~/select_query.sql
把多個查詢語句寫入了一個 sql 文件,然后使用此文件執行測試
mysqlslap --user=root --password=111111 --concurrency=20 --number-of-queries=1000 --create-schema=employees --query="select_query.sql" --delimiter=";"
--query 中指定了sql文件
--delimiter 說明sql文件中語句間的分隔符是什么
如果有感悟,歡迎關注額
0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答