Microsoft Dynamics CRM 4.0 Performans Artışı

Yazar: Volkan KORKMAZ
Kategori: Microsoft Dynamics CRM
Eklenme Tarihi: 8.6.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


Volkan KORKMAZ

Bilgisayar mühendisliği mezunu olan, Volkan KORKMAZ 2004'den beri sektörde birçok projede yazılımcı ve danışman olarak görev almıştır. Özellikle Microsoft Dynamics ,MOSS ve Web projeleri alanlarında yapılan entegrasyonlar üzerine uzmanlaşmıştır.

Diğer uzmanlık alanları içinde HP ServiceDesk ve ERP(logo, netsis) programları bulunmaktadır. MCSD.NET ve Microsoft Certified Business Management Solutions Specialist sertifikalarına sahiptir.

Şu an sektöründe lider bir yazılım firmasında yazılım geliştirme müdürü olarak çalışmaktadır. Ayrıca kurumsal ve bireysel olarak eğitim vermektedir.
Bu makaleye ilk yorum yapan siz olun.

Yorumunuz