ورود

View Full Version : تناقض بين نتايج SpaceUsed و حجم فيزيكي فايلها



A.Farzin
سه شنبه 06 بهمن 1388, 12:37 عصر
با سلام

همانگونه که در این این تاپیک بحث شد:
http://www.barnamenevis.org/forum/showthread.php?t=199516
من فایلهای مربوط به ایندکسها را از فایلهای مربوط به داده‌ها مجزا کردم.
وقتی که جداسازی تمام شد، به Size فايلهاي ديتابيس نگاه کردم و با کمال تعجب دیدم که حجم فایلهای اختصاص یافته به ایندکسها حدود 98% از کل حجم Database است (یعنی 29.4GB از 30GB).
تصوری که از قبل داشتم این بود که 50% از حجم دیتابیس به ایندکسها اختصاص یافته است.
وقتی برای ارزیابی این تناقض از sp_spaceused برای استخراج حجم جداول، فضای اختصاص یافته به داده‌ها و حجم اشغال شده توسط ایندکسها استفاده کردم، دیدم که برخلاف File Size و بنا به تصور قبلی، ایندکسها 50% حجم دیتابیس را تشکیل می‌دهند.
به نظر شما مشکل از کجاست؟
ممنون

sia_2007
سه شنبه 06 بهمن 1388, 13:55 عصر
ایندکسهات رو ReBuild و ReOrganize کن

A.Farzin
سه شنبه 06 بهمن 1388, 18:36 عصر
ایندکسهات رو ReBuild و ReOrganize کن

اگر لینک را پیگیری کرده باشید، می‌بینیم که بردن ایندکسها از یک فایل به فایل دیگر بدون REBUILD کردن آنها (ولی در فایل جدید) ممکن نیست.

AminSobati
سه شنبه 06 بهمن 1388, 22:34 عصر
سلام دوست عزیزم،
در sp_spaceused از پارامتر @updateusage استفاده کنید تا فضای اشغال شده رو دقیق نمایش بده

A.Farzin
شنبه 10 بهمن 1388, 11:48 صبح
با سلام
به این طریق عمل کردم. نتیجه همانی بود که قبلاً گفتم. فرقی بین نتایج sp_spaceused با استفاده از @updateusage حاصل نشد.

USE DBName;
GO
EXEC sp_spaceused @updateusage = N'TRUE';
GO

میخواهم از محتویات هر فایل مطلع شوم.
چگونه میتوان يك لیست از Objectهایی (Index یا Table و ...) که دورن یک فایل قرار گرفته‌اند را استخراج کرد؟
ممنون

AminSobati
شنبه 10 بهمن 1388, 16:12 عصر
بدست آوردن اطلاعات یک فایل بی معنیه چون وقتی چند فایل عضو یک Filegroup باشن عملا مثل یک فایل یکپارچه عمل میکنند. ولی میشه تعیین کرد که هر ایندکس در کدوم Filegroup قرار گرفته. از sys.indexes استفاده کنین

A.Farzin
یک شنبه 11 بهمن 1388, 11:08 صبح
چون از 2000 استفاده مي‌كنم به جاي sys.indexes بايد از SysObjects استفاده كنم و در فيلدهاي SysObjects هم اشاره‌اي به FileGroup نشده است.
ضمن اينكه اطلاع از Filegroup به كارم نمياد. دنبال اين هستم كه ببينم آيا ممكن است در حين REBUILD كردن Indexها و Constrantها اشتباه كرده و Objectي غير از اينها به FGجديد رفته است.

AminSobati
یک شنبه 11 بهمن 1388, 23:01 عصر
در 2000 میتونین از sysindexes استفاده کنین.