تبلیغات
NiceSoft - معماری SQL Server قسمت چهارم

معماری SQL Server قسمت چهارم

تاریخ:شنبه 22 آبان 1389-02:21 ب.ظ

مدیریت تخصیص حوضه‌ها و فضاهای آزاد در SQL Server

ساختار داده های SQL Server  بسیار ساده و دارائی و خاصیت خوب زیر می باشد .

1-     اطلاعات فضاهای خالی بصورت بسیار فشرده نگهداری میشوند و بدین ترتیب صفحات كمی را اشغال می كنند و در نتیجه سرعت پیداكردن و تخصیص فضاهای خالی بعلت به حداقل رسیدن خواندن اطلاعات از دیسك به نحو چشمگیری افزایش می بابد.

2-     اكثر اطلاعات تخصیص به یكدیگر وابسته نیستند و این امر كار و نگهداری اطلاعات تخصیص را بسیار ساده‌تر می كند.

 

SQL Server از دونوع جدول تخصیص جهت تخصیص حوضه ها استفاده می كند :

1-   جدول تخصیص سراسری (GAM).  صفحات GAM اطلاعات حوضه های تخصیص یافته را در خود ذخیره می كنند. هر صفحه GAM 64000 حوضه تقریبا" نزدیك 4 گیگابایت را پوشش می دهد. GAM برای هر حوضه از یك بیت استفاده می‌كند یك بودن این بیت به معنای آزاد بودن حوضه و صفر بودن آن به معنای آن است كه آن حوضه تخصیص داده شده است.

2-   جدول تخصیص سراسری مشترك (SGAM) . صفحات SGAM اطلاعات حوضه های تركیبی استفاده شده با حداقل یك صفحه خالی را در خود نگهداری می كنند. هر صفحه SGAM نیز 64000 حوضه تقریبا" نزدیك 4 گیگابایت را پوشش می دهد و برای هر حوضه از یك بیت استفاده می‌كند. یك بودن این بیت به معنای تركیبی بودن حوضه و نیز داشت صفحه خالی در آن حوضه است و صفر بودن آن به معنای اینكه از آن حوضه استفاده نشده و حوضه ای است تركیبی و یا یك حوضه تركیبی است كه تمام صفحات آن تخصیص داده شده اند.

هر حوضه در جداولGAM  و SGAM دارائی یك خانه بوده كه با اطلاعات این دو خانه وضعیت آن حوضه مشخص می‌گردد.

وضعیت حوضه

بیت در GAM

بیت در SGAM

خالی (استفاده نشده)

1

0

حوضه یكدست یا یك حوضه تركیبی پر

0

0

حوضه تركیبی با صفحات خالی

0

1

 

بدین ترتیب الگوریتم تخصیص حوضه‌ها بسیار آسان می‌گردد. برای تخصیص یك حوضه یكدست SQL Server در جدول GAM بدنبال یك بیت 1 می‌گردد و بعد از تخصیص مقدار آنرا برابر صفر قرار می‌دهد ونیز برای یافتن یك حوضه تركیبی با صفحه خالی در جدول SGAM بدنبال یك بیت 1 می‌گردد. برای تخصیص یك حوضه تركیبی SQL Server در جدول GAM بدنبال یك بیت 1 جستجو كرده و بعد از تخصیص آنرا 0 نموده و همچنین بیت متناظر آنرا در جدول SGAM 1 می نماید. برای آزاد سازی یك حوضه SQL Server  بیت GAM آن مساوی 1 و بیت  SGAM آنرا مساوی 0 قرار میدهد. البته الگوریتمی كه در SQL Server استفاده میشود بسیار پیچیده بوده و بسادگی كه در اینجا توضیح داده شده نیست ، اما اساس الگوریتم همانطور كه توضیح داده شده بواسطه عدم مدیریت اطلاعات حوضه‌های وابسته به هم  ساده است.

 

صفحات اطلاعات صفحه های خالی[1] (PFS)  در یك ساختار پشته ای اطلاعات صفحات داده ای و یا انواع داده ای text ، ntext و image تخصیص داده شده و مقدار فضای خالی هر یك را در خود ذخیره می‌كنند. هر PFS تقریبا" 8000 صفحه را پوشش می‌دهد. PFS با استفاده از یك الگوی بیتی برای هر صفحه مشخص میكند كه آیا آن صفحه خالی است یا 1 تا 50 درصد یا 51 تا 80 درصد یا 81 تا 95 درصد و یا 96 تا 100 درصد آن پر شده است.

بعد از آنكه یك حوضه به یك شئ تخصیص یافت. SQL Server از صفحات PFS برای ذخیره كردن اطلاعات مقدار پر بودن یا خالی بودن صفحات آن حوضه استفاده می‌كند. از این اطلاعات هنگام تخصیص یك صفحه جدید و یا پیدا كردن یك صفحه با مقداری فضای خالی جهت درج اطلاعات جدید توسط SQL Server استفاده می‌گردد.

اولین صفحه PFS دقیقا" بعد از صفحه آغازین یك فایل داده‌ای  (با شماره صفحه 1)  قرار می‌گیرد.بعد از آن صفحه GAM (با شماره صفحه 2) و یعد از آن صفحه SGAM (با شماره صفحه 3) قرار می‌گیرند.در صورت نیاز (بزرگ بودن بانك اطلاعاتی) صفحه PFS بعدی 8000 صفحه بعد از صفحه PFS اولیه قرار می‌گیرد و همچنین یك صفحه GAM دیگر 64000 حوضه بعد از اولین GAM (در صفحه 2) و یك صفحه SGAM دیگر 64000 حوضه بعد از اولین SGAM (در صفحه 3) قرار می‌گیرد.

 

  

فایلها و گروه های فایلی فیزیكی

 MS SQL Server  بانك اطلاعاتی را به فایلهای فیزیكی سیستم عامل تخصیص میدهد. داده ها و تراكنشها هیچگاه در یك فایل ذخیره نمیگردند. SQL Server  سه نوع فایل دارد

  • فایلهای داده ای اصلی (اولیه primary) : فایل داده ای اصلی نقطه شروع بانك اطلاعاتی بوده و آدرس سایر فایلهای بانك اطلاعاتی نیز در آن قرار دارند. هر بانك اطلاعاتی یك فایل اصلی دارد. پسوند فایلهای اصلی mdf میباشد
  • فایلهای اطلاعاتی فرعی (ثانویه secondary) : درصورتیكه فایل داده ای اصلی نتواند تمام اطلاعات داده ای را در خود ذخیره كند از فایلهای اطلاعاتی فرعی استفاده میگردد.یك بانك اطلاعاتی میتواند بدون فایل فرعی بوده و یا یك و چندین فایل اطلاعاتی فرعی داشته باشد. پسوند فایلهای اطلاعاتی فرعی ndf میباشد.
  • فایلهای تراكنش : فایلهای تراكنش تمام اطلاعات تغییرات داده های سیستم را جهت تعمیر و اصلاح بانك اطلاعاتی در خود ذخیره میكنند.هر بانك اطلاعاتی حداقل یك فایل تراكنش دارد.پسون فایلهای تراكنش ldf  میباشد.

البته MS SQL Server  در مورد استفاده از پسوندهای mdf و  ndf و  ldf اجبار نمیكند و توصیه میشود جهت خوانائی و تشخیص ساده انواع فایلها از این پسوند ها استفاده شود.

در SQL Server  محل تمام فایلهای بانك اطلاعاتی در هر دو فایل master و فایل اصلی بانك اطلاعاتی ذخیره میشوند.اكثر مواقع موتور بانك اطلاعاتی SQL Server از اطلاعات درون بانك اطلاعاتی master جهت پیدا كردن فایلهای یك بانك اطلاعاتی استفاده میكند.تنها در بعضی موارد خاص است كه موتور بانك اطلاعاتی SQL Server از اطلاعات درون فایل اصلی بانك اطلاعاتی جهت دستیبای به فایلهای بانك اطلاعاتی و مقدار دهی بانك اطلاعاتی master استفاده میكند این موارد عبارتند از:

·         هنگام اتصال یك بانك اطلاعاتی با استفاده از روال ذخیره شده sp_attach_db.

·         هنگام ارتقاء SQL Server  از نگارش 7 به 2000 .

·         هنگام بازیابی بانك اطلاعاتی master.

 

فایلهای Sql Server  دو نوع نام فایل دارند :

·         نام منطقی فایل (logical_file_name)   نامی است كه جهت ارجاع به فایل در Transact-SQL به كار میرود. نام منطقی فایل باید از قوانین نام گذاری SQL Server جهت شناسه ها پیروی كند و باید در بانك اطلاعاتی یكتا باشد.

·         نام فیزیكی فایل (os_file_name)  این نام همانگونه كه از اسمش پیداست نام فایل فیزیكی بوده و از قوانین نام گذاری سیستم عامل پیروی میكند.مثال زیر یك نمونه از نامهای فایل منطقی و فیزیكی را در SQL Server  نشان میدهد.

 

فایلهای  داده ای و تراكنش بانكهای اطلاعاتی SQL Server بر روی سیستمهای فایلی FAT , NTFS به خوبی كار میكنند.ولی بر روی سیستمهای فشرده شده كار نمیكنند.

صفحات در فایلهای داده ای SQL Server بصورت پشت سر هم از شماره صفر به بالا شماره گذاری میشوند. هر فایل یك شماره شناسائی فایل دارد. هر صفحه یكتا از بانك اطلاعاتی احتیاج به هر دو شماره شناسائی فایل و صفحه دارد. مثال زیر تعداد و شماره صفحات موجود در یك بانك اطلاعاتی با فایل اصلی 4 مگا بایت و فایل فرعی 1 مگا بایتی را نشان میدهد.

اولین صفحه در هر فایل ، سر صفحه و شامل اطلاعات شناسه ها و مشخصات فایل میباشد.جندین صفحه دیگر اولیه نیز شامل اطلاعات سیستمی نظیر نقشه تخصیص فضا میباشند. یكی از صفحات سیستمی ذخیره شده در هر دو فایل اصلی داده ای و اولین فایل تراكنش شامل اطلاعات راه اندازی بانك اطلاعاتی میباشد.

SQL Server  میتواند بصورت خودكار فضای فایلها را اضافه كند. هنگام تعریف یك فایل میتوان  مقدار افزایش آنرا نیز مشخص نمود و هرگاه كه آن فایل پر شد به اندازه تعریف شده به فضای آن اضافه میشود.هر فایل همچنین میتواند یك اندازه حداكثر داشته باشد. در صورتیكه این اندازه حداكثر مشخص نگردد آن فایل میتواند به اندازه كل فضای دیسك سخت گسترش یابد.


ادامه دارد قسمت پنجم



[1] Page Free Space




How long does it take to recover from Achilles injury?
یکشنبه 26 شهریور 1396 10:31 ب.ظ
Hi, Neat post. There's a problem along with your
web site in internet explorer, could check this? IE nonetheless is the market chief and
a huge part of other people will miss your great writing because of this problem.
lauramyhr.hatenablog.com
سه شنبه 10 مرداد 1396 07:03 ق.ظ
Excellent beat ! I wish to apprentice while you amend your site, how can i subscribe for a blog web site?
The account helped me a acceptable deal. I had been tiny bit acquainted of this your broadcast provided bright clear concept
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر