性能比較:事務處理控件

發表于:2009-06-17來源:作者:點擊數: 標簽:性能事務控件
摘要:本文通過比較事務處理模型,包括 數據庫 事務處理、Microsoft ADO .NET 手動事務處理和使用 Microsoft SQL Server 2000 數據庫的通用應用程序方案中的 ADO.NET 自動事務處理,重點介紹影響性能、可伸縮性和可維護性的事務處理控件的性能部分。目錄簡介
摘要:本文通過比較事務處理模型,包括數據庫事務處理、Microsoft ADO.NET 手動事務處理和使用 Microsoft SQL Server 2000 數據庫的通用應用程序方案中的 ADO.NET 自動事務處理,重點介紹影響性能、可伸縮性和可維護性的事務處理控件的性能部分。目錄簡介 體系結構選項 測試方案 測試工具和策略 計算機配置 性能測試結果 總結 簡介事務處理控件的體系結構選擇影響到性能、可伸縮性和可維護性。本文通過比較各種事務處理模型,包括數據庫事務處理、Microsoft? ADO.NET 手動事務處理和使用 Microsoft SQL Server? 2000 數據庫的通用應用程序方案中的 ADO.NET 自動事務處理等模型的相關性能,重點介紹這些選擇的性能部分。有關此處所比較的技術方面的代碼示例,請參閱 Transaction Control(英文)中的相關文章。體系結構選項事務處理控件模型包括數據庫事務處理、手動事務處理和自動事務處理。雖然這些模型完成的任務相同,即維護某個事務處理范圍內資源之間的一致性,但它們又各有優缺點,因此用途也各不相同。數據庫事務處理數據庫事務處理是在 Transact-SQL 中實現的,Transact-SQL 將所需的操作打包在 BEGIN TRANSACTION 和 COMMIT/ROLLBACK TRANSACTION 語句中。手動事務處理手動控制事務處理范圍是通過使用一組 ADO.NET 對象進行的,使用明確的指令開始和結束事務處理。自動事務處理在 Microsoft Windows? 2000 組件服務 (COM+) 中注冊 .NET 類,以便參與事務處理。該類具有聲明性屬性的標記,指定該類參與事務處理的方式?!?STRONG>測試方案為了比較事務處理模型,我們使用了一個方法,在數據庫的相應表中插入訂單標頭和詳細信息。如果任何插入操作失敗,我們將事務處理恢復到原始狀態。如果所有插入操作成功,則提交事務處理。為了使測試盡可能符合實際情況,加載的數據庫中包含了 10 萬行客戶帳戶,100 萬行訂單(每個客戶 10 個訂單)和 500 萬個訂單詳細信息(每個訂單 5 個詳細信息)。這些數據位于 SQL Server 2000 數據庫和 SQL Server .NET 數據提供程序中,用于連接 SQL Server。此處比較的某些方法使用了 SQL Server 2000 的 XML 功能。 InsertOrder InsertOrder 方法接受代表一個訂單和多個詳細信息的數據,然后將數據插入到數據庫中相應的 Order 和 OrderDetails 表中,作為該事務處理的一部分。測試工具和策略在我們的測試中,一個 ASPX Web 頁調用了一個包含測試代碼的 .NET 程序集。如果直接測試事務處理控件技術,而不是通過 Web 服務器,我們可以獲得更好的絕對性能,然而,對通用應用程序方案而言,在無狀態環境中進行測試更具現實意義。另外,有很多測試工具可以對提供多線程測試的 Web 頁進行適當地強度測試。為達到測試目的,我們使用了 Microsoft 應用程序中心測試 (ACT)。它可以對 Web 服務器進行強度測試,分析 Web 應用程序(包括 ASP 頁及其使用的組件)的性能和可伸縮性問題。有關如何創建和運行測試的詳細信息,請參閱 ACT documentation(英文)。通過打開到服務器的多個連接并迅速發送 HTTP 請求,應用程序中心測試可以模擬一大組用戶。它還允許我們建立實際的測試方案,我們可以在方案中使用一組隨機參數值調用同一個方法。此功能很重要,這樣用戶就不必使用相同的參數值反復調用同一個方法。另一個有用的功能是,應用程序中心測試可以記錄測試結果,從而提供有關 Web 應用程序性能的最重要的信息。根據業務需求不同,應用程序可能在不同的事務處理隔離級別上運行。隔離是指一個事務處理必須和其他事務處理分離的程度。隔離級別越高,越能保證數據的一致性,但可能會嚴重影響應用程序的伸縮能力。降低隔離級別可以增強應用程序的可伸縮性,但卻不能保證數據的準確性。Microsoft SQL Server 2000 支持四種隔離級別:READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ 和 SERIALIAZABLE。默認情況下,它在 READ COMMITTED 隔離級別下運行。有關詳細信息,請參閱 Microsoft SQL Server 2000 documentation(英文)。Windows 2000 上運行的 COM+(1.0 版)只支持 SERIALIAZABLE 隔離,即最高程度的隔離。這樣高的數據保護級別大大影響了性能。(注意:與 Microsoft Windows .NET Server(目前最高版本是 Beta 3)一同發行的 COM+ 1.5 允許對事務處理組件的隔離級別進行配置。)為了對事務處理模型進行客觀的比較,我們在 SERIALIAZABLE 隔離級別上運行事務處理。計算機配置下表提供了用于執行測試的測試臺配置的簡單摘要。表 1:客戶端計算機配置客戶端數量計算機/CPU CPU 數量內存硬盤軟件 1Dell Precision WorkStation 530 MT1694 MHz  1512 MB16.9 GBWindows XP 應用程序中心測試 表 2:Web 服務器配置服務器數量計算機/CPU CPU 數量內存硬盤軟件 1Compaq Proliant 400 MHz 4640 MB 50 GBWindows 2000 Advance Server SP 2.NET 框架發行版本 表 3:數據庫服務器配置 服務器數量計算機/CPUCPU 數量內存硬盤軟件 1American Megatrends Atlantis 800 MHz2 1 GB28 GBWindows 2000 Advance Server SP 2 SQL Server Enterprise Edition SP 2 性能測試結果 吞吐量和滯后時間是關鍵的性能指標。對于給定數量的返回數據,吞吐量是指單位時間(通常是 1 秒)內處理的客戶端請求數量。因為從可用性角度來看,吞吐量在某一響應時間達到峰值是不能接受的,因此我們跟蹤了滯后時間,利用由 ACT 為每個運行的測試生成的報告,將其作為響應時間進行測定,并在響應時間超過 1 秒時立即停止某個給定方法的測試。 使用 OPENXML 執行 InsertOrder 在第一組測試中,訂單和訂單詳細信息從 DataSet 表中以 XML 格式傳遞到一個 Microsoft SQL Server 2000 存儲過程中。存儲過程中的 Transact-SQL 代碼使用 OPENXML 方法,通過一次數據庫往返將相應信息插入到 Order 和 OrderDetails 表中。測試首先運行一個包含 10 個詳細信息的訂單。 圖 1:InsertOrder_OpenXml(Order=1, Details=10)  注意在 DatabaseTxn 方法中,存儲過程將操作打包在 BEGIN TRANSACTION 和 COMMIT/ROLLBACK TRANSACTION 語句中。 在 ManualTxn 方法中,使用 ADO.NET SQLTransaction 對象來控制事務處理?!?在 ManualTxn_COM+_IP 和 ManualTxn_COM+_OP 中,都是使用 ADO.NET SQLTransaction 對象來控制事務處理,而程序集則由 COM+ 分別配置為庫和服務器程序包?!?包含 AutomaticTxn 和 AutCompleteTxn 實現的 .NET 程序集使用 COM+ 進行注冊。在 AutomaticTxn 中,我們顯式提交或中止事務處理,而在 AutoCompleteTxn 中,則由 .NET 程序集來確定提交或中止當前事務處理。 在 AutomaticTxn_IP 和 AutoCompleteTxn_IP 中,包含程序集的 COM+ 應用程序是一個由庫激活的應用程序,所以該應用程序在創建它的客戶端進程中運行?!?

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97