PDA

View Full Version : پس از shrink data file



farshad22
دوشنبه 06 تیر 1390, 08:47 صبح
سلام
با توجه به اینکه شرینک کردن فایل دیتا باعث fragmentation می شود:
1-برای رفع این مسئله میشه اقدامی انجام داد؟
2-آیا بعد از مدتی کار با دیتابیس, ممکنه دوباره performance پایگاه به حالت قبل از شرینک برگردد؟
3-اگر از این دیتابیس backup بگیریم و بعد restore کنیم دیتا چطوری روی هارد میشینه؟آیا مثل روز اول ساخت دیتابیس, مرتب و بدون fragmentation در می آید؟

in_chand_nafar
دوشنبه 06 تیر 1390, 15:10 عصر
دوست عزيز Shrink كردن Data file پدر اون رو در مياره بهترين راه حل براي اين موضوع Rebuild‌كردن مجدد ايندكس ها است
از اين دستور استفاده كن

EXEC sp_MSforeachtable @command1="print '?' DBCC DBREINDEX ('?')"

Shrink حالت هاي مختلفي داره زياد وقت ندارم كه اون رو كامل تشريح كنم
باي

in_chand_nafar
دوشنبه 06 تیر 1390, 15:21 عصر
در 2005 و 2008 و Denali مي تواني با استفاده DMV ها وضعيت Fragmentation را بررسي كني
نمونه DMV
SELECT DB_NAME(DPS.DATABASE_ID) AS [DatabaseName] ,OBJECT_NAME(DPS.OBJECT_ID) AS TableName ,SI.NAME AS IndexName ,DPS.INDEX_TYPE_DESC AS IndexType ,DPS.AVG_FRAGMENTATION_IN_PERCENT AS AvgPageFragmentation ,DPS.PAGE_COUNT AS PageCounts FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL , NULL, NULL) DPS --N'LIMITED') DPS INNER JOIN sysindexes SI ON DPS.OBJECT_ID = SI.ID AND DPS.INDEX_ID = SI.INDID ORDER BY DPS.avg_fragmentation_in_percent DESC

---------------
جهت رفع Fragmentation در بعضي از مواقع بايد Rebuild‌و در برخي Reorganize بايد انجام داد
اصولا Rebuild زمان زيادي را به خود تخصيص مي دهد چون ساختار ايندكس از نوع ساخته مي شود
ولي در Reorganize اينگونه نمي باشد بررسي اين موضوع خود نيازمند Topic جداگانه است

1. sp_MSforeachtable 'ALTER INDEX ALL ON ? REORGANIZE'
2. sp_MSforeachtable 'ALTER INDEX ALL ON ? REBUILD WHILE (ONLINE=ON)'
3. sp_MSforeachtable 'ALTER INDEX ALL ON ? REBUILD

-------
Exec sp_MSForEachtable 'ALTER INDEX ALL ON ? REBUILD;

farshad22
دوشنبه 06 تیر 1390, 17:10 عصر
یعنی با rebuild اثر شرینک کردن دیتافایل رفع می شود؟