DATABASE REPLAY加壓播放引數之SCALE_UP_MULTIPLIER
當我們要遷移到新的環境之前,我們都想測試下我們新的環境是否能負荷生產的負載。同時,對於一些特殊的應用場景,我們還需要考慮模擬更大的併發量來測試是否能頂住未來的壓力。舉個簡單的例子,我搞個電子商務的網站,我現在每秒能支援1000個人同時線上做查詢,購買等等操作。那麼未來我們的網站影響力得到了擴大,可能有更多的人進行訪問,比如1萬人、10萬人,這個壓力下我的資料庫伺服器能頂住嗎?在這裡不得不吐槽一下我們的某(tie)車(dao)票(bu)的網站,真是爛的要死,一到過年的時候,就卡個不行。他們真應該多做做這種加壓測試。上一篇我們主要介紹了Database Replay基本使用,我們捕獲了現有的壓力,然後拿到新的環境上去播放,基本上是1比1的。這一篇我們要進行一個加壓的播放,這主要取決於我們的引數SCALE_UP_MULTIPLIER。這個引數可以幫助我們把只讀的操作按照比例進行擴大。對於DML、DDL,或者是修改資料庫的PL/SQL程式碼以及SELECT FOR UPDATE都將被忽略掉。這個也比較容易理解,畢竟修改操作是獨佔不能共享的。
上一篇我們捕獲的一個環境的資料如下,這裡可以看到USER_CALLS為56次,那麼我們加速10倍播放,一定會達到5600次。我們來實驗一下。
SQL> select name, directory, status, start_time, end_time, USER_CALLS,TRANSACTIONS from dba_workload_captures; NAME DIRECTORY STATUS START_TIM END_TIME USER_CALLS TRANSACTIONS -------------------- --------------- --------------- --------- --------- ---------- ------------ test_capture_1 DATA_PUMP_DIR COMPLETED 20-APR-14 20-APR-14
56
10
1.預處理資料
SQL> exec dbms_workload_replay.process_capture('DATA_PUMP_DIR'); PL/SQL procedure successfully completed
2.執行重放
SQL> exec dbms_workload_replay.initialize_replay (replay_name => 'test_replay_1', replay_dir => 'DATA_PUMP_DIR'); PL/SQL procedure successfully completed. SQL> select id,name,PARALLEL,CAPTURE_ID,STATUS,USER_CALLS from DBA_WORKLOAD_REPLAYS; ID NAME PAR CAPTURE_ID STATUS USER_CALLS ---------- ------------------------------ --- ---------- ---------------------------------------- ---------- 61 test_replay_1 NO 65 INITIALIZED SQL> exec DBMS_WORKLOAD_REPLAY.prepare_replay (synchronization => TRUE,SCALE_UP_MULTIPLIER=>100); PL/SQL procedure successfully completed.
新開一個終端,在終端上的datadump目錄下執行:
[oracle@11g dpdump]$ wrc system/oracle mode=replay replaydir=/oracle/app/oracle/admin/ora11/dpdump Workload Replay Client: Release 11.2.0.4.0 - Production on Mon Apr 21 20:57:38 2014 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. Wait for the replay to start (20:57:38)
切換回剛才的SQLPLUS視窗,開始執行Replay操作。
SQL> exec DBMS_WORKLOAD_REPLAY.START_REPLAY(); PL/SQL procedure successfully completed.
再看終端視窗的顯示。
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options [oracle@11g dpdump]$ wrc system/oracle mode=replay replaydir=/oracle/app/oracle/admin/ora11/dpdump Workload Replay Client: Release 11.2.0.4.0 - Production on Mon Apr 21 20:57:38 2014 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. Wait for the replay to start (20:57:38) Replay started (20:57:44) Replay finished (20:58:58)
完成後切換回SQLPLUS下執行查詢。可以看到USER_CALLS是之前的10倍。
SQL> select id,name,PARALLEL,CAPTURE_ID,STATUS,USER_CALLS from DBA_WORKLOAD_REPLAYS; ID NAME PAR CAPTURE_ID STATUS USER_CALLS ---------- ------------------------------ --- ---------- ---------------------------------------- ---------- 61 test_replay_1 NO 65 COMPLETED 5600
再看看我們的事務,沒有變化,發現還是10次。
SQL> connect test/test Connected. SQL> select count(1) from tt; COUNT(1) ---------- 10
透過這個引數,我們可以模擬更高的查詢併發,預測生成環境未來的負載能力。同時,我們還可以生成更多的報告來進行對比。如果發現某些語句查詢在1000個人下面正常,在1萬、10萬下就變得緩慢,那就需要去整改。比如邏輯讀高的,一點點會話看不出什麼問題的。一大堆會話就容易出現latch:cache buffer chains的等待。這能指導我們進行SQL調整。
上一篇我們捕獲的一個環境的資料如下,這裡可以看到USER_CALLS為56次,那麼我們加速10倍播放,一定會達到5600次。我們來實驗一下。
SQL> select name, directory, status, start_time, end_time, USER_CALLS,TRANSACTIONS from dba_workload_captures; NAME DIRECTORY STATUS START_TIM END_TIME USER_CALLS TRANSACTIONS -------------------- --------------- --------------- --------- --------- ---------- ------------ test_capture_1 DATA_PUMP_DIR COMPLETED 20-APR-14 20-APR-14
56
10
1.預處理資料
SQL> exec dbms_workload_replay.process_capture('DATA_PUMP_DIR'); PL/SQL procedure successfully completed
2.執行重放
SQL> exec dbms_workload_replay.initialize_replay (replay_name => 'test_replay_1', replay_dir => 'DATA_PUMP_DIR'); PL/SQL procedure successfully completed. SQL> select id,name,PARALLEL,CAPTURE_ID,STATUS,USER_CALLS from DBA_WORKLOAD_REPLAYS; ID NAME PAR CAPTURE_ID STATUS USER_CALLS ---------- ------------------------------ --- ---------- ---------------------------------------- ---------- 61 test_replay_1 NO 65 INITIALIZED SQL> exec DBMS_WORKLOAD_REPLAY.prepare_replay (synchronization => TRUE,SCALE_UP_MULTIPLIER=>100); PL/SQL procedure successfully completed.
新開一個終端,在終端上的datadump目錄下執行:
[oracle@11g dpdump]$ wrc system/oracle mode=replay replaydir=/oracle/app/oracle/admin/ora11/dpdump Workload Replay Client: Release 11.2.0.4.0 - Production on Mon Apr 21 20:57:38 2014 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. Wait for the replay to start (20:57:38)
切換回剛才的SQLPLUS視窗,開始執行Replay操作。
SQL> exec DBMS_WORKLOAD_REPLAY.START_REPLAY(); PL/SQL procedure successfully completed.
再看終端視窗的顯示。
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options [oracle@11g dpdump]$ wrc system/oracle mode=replay replaydir=/oracle/app/oracle/admin/ora11/dpdump Workload Replay Client: Release 11.2.0.4.0 - Production on Mon Apr 21 20:57:38 2014 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. Wait for the replay to start (20:57:38) Replay started (20:57:44) Replay finished (20:58:58)
完成後切換回SQLPLUS下執行查詢。可以看到USER_CALLS是之前的10倍。
SQL> select id,name,PARALLEL,CAPTURE_ID,STATUS,USER_CALLS from DBA_WORKLOAD_REPLAYS; ID NAME PAR CAPTURE_ID STATUS USER_CALLS ---------- ------------------------------ --- ---------- ---------------------------------------- ---------- 61 test_replay_1 NO 65 COMPLETED 5600
再看看我們的事務,沒有變化,發現還是10次。
SQL> connect test/test Connected. SQL> select count(1) from tt; COUNT(1) ---------- 10
透過這個引數,我們可以模擬更高的查詢併發,預測生成環境未來的負載能力。同時,我們還可以生成更多的報告來進行對比。如果發現某些語句查詢在1000個人下面正常,在1萬、10萬下就變得緩慢,那就需要去整改。比如邏輯讀高的,一點點會話看不出什麼問題的。一大堆會話就容易出現latch:cache buffer chains的等待。這能指導我們進行SQL調整。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29960155/viewspace-1311403/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【新炬網路名師大講堂】DATABASE REPLAY加壓播放引數之SCALE_UP_MULTIPLIERDatabase
- Oracle Database ReplayOracleDatabase
- oracle rat database replayOracleDatabase
- database replay基礎學習Database
- superset-database引數Database
- 資料庫負荷重放(Database replay)資料庫Database
- 11g Database Replay使用詳解Database
- Oracle 11g Database Replay 實驗OracleDatabase
- CLUSTER_DATABASE_INSTANCES引數Database
- Oracle 資料庫重放(Database Replay)功能演示Oracle資料庫Database
- 執行database replay進行升級測試Database
- Database Capture and Replay: Common Errors and Reasons (文件 ID 463263.1)DatabaseAPTError
- C#引數傳遞之值引數C#
- Laravel 修改器能加Request引數嗎?Laravel
- CLUSTER_DATABASE_INSTANCES 引數的真正含義Database
- 機器學習之超引數機器學習
- 引數匹配模型——Python學習之引數(二)模型Python
- ab壓力測試命令及引數詳解
- Use Database Replay Feature to Help With Upgrade From 10.2.0.4 to 11g_748895.1Database
- 斷點除錯之壓縮引發的血案斷點除錯
- 引數匹配順序——Python學習之引數(三)Python
- 介面壓測實踐-壓力測試常見引數解釋說明
- C/C++多引數函式引數的計算順序與壓棧順序C++函式
- Oracle Database 11gR2初始化引數知多少OracleDatabase
- Oracle設定日誌引數-ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;OracleDatabase
- Nginx的gzip壓縮的原理和設定引數Nginx
- 壓力測試sysbench安裝及引數介紹
- 求引數遍歷疊加與結果之間強關係的探索測試思路
- TcpreplayTCP
- fixtrue基礎之params引數實現簡單引數化
- fixtrue基礎之scope引數
- fixtrue基礎之name引數
- fixtrue基礎之autouse引數
- hadoop之 引數調優Hadoop
- SpringMVC之引數傳遞SpringMVC
- ORACLE DG之引數詳解Oracle
- 網頁上的Mediaplayer播放器相關引數說明網頁播放器
- 安卓逆向之破解某成人APP播放次數限制安卓APP