نحوه كار سيستم آگاه سازی caching
پس  از انجام مراحل اشاره شده بستر لازم برای  استفاده از سيستم آگاه سازی caching آماده می شود. برای آشنائی با نحوه عملكرد سيستم فوق يك نمونه مثال را با يكديگر دنبال می نمائيم .
فرض كنيد قصد داريم نتيجه  query  زير را cache نمائيم .

query فوق ركوردهای موجود در جدول Employees را بازيابی می نمايد . برای آگاهی از اين كه چه زمانی يك ركورد جديد در جدول Employees درج ، حذف و يا ويرايش شده است تا بر اساس آن شی cache شده غير معتبر گردد ، از يك trigger استفاده می شود . trigger مورد نظر بر  روی جدول Employees  و توسط برنامه كمكی aspnet_regsql  ايجاد می شود .

ايجاد يك trigger بر روی جدول Employees
 CREATE TRIGGER dbo.[Employees_AspNet_SqlCacheNotification_Trigger]
ON [Employees]
FOR INSERT, UPDATE, DELETE AS BEGIN
SET NOCOUNT ON
EXEC dbo.AspNet_SqlCacheUpdateChangeIdStoredProcedure N’Employees’
END

بدين ترتيب ، پس از بروز هر گونه تغيير بر روی جدولی كه مانيتور می گردد ، يك stored procedure   با نام AspNet_SqlCacheUpdateChangeIdStoredProcedure فعال و changeId سطر مربوطه را در جدول آگاه سازی تغييرات اضافه می نمايد .

     AspNet_SqlCacheUpdateChangeIdStoredProcedure
 CREATE PROCEDURE dbo.AspNet_SqlCacheUpdateChangeIdStoredProcedure
@tableName NVARCHAR(450)
AS
BEGIN
UPDATE dbo.AspNet_SqlCacheTablesForChangeNotification WITH (ROWLOCK)
SET changeId = changeId + 1
WHERE tableName = @tableName
END
GO

در جدول AspNet_SqlCacheTablesForChangeNotification برای هر جدولی كه قصد مانيتورينگ آن را داريم يك ركورد ايجاد می گردد. پس از بروز تغيير در جدول ( نظير درج يك ركورد جديد ) ، يك واحد به ستون changeId اضافه می گردد . ASP. NET به صورت دوره ای اين جدول و مقادير مربوط به changeId را بررسی و در صورتی كه مقدار فيلد فوق تغيير نمايد ، از بروز تغييرات در جدول مورد نظر آگاه می گردد .
روش فوق يكی از محدوديت های غيرمعتبرسازی caching در  SQL Server 2000 و SQL Sever 7 را نشان می دهد : هر نوع تغيير بر روی جدول باعث غيرمعتبر شدن هرگونه query بر روی جدول می گردد . به عنوان نمونه فرض كنيد كه از query زير استفاده كرده باشيم :

  SELECT * FROM Employees WHERE City=’City1′

پس از اجرای query فوق ، ركورد كاركنانی كه فيلد شهر آنان معادل city1 باشد ، cache می گردد . در چنين وضعيتی اگر ركورد يكی از كاركنان كه فيلد city آن معادل city1 نباشد تغيير يابد ( ركورد اين نوع كاركنان قبلا” cache نشده است ) ،  سيستم آگاه سازی caching اطلاعات مربوط به غيرمعتبرسازی داده cache شده را ارسال می نمايد( غيرمعتبر شدن داده موجود در cache كه در عمل هيچكدام از ركوردهای آن در جدول  Employees  تغيير نكرده اند ) .
تشخيص و پيگيری اين كه كدام تغيير می تواند زمينه غيرمعتبر سازی يك داده cache شده را فراهم نمايد مستلزم انجام عمليات سنگينی توسط SQL Server 2000 است ( اين كار در SQL Server 2005  امكان پذير است ) .
شكل 1 ، نحوه كار سيستم غيرمعتبر سازی cache در SQL Server 2000 را نشان می دهد .

شكل 1 :  مانيتورينگ يك جدول به منظور بررسی انجام تغييرات در SQL Server 2000

در بخش دوازدهم بحث خود را بر روی data  caching  ادامه داده و با نحوه ايجاد cache dependency در يك بانك اطلاعاتی نمونه آشنا خواهيم شد.

دسته بندی : افزایش درآمد سایت