成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

優(yōu)化ASP.NET 2.0 Profile Provider

開發(fā) 后端
本文介紹優(yōu)化ASP.NET 2.0 Profile Provider,如果在沒有進行任何必要優(yōu)化的情況下使用過它們,你的服務(wù)器將會因為業(yè)務(wù)量的增長而變得異常繁忙。

優(yōu)化ASP.NET 2.0 Profile Provider

你可知道優(yōu)化ASP.NET 2.0 Profile Provider中有兩個能進行優(yōu)化的重要存儲過程嗎?如果在沒有進行任何必要優(yōu)化的情況下使用過它們,你的服務(wù)器將會因為業(yè)務(wù)量的增長而變得異常繁忙。這里有一個故事:

在2006年3月份的MIX大會上展示了Pageflakes。當(dāng)時我們是我們最富有魅力的時候。我們是作為支持Showcase of Atlas Web site的第一家公司。每天訪問站點的用戶數(shù)量接連攀升。有一天我們注意到,數(shù)據(jù)庫服務(wù)器不再工作了。然后我們重新啟動了服務(wù)器,工作恢復(fù)了正常,可過了一小時后,服務(wù)器再次死掉了。在我們對服務(wù)器主體部分進行了檢查分析之后,我們發(fā)現(xiàn)CPU占用率高達100%并且IO使用率更高。

硬盤驅(qū)動器發(fā)熱,并進行了自動關(guān)閉以保護其不受損壞。這對我們來說感到十分驚奇,因為我們原以為我們一直都很聰明,并且針對每個單獨的Web服務(wù)功能都使用了 profile。因此,我們對上百兆的日志進行了分析希望能找到那個Web服務(wù)耗費了這么多時間。我們對其中一個產(chǎn)生了懷凝。它是加載用戶頁面配置的第一個功能。我們將這個功能分解成了很多小的部分以便我們能快速找到那一部分花費了大部分時間。

  1. private GetPageflake(string source, string pageID, string userUniqueName)  
  2. {  
  3. if( Profile.IsAnonymous )  
  4. {  
  5. using (new TimedLog(Profile.UserName,"GetPageflake"))  

正如你所看到的情形,整個方法主體就是用于計時。如果你想了解這種計時是如何工作的,我會在一篇新的文章中進行解釋。我們也對其中一小部分我們懷凝最耗費資源的功能進行了計時。但是在我們的代碼中需要花費大量時間處理的部分很多。我們的代碼一直都是經(jīng)過優(yōu)化的(畢竟,你知道是誰在查看它,就是我)。

同時,用戶開始了大叫,管理也開始混亂,支持部門的員工也開始抱怨這么多電話。開發(fā)人員搞得焦頭亂額此時也變得胡言亂語。這并不是什么特殊情況,僅僅就是一個每個月會遇到2次的一個典型解決方案。

現(xiàn)在你一定在大聲叫喊了,“你可以使用SQL Profiler啊,你這個傻瓜!”。問題是我們使用的是SQL Server工作組版本。不支持SQL Profiler這個功能。因此我們不得不采用我們的方法來解決這個問題,無論怎樣也得使其在服務(wù)器上正常運行。不要問這個到底如何實現(xiàn)。在運行了SQL Profiler以后,孩子,真讓我們吃驚!原來才是這個巨大的存儲過程dbo.aspnet_Profile_GetProfiles給我們帶來了痛苦!

我們習(xí)慣大量使用(并且一直使用)Profile provider這個工具。

  1. CREATE PROCEDURE [dbo].[aspnet_Profile_GetProfiles]  
  2.  @ApplicationName nvarchar(256),  
  3. @ProfileAuthOptions int,  
  4. @PageIndexint,  
  5. @PageSize int,  
  6. @UserNameToMatch nvarchar(256) = NULL,  
  7. @InactiveSinceDate datetime = NULL 
  8. AS  
  9. BEGIN  
  10. DECLARE @ApplicationId uniqueidentifier  
  11. SELECT @ApplicationId = NULL 
  12. SELECT @ApplicationIdApplicationId = ApplicationId  
  13. FROM aspnet_Applications  
  14. WHERE LOWER(@ApplicationName)  
  15. = LoweredApplicationName  
  16.  
  17.  IF (@ApplicationId IS NULL)  
  18. RETURN  
  19.  
  20.  -- Set the page bounds  
  21. DECLARE @PageLowerBound int  
  22. DECLARE @PageUpperBound int  
  23. DECLARE @TotalRecords int  
  24.  SET @PageLowerBound = @PageSize * @PageIndex  
  25.  SET @PageUpperBound = @PageSize - 1 + @PageLowerBound  
  26.  
  27. -- Create a temp table TO store the select results  
  28. CREATE TABLE #PageIndexForUsers  
  29. (  
  30. IndexId int IDENTITY (0, 1) NOT NULL,  
  31. UserId uniqueidentifier  
  32. )  
  33.  
  34. -- Insert into our temp table  
  35.  INSERT INTO #PageIndexForUsers (UserId)  
  36.  
  37. SELECT u.UserId  
  38. FROMdbo.aspnet_Users  
  39. u, dbo.aspnet_Profile p  
  40. WHERE ApplicationId = @ApplicationId  
  41. AND u.UserId = p.UserId  
  42. AND (@InactiveSinceDate  
  43. IS NULL OR LastActivityDate  
  44. <= @InactiveSinceDate)  
  45. AND (  
  46. (@ProfileAuthOptions = 2)  
  47. OR (@ProfileAuthOptions = 0 
  48. AND IsAnonymous = 1)  
  49. OR (@ProfileAuthOptions = 1 
  50. AND IsAnonymous = 0)  
  51. )  
  52. AND (@UserNameToMatch  
  53. IS NULL OR LoweredUserName  
  54. LIKE LOWER(@UserNameToMatch))  
  55. ORDER BY UserName  
  56.  
  57. SELECT u.UserName, u.IsAnonymous, u.LastActivityDate,  
  58. p.LastUpdatedDate, DATALENGTH(p.PropertyNames)  
  59. + DATALENGTH(p.PropertyValuesString)  
  60. + DATALENGTH(p.PropertyValuesBinary)  
  61. FROMdbo.aspnet_Users  
  62. u, dbo.aspnet_Profile p, #PageIndexForUsers i  
  63. WHERE  
  64. u.UserId = p.UserId  
  65. AND p.UserId = i.UserId  
  66. AND i.IndexId >= @PageLowerBound  
  67. AND i.IndexId <= @PageUpperBound  
  68.  
  69. DROP TABLE #PageIndexForUsers  
  70.  
  71. END  
  72. END 

以上是優(yōu)化ASP.NET 2.0 Profile Provider。

【編輯推薦】

  1. 淺析ASP.NET中配置文件
  2. .NET RIA Services就像ASP.NET那樣方便
  3. ASP.NET AJAX Extensions中UpdatePanel控件概述
  4. ASP.NET調(diào)用UpdatePanel的Update()方法
  5. 淺談ASP.NET AJAX的WCF服務(wù)
責(zé)任編輯:佚名 來源: IT168
相關(guān)推薦

2009-07-21 10:40:36

ASP.NET Pro

2009-07-30 15:17:16

ASP.NET 2.0

2009-07-22 17:23:03

XmlDataSourASP.NET 2.0

2009-07-27 09:07:04

Profile SerASP.NET AJA

2009-07-30 14:55:43

ASP.NET 2.0

2009-05-11 13:48:00

ASP.NET 2.0緩存效率

2009-12-14 17:50:45

ASP.NET 2.0

2009-07-28 14:06:28

ASP.NET 2.0

2009-01-07 11:38:22

ASP.NET.NET錯誤記錄

2009-07-30 14:00:21

ASP.NET 2.0

2009-07-22 17:21:27

ASP.NET 2.0

2009-07-21 14:16:02

ASP.NET管道優(yōu)化

2009-08-04 17:16:16

ASP.NET代碼優(yōu)化

2009-12-11 16:28:23

ASP.NET 2.0

2009-07-21 15:27:12

ASP.NET 2.0

2009-07-22 17:28:07

CSS文件ASP.NET 2.0

2009-07-23 14:25:03

ASP.NET 2.0

2009-07-23 16:28:20

URL映射ASP.NET 2.0

2009-07-21 15:34:32

ASP.NET 2.0

2009-07-24 17:15:52

SiteMapData
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产天堂 | 成人深夜福利 | 亚洲高清在线 | 久久久噜噜噜www成人网 | 日本激情一区二区 | 淫片一级国产 | 黄色在线 | 韩日av片 | 亚洲精品二区 | 亚洲日韩中文字幕一区 | 中文字幕不卡 | 国产精品欧美一区二区 | av色在线| 亚洲最大av网站 | 天天操天天干天天爽 | 一级毛片视频在线 | 午夜视频在线播放 | 久久久婷婷 | 高清一区二区三区 | 狠狠亚洲 | 久久毛片 | 国产一在线观看 | 在线观看国产 | 亚洲 欧美 在线 一区 | 日韩有码在线观看 | 国产精品欧美一区二区 | 日韩视频在线观看 | 在线观看免费黄色片 | 中文精品视频 | 一区中文 | 久久99精品久久久久久 | 丝袜 亚洲 欧美 日韩 综合 | 国产精品久久久久久一区二区三区 | 精品国产三级 | 日日射夜夜骑 | 国产91丝袜在线熟 | 国产成人精品一区二区三区网站观看 | 亚洲欧美一区在线 | 国产精品久久久久久久久久久久午夜片 | 国产精品高潮呻吟久久久久 | 一级a性色生活片久久毛片波多野 |