資料庫性能診斷
『壹』 Mysql性能指標TPS\QPS\IOPS如何壓測
性能指標概覽
QPS(Queries Per Second)是每秒查詢數,代表資料庫每秒執行的SQL數量,包括insert、select、update、delete等操作。
TPS(Transactions Per Second)是每秒事務數,對於資料庫而言,是每秒處理的事務數,以commit成功次數為准。
IOPS(每秒磁碟進行的I/O操作次數)衡量磁碟性能,是I/O操作的次數。
指標計算方式
2.1 TPS
適用於innodb Transactions Per Second,系統整體處理能力取決於處理能力最低模塊的TPS值。
2.2 QPS
適用於InnoDB和MyISAM引擎,衡量每秒的查詢率,對應fetches/sec,最大吞吐能力。
2.3 IOPS
IOPS是衡量磁碟性能的指標,是單位時間內系統能處理的I/O請求數量,重要指標包括Total IOPS和吞吐量。
測試IOPS的工具包括Iometer, IoZone, FIO等,需要根據應用負載特徵選擇合理的指標進行測量和對比分析。
3. mysqlslap
3.1 壓測
mysqlslap是MySQL自帶的性能測試和壓力測試工具,可以模擬多個客戶端對資料庫施壓,生成報告了解資料庫性能。
3.2 案例
案例由IT邦德提供,通過juejin.cn進行鏈接分享。
『貳』 MySQL資料庫三個關鍵性能指標TPS\QPS\IOPS
今天,我們將深入探討MySQL資料庫及其他資料庫的三個關鍵性能指標:TPS(每秒事務處理數)、QPS(每秒查詢率)與IOPS(每秒輸入輸出次數)。
首先,我們來談談TPS(Transactions Per Second),這是衡量伺服器每秒處理事務數量的指標。一個事務被定義為客戶機向伺服器發送請求,並在伺服器回應後結束計時,用於計算完成的事務個數。TPS一般用作衡量系統處理能力的指標,系統整體性能取決於處理能力最低模塊的TPS值。
接下來,我們了解QPS(Queries Per Second),它衡量特定查詢伺服器在給定時間內處理請求的流量。QPS也是系統吞吐能力的關鍵指標之一,對應每秒響應請求數,表明伺服器的最大處理能力。
最後,我們探討IOPS(Input/Output Per Second),這是衡量磁碟性能的重要指標。IOPS表示單位時間內系統能處理的I/O請求數量,關鍵在於衡量隨機讀寫頻繁的應用,如OLTP(Online Transaction Processing),其性能受IOPS指標影響顯著。磁碟性能的關鍵因素包括尋道時間、旋轉延遲與數據傳輸時間,其中,尋道時間與旋轉延遲對IOPS影響最大。
要計算磁碟的最大IOPS,我們可使用公式:IOPS = 1000 ms / (Tseek + Trotation),忽略數據傳輸時間。舉例而言,對於7200 rpm、10K rpm、15K rpm的磁碟,其最大IOPS理論值分別為:333.33、333.33、200。
評估資料庫性能時,需要結合實際應用負載特徵,選擇合適的IOPS指標進行測試與分析,以此選擇最佳的存儲介質與軟體系統。
『叄』 如何查詢oracle 資料庫性能,sql資源佔用
作為一個開發/測試人員,或多或少都得和資料庫打交道,而對資料庫的操作歸根到底都是SQL語句,所有操作到最後都是操作數據,那麼對sql性能的掌控又成了我們工作中一件非常重要的工作。下面簡單介紹下一些查看oracle性能的一些實用方法:
1、查詢每台機器的連接數
selectt.MACHINE,count(*)fromv$sessiontgroupbyt.MACHINE
這里所說的每台機器是指每個連接oracle資料庫的伺服器,每個伺服器都有配置連接資料庫的連接數,以websphere為例,在數據源中,每個數據源都有配置其最大/最小連接數。
執行SQL後,可以看到每個伺服器連接oracle資料庫的連接數,若某個伺服器的連接數非常大,或者已經達到其最大連接數,那麼這台伺服器上的應用可能有問題導致其連接不能正常釋放。
2、查詢每個連接數的sql_text
v$session表裡存在的連接不是一直都在執行操作,如果sql_hash_value為空或者0,則該連接是空閑的,可以查詢哪些連接非空閑,web3是機器名,就是WebSphereApplicationServer的主機名。
selectt.sql_hash_value,t.*fromv$sessiontwheret.MACHINE='web3'andt.sql_hash_value!=0
這個SQL查詢出來的結果不能看到具體的SQL語句,需要看具體SQL語句的執行下面的方法。
3、查詢每個活動的連接執行什麼sql
selectsid,username,sql_hash_value,b.sql_text
fromv$sessiona,v$sqltextb
wherea.sql_hash_value=b.HASH_VALUEanda.MACHINE='web3'
orderbysid,username,sql_hash_value,b.piece
orderby這句話的作用在於,sql_text每條記錄不是保存一個完整的sql,需要以sql_hash_value為關鍵id,以piece排序,如圖
Username是執行SQL的資料庫用戶名,一個sql_hash_value下的SQL_TEXT組合成一個完整的SQL語句。這樣就可以看到一個連接執行了哪些SQL。
4、.從V$SQLAREA中查詢最佔用資源的查詢
selectb.usernameusername,a.disk_readsreads,a.executionsexec,
a.disk_reads/decode(a.executions,0,1,a.executions)rds_exec_ratio,
a.sql_textStatement
fromv$sqlareaa,dba_usersb
wherea.parsing_user_id=b.user_id
anda.disk_reads>100000
orderbya.disk_readsdesc;
用buffer_gets列來替換disk_reads列可以得到佔用最多內存的sql語句的相關信息。
V$SQL是內存共享SQL區域中已經解析的SQL語句。
該表在SQL性能查看操作中用的比較頻繁的一張表,關於這個表的詳細信息大家可以去http://apps.hi..com/share/detail/299920#上學習,介紹得比較詳細。我這里主要就將該表的常用幾個操作簡單介紹一下:
1、列出使用頻率最高的5個查詢:
selectsql_text,executions
from(selectsql_text,executions,
rank()over
(orderbyexecutionsdesc)exec_rank
fromv$sql)
whereexec_rank<=5;
該查詢結果列出的是執行最頻繁的5個SQL語句。對於這種實用非常頻繁的SQL語句,我們需要對其進行持續的優化以達到最佳執行性能。
2、找出需要大量緩沖讀取(邏輯讀)操作的查詢:
selectbuffer_gets,sql_text
from(selectsql_text,buffer_gets,
dense_rank()over
(orderbybuffer_getsdesc)buffer_gets_rank
fromv$sql)
wherebuffer_gets_rank<=5;
這種需要大量緩沖讀取(邏輯讀)操作的SQL基本是大數據量且邏輯復雜的查詢中會遇到,對於這樣的大數據量查詢SQL語句更加需要持續的關注,並進行優化。
3、持續跟蹤有性能影響的SQL。
SELECT*FROM(
SELECTPARSING_USER_ID,EXECUTIONS,SORTS,
COMMAND_TYPE,DISK_READS,sql_textFROMv$sqlarea
ORDERBYdisk_readsDESC
)
WHEREROWNUM<10
這個語句在SQL性能查看中用的比較多,可以明顯的看出哪些SQL會影響到資料庫性能。
本文主要介紹了使用SQL查詢方式查看oracle資料庫SQL性能的部分常用方法。此外還有許多工具也能實現SQL性能監控,大家可以在網上搜索相關知識進行學習。
轉載僅供參考,版權屬於原作者
『肆』 如何評估和測試Mysql及oracle資料庫性能
1:伺服器環境
操作系統:Red Hat Enterprise Linux Server release 5.5 (Tikanga)
CPU:Intel(R) Xeon(R) CPU E5607 @ 2.27GHz 8核
內存:16G
Mysql:Ver 14.14 Distrib 5.5.21, for Linux (x86_64)
Oracle:OracleDatabase 11g Enterprise Edition Release
詳細數據測試(操作通過存儲過程完成)
數據插入
50並發Mysql插入性能圖示(橫坐標:當前數據總量,縱坐標:每秒執行次數){平均值:4841.98}