mysqlslap是mysql自帶的基准測試工具,優點:查詢數據,語法簡單,靈活容易使用.該工具可以模擬多個客戶端同時並發的向服務器發出查詢更新,給出了性能測試數據而且提供了多種引擎的性能比較.mysqlslap為mysql性能優化前后提供了直觀的驗證依據。
可以模擬出大量客戶端同時操作數據庫的情況,通過結果信息來了解數據庫的性能狀況。
mysqlslap 的一個主要工作場景就是對數據庫服務器做基准測試。
例如我們拿到了一台服務器,准備做為數據庫服務器,那么這台服務器的硬件資源能夠支持多大的訪問壓力呢?優化了操作系統的內核參數后,是否提升了性能?調整了Mysql配置參數后,對性能有多少影響?……
通過一系列的調優工作,配合基准測試,就可以把這台服務器調整到最佳狀態,也掌握了健康狀態下的性能指標
以后在實際運行過程中,當監控的數據接近了基准指標時,說明數據庫服務器快要滿負荷了,需要分析是數據庫結構設計、SQL語句這類用法問題,還是硬件資源的確不夠了,然后進行相應的處理。
數據庫服務器也可能需要硬件升級,升級之后也需要進行基准測試,和之前的測試結果對比,確保升級后的性能是提升的,防止不恰當的升級或者錯誤的配置引起性能下降
下面看一下如何使用 mysqlslap。
常用的選項
--concurrency 並發數量,多個可以用逗號隔開
--engines 要測試的引擎,可以有多個,用分隔符隔開,如--engines=myisam,innodb
--iterations 要運行這些測試多少次
--auto-generate-sql 用系統自己生成的SQL腳本來測試
--auto-generate-sql-load-type 要測試的是讀還是寫還是兩者混合的(read,write,update,mixed)
--number-of-queries 總共要運行多少次查詢。每個客戶運行的查詢數量可以用查詢總數/並發數來計算
--debug-info 額外輸出CPU以及內存的相關信息
--number-int-cols 創建測試表的int型字段數量
--number-char-cols 創建測試表的chat型字段數量
--create-schema 測試的database
--query 自己的SQL 腳本執行測試
--only-print 如果只想打印看看SQL語句是什么,可以用這個選項
測試語句:
mysqlslap -hlocalhost -uroot -p123456 -P3306 --concurrency=500 --iterations=1 --auto-generate-sql --auto-generate-sql-load-type=mixed --auto-generate-sql-add-autoincrement --engine=innodb --number-of-queries=500
數據庫集群
pxc 數據讀寫強一致性,適合存儲高價值重要數據。
單表數據量超過2千萬數據性能 處理不方便。
訂單 錢有關的 都要強一致性
數據切分 中間件mycat
跨平台。
犧牲性能 保證數據的一致性
日志需要保存到數據庫中
大數據中算法:協調過濾算法(用戶產生的日志數據)