.NET CLR性能評測
本文主要講解.NET CLR,其中最主要的.NET CLR性能檢測,通過此文你會對.NET CLR有更深刻的了解的
控制代碼提升也是數(shù)據(jù)庫管理員的一個關(guān)鍵角色。.NET CLR允許開發(fā)者直接在共享系統(tǒng)上部署,那么它所導(dǎo)致的最終在生產(chǎn)環(huán)境中部署產(chǎn)生的不可控源代碼和錯誤幾乎是不可避免的。
當(dāng)建立了一個錯誤版本的源代碼或者創(chuàng)建了一個從未測試過的代碼時都會馬上要求重編譯。最終測試環(huán)境中不能再有問題出現(xiàn),因?yàn)樵谫Y源不能匹配的時候產(chǎn)品程序集是不能做調(diào)試的。
下面的例子例舉了Microsoft C# 程序編譯器 csc.exe (.NET Framework 中的C# 編譯器).
- Csc.exe /noconfig /nowarn:"1701;1702" /warn:4 /define:DEBUG;TRACE
- /reference:
- C:\WINDOWS\Microsoft.NET\Framework\v2.0.50215
- \System.Data.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50215
- \System.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50215
- \System.Web.Services.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\
- v2.0.50215
- \System.XML.dll /debug+ /optimize- /out:obj\Release\
- MainframeWebService.dll
- /target:libraryIBMSystemCode.cs AssemblyInfo.cs "Web References\
- com.Mainframe.webservices\Reference.cs"
這是一個調(diào)用web服務(wù)的例子,下面的階段要求連續(xù)的代碼,這將在下面的例子中提到。這個程序是安裝在.NET Framework 2.0 SDK 下,可以在C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin找到。在SQL Server 2005 中使用CREATE ASSEMBLY命令或者用戶界面注冊一個創(chuàng)建的程序集“MainframeWebService.XmlSerializers.dll”
Sgen.exe /n /f MainframeWebService.dll
.NET CLR使用Transact-SQL 注冊程序集。
- CREATE ASSEMBLY [MainframeWebService]
- AUTHORIZATION dbo
- FROM 'C:\MWS\bin\Release\MainframeWebService.dll'
- WITH permission_set = external access
- go
- CREATE ASSEMBLY [MainframeWebService.XmlSerializers]
- AUTHORIZATION dbo
- FROM 'C:\MWS\bin\Release\MainframeWebService.xmlserializers.dll'
- WITH permission_set = safe
- go
上面的代碼完成了對開發(fā)代碼的編譯,產(chǎn)生了編譯代碼,然后通過CREATE FUNCTION/PROCEDURE加載了程序集到SQL Server 2005
◆.NET CLR之Productivity Tip
產(chǎn)生的代碼會在它的父程序集之后加載。在stealth模式下是相反的,并且父程序集自動加載。要求使用CREATE語句并用ALTER ASSEMBLY … WITH VISIBILITY = ON解鎖它。
使用專業(yè)工具可以讓開發(fā)者達(dá)到最大的生產(chǎn)力。數(shù)據(jù)庫部署環(huán)境也能夠被轉(zhuǎn)移到一個好的生產(chǎn)實(shí)例上,同時做到控制代碼保護(hù)。數(shù)據(jù)庫管理員 可以通過配置CLR技術(shù)而不會有系統(tǒng)穩(wěn)定性方面的風(fēng)險(xiǎn)。
.NET CLR之性能檢測
如果數(shù)據(jù)庫管理員 安裝了SQL Server 2005 ,然后開啟了Windows System Monitor (PERFMON.EXE),它可能會失望的看到只有一個SQL Server CLR counter (SqlServer:CLR “CLR Execution”)給出了CPU的統(tǒng)計(jì)報(bào)告。
然而這是一個誤導(dǎo),因?yàn)樵?NET CLR計(jì)算器組中存在著大量的計(jì)數(shù)器。他們在性能列表里面。他們可以根據(jù)SQL Server 服務(wù)的名字來做篩選。
◆.NET CLR之Productivity Tip
.一個服務(wù)器運(yùn)行多個SQL Server 實(shí)例處理的時候,每個.NET CLR代碼在列表中都不顯著,這時,應(yīng)該將某一個實(shí)例連接到.NET CLR,然后通過CPU的活動型來判別。
計(jì)數(shù)器有很多的設(shè)置幫助我們了解程序在SQL上運(yùn)行時的健康性和活動型。
◆.NET CLR Exceptions –Exceptions/Sec 提供了一個對應(yīng)用程序代碼的早期警告,如果這個值比平時高(這個設(shè)置也可以用在正常的功能上),應(yīng)用程序可能會失敗。更深入的報(bào)告要去看錯誤日志。
◆.NET CLRLoading – SQL Server 使用AppDomain在數(shù)據(jù)庫之間隔離代碼。一個CLR 為程序提供了一個獨(dú)立運(yùn)行時。這個設(shè)置可以檢測AppDomains和系統(tǒng)上加載的程序集的數(shù)量。這個值太大意味著“procedure cache”的壓力過大。
◆.NET CLR Memory –提供了三種CLR內(nèi)存的詳細(xì)信息。這個計(jì)數(shù)器還可以檢測CLR內(nèi)存的使用情況,可以設(shè)置警告值。提示代碼的問題,從而使代碼使用較低的內(nèi)存重新設(shè)計(jì)。
以上就是對.NET CLR的簡單介紹。
【編輯推薦】