早上測試對效能壓測,發現取sequence服務大量超時報錯,查詢線上的監控sql:
大量這個查詢,我在deviceid和isdelete上建有復合索引,應該很快,而且我測試了一下,取值,執行效率很高,不會出現慢的情況。
但是通過sql profile工具監控,發現這個sql,執行的cpu和io都是很高,取出profile監控出來的sql:
原來這條資料查出17多萬條資料,所以執行很慢。後來溝通下來deviceid='' 是一些錯誤資料,技術可以把這些isdelete=0的資料改成isdelete=1,改成1後,按情況sql應該優化好了,
但是通過sql profile工具發現,還是這個sql執行起來很慢,看其執行計畫還是走的全表掃瞄,讓技術把這個引數化的寫法改成非引數化,但是要發版,後來在@deviceid=n『2』 隨便取值還是io很高。
看情況是執行計畫有午,要麼固定其執行計畫,加上 with(index=索引名),但是發版時間長,感覺就是統計資訊不對,
在這個庫上執行了一下更新統計資訊: exec sp_updatestats ,在清空一下快取: dbcc freeproccache
再次執行,發現用到索引。問題解決。
總結:
1,一直以為建索引就ok,其實要看查詢sql這個的資料量有多少,剛好這個查詢就是查得最大的,17多萬條,而且全部取出,
2,引數化查詢後,執行計畫未選擇最優,可以考慮先更新一下資料庫的統計資訊 ,在清空一下快取
CPU效能壓測
有時候為了專案需求需要對cpu效能做乙個壓力測試,這裡提供一種方法。通過對圓周率位數進行計算進而確定cpu效能,根據定義預計執行時間,具體操作如下 time echo scale 1000 4 a 1 bc l q 通過該命令執行,如果3 4分鐘沒有出現結果,基本問題就可以定位在cpu上,這裡我通過...
MYSQL sysbench效能壓測
sysbench是基於luajit的可編寫指令碼的多執行緒基準測試工具。它最常用於資料庫基準測試,但也可以用於建立不涉及資料庫伺服器的任意複雜的工作負載。參考官方文件 二進位制安裝 rhel centos curl s sudo bash sudo yum y install sysbench ro...
mysql 效能壓測後調優 MySQL效能測試調優
mysql效能測試調優 作業系統 基本操作 檢視磁碟分割槽mount選項 mount 永久修改分割槽mount選項 系統重啟後生效 修改檔案 etc fstab 中對應分割槽的mount options列的值 sudo t ext4 o remount,noatime,errors remount ...