首頁>Club>
15
回覆列表
  • 1 # 蓮花童子哪吒

    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檔案中語句間的分隔符是什麼

  • 中秋節和大豐收的關聯?
  • 優質女孩的朋友圈是什麼樣的?