Yazılımcının Günlüğü | YazilimGunlugu.Com
Arama
Makale Kategorileri
Üye Girişi
Şuanki online üyeler()
Aktif üye bulunmamaktadır.


Microsoft Dynamics CRM 4.0 Performans Artışı

Yazar: Volkan KORKMAZ

Kategori: Microsoft Dynamics CRM

Eklenme Tarihi: 08.06.2010 18:24:45

Selamlar; Aşağıda anlatacaklarımı yapmadan önce mutlaka yedek almanızı öneririm. Bir müşterimizin sunucusunu yeni sunucuya migrate ederken 35-40 dk süren bu database (AsyncOperationBase) temizlik işlemi sonucu DB boyutunu 11 Gb'dan 3,5 Gb'a düşürebildik. Gözle görülür bir hız artışı olduğu kesin.

--1.adım // Database yedeği alındıktan sonra çalıştırılacak

CREATE NONCLUSTERED INDEX CRM_AsyncOperation_CleanupCompleted

ON [dbo].[AsyncOperationBase] ([StatusCode],[StateCode],[OperationType])

GO

CREATE NONCLUSTERED INDEX CRM_WorkflowLog_AsyncOperationID ON [dbo].[WorkflowLogBase] ([AsyncOperationID])

GO

CREATE NONCLUSTERED INDEX CRM_DuplicateRecord_AsyncOperationID ON [dbo].[DuplicateRecordBase] ([AsyncOperationID])

GO

CREATE NONCLUSTERED INDEX CRM_BulkDeleteOperation_AsyncOperationID ON [dbo].[BulkDeleteOperationBase]

(AsyncOperationID)

GO


--2.adım // Crm async servisi durdurulduktan sonra çalıştırılacak


-- Rebuild Indexes & Update Statistics on AsyncOperationBase Table

ALTER INDEX ALL ON AsyncOperationBase REBUILD WITH (FILLFACTOR = 80, ONLINE = OFF,SORT_IN_TEMPDB = ON, STATISTICS_NORECOMPUTE = OFF)

GO

-- Rebuild Indexes & Update Statistics on WorkflowLogBase Table

ALTER INDEX ALL ON WorkflowLogBase REBUILD WITH (FILLFACTOR = 80, ONLINE = OFF,SORT_IN_TEMPDB = ON, STATISTICS_NORECOMPUTE = OFF)

GO


--3.adım //DeleteRowCount'taki sayı kadar kayıtları silme işlemini gerçekleştiriyor.Aktif olan son kayıda geldiğinde işlemi bitiriyor

declare @DeleteRowCount int

Select @DeleteRowCount = 1000

declare @DeletedAsyncRowsTable table (AsyncOperationId uniqueidentifier not null)

declare @continue int, @rowCount int

select @continue = 1

while (@continue = 1)

begin

      begin tran

      insert into @DeletedAsyncRowsTable(AsyncOperationId)

      Select top (@DeleteRowCount) AsyncOperationId

      from AsyncOperationBase

      where OperationType in (1, 9, 12, 25, 27, 10) AND StateCode = 3 AND StatusCode in (30, 32)

      Select @rowCount = 0

      Select @rowCount = count(*) from @DeletedAsyncRowsTable

      select @continue = case when @rowCount <= 0 then 0 else 1 end

        if (@continue = 1)

        begin

            delete WorkflowLogBase from WorkflowLogBase W, @DeletedAsyncRowsTable d

            where W.AsyncOperationId = d.AsyncOperationId

delete BulkDeleteFailureBase From BulkDeleteFailureBase B, @DeletedAsyncRowsTable d

            where B.AsyncOperationId = d.AsyncOperationId

            delete AsyncOperationBase From AsyncOperationBase A, @DeletedAsyncRowsTable d

            where A.AsyncOperationId = d.AsyncOperationId

            delete @DeletedAsyncRowsTable

      end

      commit

end

Sağlıcakla kalın.
 

Volkan KORKMAZ
Microsoft Certified Business Management Solutions Specialist
volkankorkmaz@gmail.com
http://www.volkankorkmaz.net

Yazar Hakkında Yorum Yok Yorum Yaz Yazara ait diğer Makaleler
Tema
Anket
Visual Studio 2010 Beta 2'yi denediniz mi?


En Çok Okunan Makaleler
En Son Eklenen Makaleler
Soru Merkezinde Bekleyenler
Ana Sayfa | Hakkımızda | Editörler | Yazarlar | RSS RSS | İletişim
Yazılım Günlüğü 2007-2009 © Tüm Hakları Saklıdır.