MySQL作為關係型資料庫,一般在專案開發當中是作為程式的首選,但網站的效能的瓶頸總是出現在資料庫身上,一般專案開發後都會根據對應業務來進行資料庫的壓測。檢查資料庫能夠承受線上環境的使用者的訪問請求。
一般都會採用mysqlslap壓測工具,模擬出大量客戶端同時操作資料庫的情況,透過結果資訊來了解資料庫的效能狀況。然後進行資料庫的最佳化。
壓力測試工具
mysqlslap 是 Mysql 自帶的壓力測試工具 ,主要工就是對資料庫伺服器做基準測試。
注: 基準測試的具體做法是:在系統上執行一系列測試程式並把效能計數器的結果儲存起來。這些結構稱為“效能指標”。效能指標通常都儲存或歸檔,並在系統環境的描述中進行註解。對於業務開發人員也能夠知道伺服器的效能指標在哪個區間。
以後在實際執行過程中,當監控的資料接近了基準指標時,說明資料庫伺服器快要滿負荷了,需要分析是資料庫結構設計、SQL語句這類用法問題,還是硬體資源的確不夠了,然後進對應進行的處理
資料庫伺服器也可能需要硬體升級,升級之後也需要進行基準測試,和之前的測試結果對比,確保升級後的效能是提升的,防止不恰當的升級或者錯誤的配置引起效能下降。
1、簡單用法
對資料庫做一個簡單的自動測試,基於原生內容來做
--auto-generate-sql 作用是自動生成測試SQL
結果中各項含義:
Average number of ...
執行所有語句的平均秒數
Minimum number of ...
執行所有語句的最小秒數
Maximum number of ...
執行所有語句的最大秒數
Number of clients ...
客戶端數量
Average number of queries per client
每個客戶端執行查詢的平均數
2、新增併發
併發是大型專案都會遇到並且頭疼的問題,所以測試可以加入併發的引數。
--concurrency=100 指定同時有100個客戶端連線
--number-of-queries=1000 指定總的測試查詢次數(併發客戶端數 * 每個客戶端的查詢次數)
3、使用自己的測試庫和測試語句
自動測試可以幫助我們瞭解硬體層面的狀況,對於產品特定的情況,還是需要使用自己的庫來測試比較好,可以複製一份產品庫過來,然後對此庫測試,例如
--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檔案中語句間的分隔符是什麼
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檔案中語句間的分隔符是什麼