国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

網(wǎng)費(fèi)一年多少錢優(yōu)化設(shè)計電子版在哪找

網(wǎng)費(fèi)一年多少錢,優(yōu)化設(shè)計電子版在哪找,企業(yè)郵箱怎么申請賬號,如今流行的網(wǎng)站建設(shè)目錄結(jié)構(gòu) 注:提前言明 本文借鑒了以下博主、書籍或網(wǎng)站的內(nèi)容,其列表如下: 1、參考書籍:《Oracle Database SQL Language Reference》 2、參考書籍:《PostgreSQL中文手冊》 3、EDB Postgres Advanced Server User Gui…

注:提前言明 本文借鑒了以下博主、書籍或網(wǎng)站的內(nèi)容,其列表如下:

1、參考書籍:《Oracle Database SQL Language Reference》
2、參考書籍:《PostgreSQL中文手冊》
3、EDB Postgres Advanced Server User Guides,點(diǎn)擊前往
4、PostgreSQL數(shù)據(jù)庫倉庫鏈接,點(diǎn)擊前往
5、PostgreSQL中文社區(qū),點(diǎn)擊前往
6、Oracle Real Application Testing 官網(wǎng)首頁,點(diǎn)擊前往
7、Oracle 21C RAT Testing Guide,點(diǎn)擊前往
8、Oracle Database 19c:Real Application Testing Overview,點(diǎn)擊前往
9、數(shù)據(jù)庫回放白皮書 11g,點(diǎn)擊前往
10、論文二 原文地址,點(diǎn)擊前往


1、本文內(nèi)容全部來源于開源社區(qū) GitHub和以上博主的貢獻(xiàn),本文也免費(fèi)開源(可能會存在問題,評論區(qū)等待大佬們的指正)
2、本文目的:開源共享 拋磚引玉 一起學(xué)習(xí)
3、本文不提供任何資源 不存在任何交易 與任何組織和機(jī)構(gòu)無關(guān)
4、大家可以根據(jù)需要自行 復(fù)制粘貼以及作為其他個人用途,但是不允許轉(zhuǎn)載 不允許商用 (寫作不易,還請見諒 💖)


Oracle數(shù)據(jù)庫數(shù)據(jù)庫回放功能之論文二翻譯及學(xué)習(xí)

  • 文章快速說明索引
  • 摘要
  • 類別和主題描述符
  • 一般條款
  • 關(guān)鍵詞
  • 介紹
    • 數(shù)據(jù)庫重放
    • 相關(guān)工作
  • 數(shù)據(jù)庫重放
    • 捕獲
    • 重放
  • 使用數(shù)據(jù)庫重放進(jìn)行測試
    • 重放設(shè)計原則
      • 同一用戶調(diào)用
      • 相同的連接模式
      • 相同的事務(wù)語義
    • 重放分析程序
    • 比較 重放與重放
    • 比較期間報告
  • 案例分析
    • 背景
    • 工作負(fù)載捕獲
    • 通過重放調(diào)試 SQL 回歸
    • 其他重放
    • 概括
  • 結(jié)論
  • 參考



文章快速說明索引

學(xué)習(xí)目標(biāo):

目的:接下來這段時間我想做一些兼容Oracle數(shù)據(jù)庫Real Application Testing (即:RAT)上的一些功能開發(fā),本專欄這里主要是學(xué)習(xí)以及介紹Oracle數(shù)據(jù)庫功能的使用場景、原理說明和注意事項(xiàng)等,基于PostgreSQL數(shù)據(jù)庫的功能開發(fā)等之后 由新博客進(jìn)行介紹和分享!


學(xué)習(xí)內(nèi)容:(詳見目錄)

1、Oracle數(shù)據(jù)庫數(shù)據(jù)庫回放功能之論文二翻譯及學(xué)習(xí)


學(xué)習(xí)時間:

2023年08月20日 14:35:35


學(xué)習(xí)產(chǎn)出:

1、Oracle數(shù)據(jù)庫數(shù)據(jù)庫回放功能之論文二翻譯及學(xué)習(xí)
2、CSDN 技術(shù)博客 1篇


注:下面我們所有的學(xué)習(xí)環(huán)境是Centos7+PostgreSQL15.0+Oracle19c+MySQL5.7

postgres=# select version();version                                   
-----------------------------------------------------------------------------PostgreSQL 15.0 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 7.1.0, 64-bit
(1 row)postgres=##-----------------------------------------------------------------------------#SQL> select * from v$version; BANNER									    BANNER_FULL 								BANNER_LEGACY									CON_ID
--------------------------------------------------------------------------- --------------------------------------------------------------------------- --------------------------------------------------------------------------- ----------
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production	    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production	Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production		     0Version 19.3.0.0.0SQL>
#-----------------------------------------------------------------------------#mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.19    |
+-----------+
1 row in set (0.06 sec)mysql>

摘要

Oracle Database Replay 提供了一種通過在測試環(huán)境中重現(xiàn)真實(shí)用戶工作負(fù)載來測試數(shù)據(jù)庫系統(tǒng)更改的新方法。它有助于識別軟件或硬件升級、補(bǔ)丁或數(shù)據(jù)庫參數(shù)、模式或數(shù)據(jù)更改后的潛在問題??梢砸宰钚〉拈_銷捕獲生產(chǎn)數(shù)據(jù)庫系統(tǒng)的任何有趣的工作負(fù)載周期。捕獲的工作負(fù)載可用于驅(qū)動測試系統(tǒng),同時保持實(shí)際生產(chǎn)工作負(fù)載的并發(fā)性和負(fù)載特性。重放不依賴于任何其他軟件,包括應(yīng)用程序本身。它可靠地重現(xiàn)捕獲的工作負(fù)載,以支持早期診斷和故障排除。在本文中,我們討論了重放結(jié)果的分析,并引入了新的比較周期報告,該報告有助于對捕獲及其重放的變化進(jìn)行詳細(xì)的性能比較。我們在涉及 Siebel 金融應(yīng)用程序升級的案例研究中展示了它的有用性,其中數(shù)據(jù)庫重放可識別升級后的性能問題并幫助糾正這些問題。

類別和主題描述符

H.2.m [數(shù)據(jù)庫管理]:雜項(xiàng)

一般條款

管理、測量、績效、驗(yàn)證。

關(guān)鍵詞

數(shù)據(jù)庫、捕獲、重放、測試

介紹

在大多數(shù)企業(yè)中,任務(wù)關(guān)鍵型業(yè)務(wù)功能嚴(yán)重依賴于數(shù)據(jù)庫系統(tǒng)。不斷變化的技術(shù)環(huán)境使得數(shù)據(jù)庫系統(tǒng)的用戶有必要部署最新的技術(shù)以保持競爭力。

維護(hù)現(xiàn)代技術(shù)基礎(chǔ)設(shè)施的工作可能會發(fā)生變化,從將數(shù)據(jù)庫升級到新版本,到更改底層硬件或操作系統(tǒng)。當(dāng)這些變化應(yīng)用于關(guān)鍵任務(wù)環(huán)境時,即使經(jīng)過最嚴(yán)格的測試,也常常會導(dǎo)致非常破壞性的問題。

測試的最大挑戰(zhàn)之一是能夠無問題地實(shí)施對生產(chǎn)數(shù)據(jù)庫系統(tǒng)的任何更改。數(shù)據(jù)庫重放通過允許生產(chǎn)質(zhì)量工作負(fù)載驅(qū)動測試系統(tǒng)并重復(fù)測試更改直到所有問題得到解決來解決這一挑戰(zhàn)。

數(shù)據(jù)庫重放

數(shù)據(jù)庫重放[3]首次使使用真實(shí)生產(chǎn)工作負(fù)載進(jìn)行數(shù)據(jù)庫測試成為可能。首先,它允許捕獲(記錄)應(yīng)用程序工作負(fù)載,同時對性能影響最小。捕獲的工作負(fù)載包含捕獲期間向數(shù)據(jù)庫發(fā)出的所有請求以及所有并發(fā)和事務(wù)信息。然后,可以使用捕獲的工作負(fù)載來測試測試系統(tǒng)中的更改,然后再將其實(shí)施到生產(chǎn)中。Database Replay的主要貢獻(xiàn)在于它可以準(zhǔn)確地重現(xiàn)測試系統(tǒng)上生產(chǎn)工作負(fù)載的并發(fā)和負(fù)載特征。因此,在使用實(shí)際工作負(fù)載進(jìn)行測試后,數(shù)據(jù)庫管理員可以確信在生產(chǎn)數(shù)據(jù)庫中實(shí)施更改時不會出現(xiàn)意外的回歸。

Database Replay 是 Oracle 數(shù)據(jù)庫系統(tǒng)的一部分,不需要任何其他軟件。這極大地簡化了測試環(huán)境的設(shè)置。更重要的是,它消除了對任何其他軟件(包括應(yīng)用程序本身)的依賴。因此,數(shù)據(jù)庫重放可以針對新的 Oracle 數(shù)據(jù)庫版本測試應(yīng)用程序業(yè)務(wù)功能的數(shù)據(jù)庫部分。

在本文中,我們概述了分析重放結(jié)果的四步程序,并引入了有助于分析的新比較周期報告。該報告比較兩個時段(捕獲到任意重放或同一捕獲的任意兩次重放)。它報告主要配置更改、重放分歧、資源使用情況、最重要的更改 SQL 語句以及許多其他重要的性能指標(biāo)。

我們在真實(shí)的數(shù)據(jù)庫升級測試中演示了數(shù)據(jù)庫重放的用法,其中我們捕獲 Oracle/Siebel 在線應(yīng)用程序大約 90 分鐘,并在升級后的數(shù)據(jù)庫上重放它。初始重放速度要慢得多,報告顯示原因是 SQL 語句由于某種原因在數(shù)據(jù)庫升級后選擇了不同的執(zhí)行計劃,并且運(yùn)行速度非常慢。調(diào)整性能不佳的 SQL 語句后,重放的性能變得與捕獲的性能相似。更值得注意的是,現(xiàn)有的負(fù)載測試工具無法發(fā)現(xiàn)問題。

相關(guān)工作

現(xiàn)有的測試工具和方法都沒有利用真正的生產(chǎn)級工作負(fù)載。Microsoft SQL Server [5]和 Quest Benchmark Factory 都具有基于 SQL 跟蹤基礎(chǔ)結(jié)構(gòu)的捕獲和不協(xié)調(diào)重放功能。然而,它們重放孤立的會話,而沒有數(shù)據(jù)庫范圍的結(jié)果一致性機(jī)制。 也就是說,重放期間的事務(wù)以與捕獲時間不同的數(shù)據(jù)庫狀態(tài)開始,并以不同的順序執(zhí)行更新。 另一個主要問題是,在實(shí)踐中,由于開銷較高,在整個數(shù)據(jù)庫上啟用 SQL 跟蹤是不可行的。

LoadRunner 性能測試工具[4]通過記錄用戶與應(yīng)用程序前端的交互來針對測試系統(tǒng)生成人工負(fù)載。生成的跟蹤被參數(shù)化并用于模擬任意數(shù)量用戶的負(fù)載。大多數(shù)時候,捕獲的工作負(fù)載僅包含生產(chǎn)工作流程的一小部分,因?yàn)椴东@不是來自真實(shí)用戶。因此,生成的請求是隨機(jī)的,并且可能并不總是在數(shù)據(jù)庫中做有用的工作。此外,它使得僅 RDBMS 的測試變得麻煩,因?yàn)樗枰虚g層和應(yīng)用程序。

[2] 中描述了另一種用于測試數(shù)據(jù)庫應(yīng)用程序的工作負(fù)載生成方法,該方法使用應(yīng)用程序代碼和數(shù)據(jù)庫模式作為輸入來生成應(yīng)用程序的用戶輸入以及用于徹底測試應(yīng)用程序和數(shù)據(jù)庫的數(shù)據(jù)。生成的工作負(fù)載用于驅(qū)動應(yīng)用程序,以嘗試實(shí)現(xiàn)廣泛的代碼覆蓋率。[1] 中的工作提出了一種查詢感知方法來生成測試數(shù)據(jù)庫。它強(qiáng)調(diào)了測試查詢在測試數(shù)據(jù)庫上執(zhí)行時產(chǎn)生所需的間歇性和最終結(jié)果的重要性。然而,生成的工作負(fù)載是合成的,只能模擬部分生產(chǎn)工作負(fù)載。

數(shù)據(jù)庫重放是對 Oracle SQL 性能分析器 (SPA)[6](另一個 Oracle 測試功能)的補(bǔ)充。SPA 將正在運(yùn)行的 RDBMS 的應(yīng)用程序 SQL 語句以及性能和計劃信息捕獲到 SQL 調(diào)優(yōu)集中。然后,它使用捕獲的 SQL 調(diào)優(yōu)集在測試環(huán)境中執(zhí)行各個語句,以發(fā)現(xiàn)潛在的性能回歸。SPA 的目標(biāo)是對特定 SQL 語句進(jìn)行單元測試,并且不會重現(xiàn)整個工作負(fù)載。本文的結(jié)構(gòu)如下:

  • 首先介紹數(shù)據(jù)庫重放的概念
  • 然后詳細(xì)介紹了如何分析重放結(jié)果
  • 然后再介紹了案例研究
  • 最后是結(jié)論

數(shù)據(jù)庫重放

在本節(jié)中,我們簡要回顧一下數(shù)據(jù)庫重放。[3]更詳細(xì)地討論了數(shù)據(jù)庫重放架構(gòu)和操作。

捕獲

信息系統(tǒng)通常包含兩個不同的環(huán)境:生產(chǎn)系統(tǒng)和測試系統(tǒng)。生產(chǎn)系統(tǒng)是企業(yè)的生命線,肩負(fù)著服務(wù)于企業(yè)信息技術(shù)需求的重任。沒有在測試系統(tǒng)上進(jìn)行廣泛測試,任何更改都不應(yīng)應(yīng)用于任何實(shí)時生產(chǎn)系統(tǒng)。

對于Oracle客戶來說,測試產(chǎn)品變更的理想工作負(fù)載是他們將要運(yùn)行的實(shí)際生產(chǎn)工作負(fù)載。使用Database Replay,用戶需要選擇一個感興趣的常規(guī)業(yè)務(wù)操作時間段,找到足夠的磁盤空間來存儲捕獲并開始捕獲工作負(fù)載。捕獲的工作負(fù)載作為操作系統(tǒng)文件存儲在用戶指定的目錄下。已采取措施盡量減少對生產(chǎn)系統(tǒng)的影響。我們的測試顯示,在TPC-C基準(zhǔn)測試上,事務(wù)吞吐量僅降低了4.5%。從應(yīng)用程序的角度來看,數(shù)據(jù)庫繼續(xù)正常運(yùn)行。即使在捕獲錯誤或耗盡磁盤空間的情況下,生產(chǎn)系統(tǒng)也不會受到影響。

在工作負(fù)載捕獲期間,RDBMS服務(wù)器進(jìn)程生成一個文件(捕獲文件),其中包含來自一個或多個數(shù)據(jù)庫會話的工作負(fù)載。數(shù)據(jù)庫會話是用戶在登錄和注銷之間的一組交互。每個會話由連續(xù)的服務(wù)請求或數(shù)據(jù)庫調(diào)用組成,例如SQL查詢、對表的更新、提交、從大對象(LOB)讀取的OCI命令等。捕獲文件是遵循自描述可擴(kuò)展格式的二進(jìn)制文件。捕獲文件中的數(shù)據(jù)也是與平臺無關(guān)的,因此可以在64位Linux操作系統(tǒng)上運(yùn)行的Oracle數(shù)據(jù)庫上捕獲工作負(fù)載,然后在32位Windows系統(tǒng)上重放。此外,該格式允許向后兼容性,確保任何捕獲都可以在Oracle數(shù)據(jù)庫的任何未來版本上重放。

可以使用工作負(fù)載過濾器的定義對捕獲進(jìn)行微調(diào)。用戶可以通過在會話屬性、用戶id和其他特定于工作負(fù)載的屬性上設(shè)置過濾器,指定他們希望在捕獲的工作負(fù)載中排除或包含工作負(fù)載的哪一部分。用戶可以指定捕獲工作負(fù)載的時間,也可以手動停止捕獲。捕獲完成后,用戶可以將捕獲的工作負(fù)載移動到測試系統(tǒng),在那里可以開始真正的測試。

重放

生產(chǎn)工作負(fù)載的重放旨在對測試系統(tǒng)上的 RDBMS 進(jìn)行壓力,以確定其配置是否適合生產(chǎn)環(huán)境。一般來說,任何類型的測試都包含 4 個不同的階段:

  1. 設(shè)置測試系統(tǒng)
  2. 定義和生成測試工作負(fù)載
  3. 運(yùn)行工作負(fù)載
  4. 分析結(jié)果

使用數(shù)據(jù)庫重放時,可以消除耗時的步驟 2,因?yàn)樗x的工作負(fù)載(生產(chǎn)工作負(fù)載)是用于測試的最佳工作負(fù)載,并且已明確定義:從生產(chǎn)系統(tǒng)捕獲的實(shí)際應(yīng)用程序工作負(fù)載。

在重放之前,測試數(shù)據(jù)庫需要恢復(fù)到邏輯上與捕獲開始時相同的狀態(tài)。Oracle 提供了 RMAN、Data Guard 和閃回技術(shù)等工具來完成此任務(wù)。重放之前要完成的最后一步是工作負(fù)載捕獲的處理(指的是:預(yù)處理)。這將創(chuàng)建重放同步和運(yùn)行時重新映射所需的必要元數(shù)據(jù),并且只需完成一次。然后,可以根據(jù)需要多次重放已處理的工作負(fù)載。

通過將捕獲的工作負(fù)載發(fā)送到測試系統(tǒng)來執(zhí)行重放。為此,我們使用一個特殊的可執(zhí)行文件(工作負(fù)載重放客戶端)來讀取捕獲的工作負(fù)載,將其轉(zhuǎn)換為適當(dāng)?shù)恼埱蟛⑵涮峤坏綌?shù)據(jù)庫。如圖 1 所示,工作負(fù)載重放客戶端本質(zhì)上是捕獲期間出現(xiàn)的原始數(shù)據(jù)庫客戶端的替代。所需的重放客戶端和主機(jī)的數(shù)量由捕獲的工作負(fù)載的最大并發(fā)數(shù)決定,并且可以使用提供的實(shí)用程序進(jìn)行估計。重放開始后,每個客戶端都會被分配一部分工作負(fù)載,所有重放客戶端生成的聚合工作負(fù)載將準(zhǔn)確模擬生產(chǎn)工作負(fù)載,從而實(shí)現(xiàn)高度真實(shí)的測試。

在這里插入圖片描述

當(dāng)重放正在進(jìn)行時,數(shù)據(jù)庫仍然可以正常訪問。所有可用的性能監(jiān)視工具都可用于在重放期間監(jiān)視數(shù)據(jù)庫,并且可以與 重放 并行執(zhí)行額外的工作負(fù)載以進(jìn)一步加載服務(wù)器。重放可以隨時停止,也可以運(yùn)行直至完成,直到消耗掉捕獲的工作負(fù)載。重放完成后,RDBMS 會生成報告,幫助確定重放的質(zhì)量并比較捕獲和重放的關(guān)鍵點(diǎn)。當(dāng)數(shù)據(jù)庫狀態(tài)在每次重放之前適當(dāng)恢復(fù)時,還可以使用相同的捕獲工作負(fù)載重復(fù)執(zhí)行重放。

使用數(shù)據(jù)庫重放進(jìn)行測試

在本節(jié)中,我們首先回顧允許數(shù)據(jù)庫重放準(zhǔn)確再現(xiàn)記錄的工作負(fù)載的設(shè)計原則。然后我們介紹一個四步過程來分析重放結(jié)果。最后,我們討論如何使用比較期間報告來評估重放并衡量變更的影響。

重放設(shè)計原則

為了確保重放期間生成相同的工作負(fù)載,數(shù)據(jù)庫重放的設(shè)計遵循以下關(guān)鍵原則:相同的用戶調(diào)用、相同的連接模式和相同的事務(wù)語義。

同一用戶調(diào)用

對于來自工作負(fù)載捕獲的每個記錄的數(shù)據(jù)庫調(diào)用,重放都會構(gòu)造一個新的調(diào)用,其行為就像記錄的調(diào)用一樣。也就是說,它在影響數(shù)據(jù)庫狀態(tài)、最終結(jié)果和服務(wù)器組件使用方面應(yīng)該在功能上等效。

工作負(fù)載重放客戶端主要完成對記錄的數(shù)據(jù)庫調(diào)用進(jìn)行逆向工程并將其發(fā)送到服務(wù)器的工作。由于客戶端在捕獲過程中使用的每個功能(無論協(xié)議如何)都可以通過等效的 Oracle 調(diào)用接口 (OCI) 命令來提供,而服務(wù)器中沒有任何差異,因此重放客戶端只需要支持 OCI 協(xié)議即可驅(qū)動工作負(fù)載。重放客戶端還進(jìn)行系統(tǒng)數(shù)據(jù)重新映射以提供相同的功能。記錄的調(diào)用可能包含與機(jī)器相關(guān)的系統(tǒng)數(shù)據(jù),例如 ROWID、光標(biāo)編號、LOB 定位器和序列號,這些數(shù)據(jù)需要在重放期間正確修改。

每個工作負(fù)載重放客戶端都是一個多線程應(yīng)用程序,它為每個工作負(fù)載捕獲文件生成一個線程(重放線程)。重放線程讀取捕獲的工作負(fù)載文件并將數(shù)據(jù)轉(zhuǎn)換為對數(shù)據(jù)庫的服務(wù)調(diào)用。重放線程通過在兩個連續(xù)調(diào)用之間適當(dāng)?shù)匦菝邅砭S護(hù)捕獲的計時特性。因此,每個重放線程都可以以記錄的請求速率從捕獲文件再現(xiàn)工作負(fù)載。請注意,出于測試目的,提供重放選項(xiàng)來更改請求速率。

相同的連接模式

對于來自工作負(fù)載捕獲的每個記錄的數(shù)據(jù)庫連接,重放通過執(zhí)行記錄的登錄和注銷操作來維護(hù)類似的數(shù)據(jù)庫連接。在重放期間應(yīng)觀察到相同的連接模式。

在重放期間,可以使用一臺或多臺主機(jī)來驅(qū)動工作負(fù)載捕獲。每臺主機(jī)可以啟動一個或多個重放客戶端。每個重放客戶端可以生成多個重放線程。該架構(gòu)提供了高可擴(kuò)展性,能夠再現(xiàn)繁重的工作負(fù)載,而不受操作系統(tǒng)限制、客戶端機(jī)器容量或網(wǎng)絡(luò)帶寬的影響。數(shù)據(jù)庫重放還提供了工具來估計給定工作負(fù)載捕獲所需的重放客戶端和主機(jī)的數(shù)量。通過這樣做,可以在重放期間觀察到相同的連接模式。同樣,提供重放選項(xiàng)來更改登錄率以進(jìn)行測試。

相同的事務(wù)語義

由于沒有人可以假設(shè)數(shù)據(jù)庫將按順序服務(wù)并發(fā)請求,因此僅通過發(fā)出具有相同時序特征的相同工作負(fù)載來維護(hù)正確的數(shù)據(jù)依賴性是不夠的。服務(wù)器中處理順序的微小差異可能會導(dǎo)致整個工作負(fù)載出現(xiàn)分歧,從而無法產(chǎn)生準(zhǔn)確的測試。

為了實(shí)現(xiàn)真實(shí)的測試,數(shù)據(jù)庫重放會維護(hù)捕獲期間觀察到的事務(wù)語義。重放期間的 RDBMS 以這樣的方式安排重放調(diào)用,以便每個重放調(diào)用都像捕獲期間一樣對相同的數(shù)據(jù)快照進(jìn)行操作。這是通過強(qiáng)制執(zhí)行捕獲期間觀察到的提交順序來完成的:每個請求僅在重放適當(dāng)?shù)奶峤缓蟛旁试S執(zhí)行。

同步機(jī)制在重放期間協(xié)調(diào)傳入調(diào)用以重現(xiàn)相同的并發(fā)性,同時確保數(shù)據(jù)庫狀態(tài)不會偏離原始狀態(tài)。與在數(shù)據(jù)庫系統(tǒng)外部實(shí)施的解決方案相比,開銷最小化。

通過提供相同的事務(wù)語義,數(shù)據(jù)庫重放將自己與其他測試工具區(qū)分開來。據(jù)我們所知,沒有其他數(shù)據(jù)庫系統(tǒng)支持此類測試。設(shè)計原則解釋了為什么數(shù)據(jù)庫重放能夠更可靠地重現(xiàn)問題。同一捕獲的兩次重放將生成相同的工作負(fù)載,并且與原始工作負(fù)載具有相同的時序、并發(fā)性和事務(wù)特征。

重放分析程序

雖然數(shù)據(jù)庫重放使重現(xiàn)工作負(fù)載捕獲變得更加容易,但分析重放結(jié)果變得更具挑戰(zhàn)性。重放可能會遇到新的錯誤、數(shù)據(jù)分歧、性能回歸和其他問題。其中一些是顯而易見的,并且是由重放系統(tǒng)的更改直接引起的。但仍有一些分歧是由這些變化間接引起的。它們可能看起來不可預(yù)測,需要詳細(xì)分析才能了解這是否是一個新問題。在這里,我們建議采用四步程序來評估重放實(shí)驗(yàn)。它遵循自上而下的策略,從高層分析開始,進(jìn)一步深入到具體的分歧。

第 1 步:評估重放了多少工作負(fù)載

重放可能不會完成,并且僅完成工作負(fù)載捕獲的子集。顯然,用戶可以在重放期間隨時停止重放。如果未正確規(guī)劃或配置,重放也可能會失敗。例如,如果重放客戶端驅(qū)動過多的工作負(fù)載并達(dá)到底層操作系統(tǒng)的限制(例如每個進(jìn)程的最大線程數(shù)或文件句柄數(shù)),則重放客戶端將退出并導(dǎo)致重放被取消。為了避免此類問題,數(shù)據(jù)庫重放提供了校準(zhǔn)功能來指導(dǎo)重放客戶端的部署。

接下來我們檢查工作負(fù)載是否已在連接connection級別重放。如前所述,我們的重放嘗試保持相同的連接模式。連接重放可能會遇到嚴(yán)重問題,例如捕獲的用戶帳戶在重放系統(tǒng)中不可用并異常退出。它不會取消重放,但重放將丟失連接中的其余工作負(fù)載。如果記錄的連接的重放未到達(dá)終點(diǎn),則會將其報告為重放會話失敗并包含在重放報告中。

第 2 步:評估已重放的次數(shù)是否符合預(yù)期

在步驟 1 中,檢查重放期間已向數(shù)據(jù)庫發(fā)送了多少工作負(fù)載。重放記錄調(diào)用并不意味著它完成了與捕獲相同的工作。第 2 步的重點(diǎn)是在功能方面對重放質(zhì)量進(jìn)行高級概述。也就是說,有多少工作負(fù)載已按預(yù)期重放。

重放跟蹤每個數(shù)據(jù)庫調(diào)用的結(jié)果并報告兩種類型的分歧:錯誤分歧和數(shù)據(jù)分歧。錯誤分歧是在重放期間觀察到的錯誤,而在捕獲期間未觀察到的錯誤,或者是與捕獲期間不同的錯誤。當(dāng)重放的調(diào)用影響的行數(shù)與捕獲期間影響的行數(shù)不同時,就會出現(xiàn)數(shù)據(jù)分歧。

重放后,分歧調(diào)用的百分比是重放質(zhì)量的良好指標(biāo)。良好的重放通常具有最小的差異或沒有差異。另一方面,大量的分歧調(diào)用可能意味著部分工作負(fù)載未正確重放。

有時,由于環(huán)境變化,重放會出現(xiàn)偏差。例如,如果鏈接不再有效,則使用數(shù)據(jù)庫鏈接database links重放調(diào)用將失敗。對于重放質(zhì)量的判斷可能會因這種重放差異而產(chǎn)生偏差。此時,客戶還可以使用自己的腳本來查看重放結(jié)果。例如,在線購物系統(tǒng)可能會在捕獲和重放后檢查已處理訂單的數(shù)量,以驗(yàn)證重放期間有多少用戶工作負(fù)載成功。

第3步:分析性能回歸

如果重放通過了前兩個步驟,我們可以確信重放的工作負(fù)載代表了良好的測試。下一步是比較性能并發(fā)現(xiàn)潛在問題。性能分析主要基于自動工作負(fù)載存儲庫(AWR)。它是性能數(shù)據(jù)的持久存儲。數(shù)據(jù)庫每小時從內(nèi)存視圖中讀取系統(tǒng)和性能數(shù)據(jù),并將其存儲為 AWR 快照。數(shù)據(jù)庫重放還會在工作負(fù)載捕獲或重放的開始和結(jié)束時自動拍攝 AWR 快照。因此每次捕獲和重放都包含一組 AWR 快照。然后可以使用 Oracle 性能工具(例如 AWR 報告、活動會話歷史記錄報告和自動數(shù)據(jù)庫診斷監(jiān)視器 (ADDM) 報告)完成性能分析。

第4步:分析調(diào)用分歧
我們可以進(jìn)一步分析調(diào)用分歧是否存在潛在問題。重放分歧可能表明部分工作負(fù)載在重放期間失敗。由于應(yīng)用更改后生產(chǎn)系統(tǒng)中可能會發(fā)生同樣的故障,因此我們應(yīng)該進(jìn)一步縮小范圍并分析重放報告中發(fā)現(xiàn)的差異數(shù)據(jù)。

比較 重放與重放

在上一節(jié)中,我們討論了如何將重放與其捕獲進(jìn)行比較。但是,我們應(yīng)該注意,即使重放是在與捕獲相同的數(shù)據(jù)庫中完成的,重放性能也可能與捕獲性能不完全相同。重放的最高優(yōu)先級是重現(xiàn)工作負(fù)載捕獲的功能。性能可能會略有變化。例如,當(dāng)重放gate某些數(shù)據(jù)庫調(diào)用時,活動會話的數(shù)量可能會減少,以便可以維護(hù)相同的事務(wù)語義。由于重放環(huán)境與生產(chǎn)系統(tǒng)不同,一些重放差異是不可避免的。

測試更改的最可靠方法是比較兩次重放。第一次重放將嘗試盡可能地模仿捕獲的系統(tǒng),而不對系統(tǒng)進(jìn)行任何更改。第二次重放將與第一次重放類似,同時應(yīng)用單個更改作為測試變量。然后通過比較兩個重放來精確測量變化的影響。正如我們之前討論的,重放非常容易設(shè)置,并且可以可靠地重現(xiàn)更改的影響。

比較期間報告

生產(chǎn)工作負(fù)載的捕獲和重放會產(chǎn)生大量 AWR 性能數(shù)據(jù)。對于沒有經(jīng)驗(yàn)的用戶來說,比較數(shù)據(jù)并發(fā)現(xiàn)回歸問題需要花費(fèi)大量的時間和精力。我們引入了比較期間報告compare period report來幫助進(jìn)行重放結(jié)果分析。它會比較并生成捕獲到重放比較報告,或重放到重放的比較報告。

捕獲-重放Capture-Replay報告將工作負(fù)載重放的性能與原始捕獲系統(tǒng)的性能進(jìn)行比較。主要包含以下六個部分:

  • 一般信息部分描述了實(shí)驗(yàn)設(shè)置。它包含有關(guān)數(shù)據(jù)庫、AWR 和時間段的信息,以及重要參數(shù)、優(yōu)化器相關(guān)參數(shù)和下劃線underscore參數(shù)。它可以幫助用戶驗(yàn)證重放是否是預(yù)期的實(shí)驗(yàn)

  • 重放差異部分描述了重放與捕獲的差異。它包含分歧的調(diào)用百分比并報告總體分歧級別。有四種可能的分歧水平:

  • NONE 表示沒有分歧
  • LOW表示檢測到的最小差異,仍然可以進(jìn)行有效的性能比較
  • 如果檢測到一些不平凡的分歧,并且性能比較不可靠并且僅在特定情況下有效,則報告 MEDIUM
  • HIGH 表示檢測到嚴(yán)重差異,并且性能比較不能用于指示任何內(nèi)容
  • 主要性能統(tǒng)計部分通過比較數(shù)據(jù)庫時間 [3]、CPU 時間和用戶 I/O 等待時間對兩個時期進(jìn)行高級性能比較

  • 按數(shù)據(jù)庫時間變化排名靠前的 SQL 部分比較了單個 SQL 語句從一個時期到另一個時期的性能變化

  • 硬件使用情況比較部分描述了系統(tǒng)上的一般 CPU 使用情況,并幫助評估它們是否受 CPU 限制

  • ADDM 比較部分提供了兩個時間段的 ADDM 分析的比較,按影響的絕對差異排序。通過比較兩個時期的 ADDM 結(jié)果,有助于發(fā)現(xiàn)一個時期存在但另一個時期不存在的問題,以及個體發(fā)現(xiàn)影響的變化。

而 Replay-Replay 報告比較了同一原始工作負(fù)載捕獲的兩次工作負(fù)載重放的性能。它與捕獲重放報告具有相同的部分。主要區(qū)別在于重放分歧部分。如果在兩次重放中發(fā)現(xiàn)相同的分歧記錄,則在Replay-Replay報告中它不再是分歧。比較期間報告將用于調(diào)試我們以下案例研究中的問題。

案例分析

在本節(jié)中,我們通過案例研究演示數(shù)據(jù)庫重放如何幫助數(shù)據(jù)庫測試。

背景

該案例是 Oracle 內(nèi)部性能和測試小組的一次數(shù)據(jù)庫升級活動。目標(biāo)應(yīng)用程序是運(yùn)行金融呼叫中心服務(wù)的 Siebel 應(yīng)用程序。它在金融呼叫中心創(chuàng)建了新的賬戶、機(jī)會和訂單。它還在合作伙伴經(jīng)理應(yīng)用程序中創(chuàng)建和分配服務(wù)請求。升級測試測量了 Siebel 工作負(fù)載相對于新 Oracle 數(shù)據(jù)庫的性能。目標(biāo)是發(fā)現(xiàn)問題并及時修復(fù)以發(fā)布最終版本。

在Database Replay推出之前,升級測試是通過以下方式完成的:測試人員首先安裝較新的數(shù)據(jù)庫版本。然后,他們通過從舊版本的數(shù)據(jù)庫備份(Oracle Database 10gR2)升級數(shù)據(jù)庫來設(shè)置數(shù)據(jù)庫。該應(yīng)用程序采用典型的三層架構(gòu)。下一步是在單獨(dú)的計算機(jī)上設(shè)置 Siebel 中間層和 Apache Web 服務(wù)器。環(huán)境搭建完畢后,使用LoadRunner[4]進(jìn)行驅(qū)動測試。

工作負(fù)載捕獲

當(dāng)數(shù)據(jù)庫重放可用時,測試小組開始使用數(shù)據(jù)庫重放來減少測試工作。他們的測試計劃是從應(yīng)用程序經(jīng)過充分測試的 Oracle 數(shù)據(jù)庫企業(yè)版 11.1.0.7 數(shù)據(jù)庫捕獲工作負(fù)載,并對升級到 Oracle 數(shù)據(jù)庫企業(yè)版 11.2beta 的數(shù)據(jù)庫進(jìn)行重放。今后我們將 Oracle 數(shù)據(jù)庫的兩個版本稱為 11.1.0.7 數(shù)據(jù)庫和 11.2beta 數(shù)據(jù)庫。重放用于確定 11.2beta 數(shù)據(jù)庫相對于 Siebel 數(shù)據(jù)庫工作負(fù)載是否存在任何性能下降。

捕獲是在運(yùn)行 Red Hat Enterprise Linux 4 的四 CPU 計算機(jī)上完成的。部署了四個中間層來運(yùn)行 Siebel 應(yīng)用程序服務(wù)器和 Apache Web 服務(wù)器。在捕獲過程中,工作負(fù)載運(yùn)行了 700 個金融呼叫中心用戶和 600 個合作伙伴經(jīng)理用戶 90 分鐘。

通過重放調(diào)試 SQL 回歸

工作負(fù)載捕獲于 2008 年底完成。我們于 2009 年 3 月開始使用 11.2beta 數(shù)據(jù)庫測試升級。為了使性能比較更加準(zhǔn)確,所有重放都使用工作負(fù)載捕獲中的相同主機(jī)。

由于我們需要運(yùn)行多次重放以進(jìn)行調(diào)試,因此我們決定打開存檔日志記錄并在數(shù)據(jù)庫成功升級后立即創(chuàng)建一個還原點(diǎn)。目的是使重放數(shù)據(jù)庫的設(shè)置變得容易。所需要做的就是在每次重放之前將數(shù)據(jù)庫閃回到恢復(fù)點(diǎn)。

Oracle 11.2beta 數(shù)據(jù)庫上的第一次重放花了近四個小時才完成了兩小時的捕獲。比較期間報告表明重放期間出現(xiàn) SQL 回歸。從 DB 時間變化的 Top SQL 來看,ID 為 44u0kwtwmd7h5 的 SQL 的 DB 時間從 90 秒增加到 10409 秒。在重放期間,產(chǎn)生了不同的執(zhí)行計劃,導(dǎo)致 SQL 執(zhí)行速度明顯變慢。由于每次重放時都會重現(xiàn)該問題,因此開發(fā)人員能夠快速查明優(yōu)化器中的問題。對于 LoadRunner,問題是間歇性的,并且很難重現(xiàn),因?yàn)樨?fù)載測試工具生成的工作負(fù)載在執(zhí)行之間通常不一致。

為了解決這個問題,我們調(diào)整了回歸 SQL 并導(dǎo)出了相應(yīng)的 SQL 配置文件。然后我們將數(shù)據(jù)庫閃回到還原點(diǎn),導(dǎo)入 SQL 配置文件,并開始新的重放。如表 1 所示,回放 II 時回歸消失,并且回放所花費(fèi)的時間與捕獲的時間幾乎相同。

其他重放

我們重放了 11.1.0.7 數(shù)據(jù)庫的工作負(fù)載,以驗(yàn)證它是否也具有相同的 SQL 回歸。結(jié)果可以在表 1 的 Replay III 中找到。比較期報告顯示,重放與捕獲非常相似。因此我們知道 Oracle 11.1.0.7 數(shù)據(jù)庫中不存在該問題。

我們還使用重放測試來檢查其他更改的行為。存檔注銷重放用于測量存檔日志記錄的開銷。如表 1 中的 Replay II 和 Replay IV 所示,兩次運(yùn)行的數(shù)據(jù)非常相似。歸檔所有聯(lián)機(jī)重做日志時,預(yù)計用戶 I/O 等待時間會增加。

概括

我們通過案例研究演示了數(shù)據(jù)庫重放如何幫助數(shù)據(jù)庫測試。數(shù)據(jù)庫重放為 Siebel 等工作負(fù)載提供了更好的測試。在調(diào)試時可以輕松設(shè)置、重放、重現(xiàn)問題,并通過微小的更改來測量性能。

該案例研究可以輕松擴(kuò)展以測試客戶的關(guān)鍵業(yè)務(wù)工作負(fù)載。該測試可幫助客戶檢測測試環(huán)境中潛在的 SQL 回歸或其他問題。如有必要,測試可以完全自動化。

結(jié)論

在當(dāng)今快速發(fā)展的 IT 環(huán)境中,變化是不可避免的,但對于數(shù)據(jù)中心經(jīng)理和管理員來說,這并不一定很困難。數(shù)據(jù)庫重放使測試系統(tǒng)能夠承受生產(chǎn)質(zhì)量工作負(fù)載。變化的確切結(jié)果是可以肯定地預(yù)測的??梢愿叨茸孕诺乜焖僭u估變化,并在生產(chǎn)系統(tǒng)受到負(fù)面影響之前采取糾正措施。據(jù)我們所知,沒有其他數(shù)據(jù)庫供應(yīng)商提供接近真實(shí)測試的工具。

參考

[1] C. Binnig, D. Kossman, E. Lo, M.T. ?zsu. QAGen: generating query-aware test databases. ACM SIGMOD international conference on Management of data 2007
[2] M. Emmi, R. Majumdar, K. Sen. Dynamic test input generation for database applications. International symposium on Software testing and analysis 2007.
[3] L. Galanis and etc. Oracle Database Replay. ACM SIGMOD international conference on Management of data 2008. 1159-1170.
[4] HP LoadRunner. http://www.hp.com.
[5] SQL Server Profiler, RDBMS Documentation, http://msdn.microsoft.com.
[6] K. Yagoub, P. Belknap, B. Dageville, K. Dias, S. Joshi, and H. Yu. Oracle’s SQL Performance Analyzer. IEEE Data Engineering Bulletin. March 2008 Vol. 31 No. 1

在這里插入圖片描述

http://aloenet.com.cn/news/41266.html

相關(guān)文章:

  • 南京做網(wǎng)站建設(shè)有哪些內(nèi)容做百度推廣多少錢
  • 東莞網(wǎng)站推廣公司建站abc官方網(wǎng)站
  • 上海網(wǎng)站設(shè)計銷售營銷方案100例
  • 項(xiàng)目宣傳網(wǎng)站模板百度最新版本2022
  • 做wap網(wǎng)站能火嗎合肥網(wǎng)站
  • 網(wǎng)站維護(hù)一年多少費(fèi)收錄排名好的發(fā)帖網(wǎng)站
  • 網(wǎng)站地址欄圖標(biāo)制作企業(yè)高管培訓(xùn)課程有哪些
  • 做酒店管理網(wǎng)站的作用成都網(wǎng)絡(luò)推廣外包
  • wordpress 眾籌模板seo效果最好的是
  • 做百度推廣需要網(wǎng)站嗎單頁站好做seo嗎
  • 大氣網(wǎng)站背景圖怎么快速推廣自己的產(chǎn)品
  • 個人網(wǎng)站開發(fā)淘寶指數(shù)查詢官網(wǎng)
  • 個人網(wǎng)站怎么做微信支付一個企業(yè)該如何進(jìn)行網(wǎng)絡(luò)營銷
  • 西安網(wǎng)站建設(shè)哪個平臺好百度搜索seo
  • 北京網(wǎng)站建設(shè)有哪些深圳搜索引擎優(yōu)化推廣
  • 有什么網(wǎng)站可以做搜索引擎調(diào)詞平臺
  • 上海建設(shè)工程造價協(xié)會官網(wǎng)班級優(yōu)化大師怎么下載
  • 網(wǎng)站建設(shè)佰首選金手指二六職業(yè)培訓(xùn)機(jī)構(gòu)哪家最好
  • 新聞網(wǎng)站如何做原創(chuàng)內(nèi)容肇慶seo外包公司
  • 海口網(wǎng)站建設(shè)運(yùn)營百度手機(jī)端排名如何優(yōu)化
  • 6黃頁網(wǎng)站建設(shè)互聯(lián)網(wǎng)公司排名2021
  • 網(wǎng)站開發(fā)日常工作廊坊seo推廣
  • wordpress調(diào)用分類圖片大小長沙靠譜的關(guān)鍵詞優(yōu)化
  • 海外域名提示風(fēng)險網(wǎng)站嗎成都網(wǎng)站seo服務(wù)
  • 濟(jì)南網(wǎng)站建設(shè)維護(hù)公司關(guān)鍵詞挖掘工具網(wǎng)站
  • 哪些調(diào)查網(wǎng)站可以做問卷賺錢可以訪問境外的瀏覽器
  • 瑪伊網(wǎng)站做兼職加入要多少錢推廣哪個平臺好
  • b2b商城網(wǎng)站建設(shè)百度關(guān)鍵詞推廣多少錢
  • 做電影網(wǎng)站怎么掙錢下店拓客團(tuán)隊(duì)
  • 百通互聯(lián)網(wǎng)站建設(shè)免費(fèi)下優(yōu)化大師