SlideShare a Scribd company logo
1 of 94
‫ساختار‬ ‫بر‬ ‫ای‬ ‫مقدمه‬
‫گذاری‬ ‫شاخص‬ ‫و‬ ‫فایل‬
‫فصل‬8‫کتاب‬Database Management System‫ویرایش‬
‫سوم‬
‫نشاطی‬ ‫محمود‬ ‫دکتر‬
‫فصل‬ ‫این‬ ‫در‬ ‫مهم‬ ‫های‬ ‫سوال‬
1)‫یک‬DBMS‫ماندگار‬ ‫های‬ ‫داده‬ ‫چگونه‬(Persistent
Data)‫کند؟‬ ‫می‬ ‫سازی‬ ‫ذخیره‬ ‫را‬
2)‫هزینه‬ ‫چرا‬IO‫بسیار‬ ‫داده‬ ‫پایگاه‬ ‫عملیات‬ ‫در‬
‫است؟‬ ‫مهم‬
3)DBMS‫کند‬ ‫می‬ ‫انتخاب‬ ‫را‬ ‫فایل‬ ‫ساختار‬ ‫چگونه‬
‫هزینه‬ ‫تا‬IO‫شود؟‬ ‫کمینه‬
4)Index‫کنیم؟‬ ‫استفاده‬ ‫آن‬ ‫از‬ ‫چگونه‬ ‫و‬ ‫چیست‬
5)‫کجا‬ ‫کدام‬ ‫هر‬ ‫و‬ ‫چیست؟‬ ‫ایندکس‬ ‫مختلف‬ ‫انواع‬
‫دارد؟‬ ‫کاربرد‬
6)‫از‬ ‫چگونه‬Index‫کارایی‬ ‫تا‬ ‫کنیم‬ ‫استفاده‬
‫کنیم؟‬ ‫بهینه‬ ‫را‬ ‫داده‬ ‫پایگاه‬
‫یک‬ ‫داخلی‬ ‫ساختار‬DBMS‫نمونه‬
Query Optimization
and Execution
Files and Access Methods
Buffer Management
Disk Space Management
Application
SQL
‫الیه‬‫اول‬:query‫به‬‫زبان‬
SQL‫را‬‫دریافت‬‫و‬‫پس‬‫از‬
parse‫کردن‬‫نحوه‬‫اجرا‬‫را‬
‫مشخص‬‫می‬‫کند‬.
‫الیه‬‫دوم‬:‫برای‬‫الیه‬
،‫باالتر‬‫مفهوم‬File‫را‬
‫ایجاد‬‫می‬‫کند‬.
File‫مجموعه‬‫از‬‫صفحات‬
‫است‬.
‫هر‬‫صفحه‬‫حاوی‬‫یک‬‫یا‬
‫چند‬‫رکورد‬‫است‬.‫الیه‬ ‫چند‬ ‫ساختار‬MS
‫یک‬ ‫داخلی‬ ‫ساختار‬DBMS‫نمونه‬
Query Optimization
and Execution
Files and Access Methods
Buffer Management
Disk Space Management
Application
SQL
‫الیه‬‫سوم‬:‫وظیفه‬‫انتقال‬
‫صفحات‬‫از‬‫حافظه‬‫جانبی‬‫به‬
‫حافظه‬‫اصلی‬‫را‬‫به‬‫عهده‬
‫دارد‬.
‫الیه‬‫چهارم‬:‫مدیریت‬‫فضای‬
‫روی‬‫دیسک‬‫را‬‫به‬‫عهده‬
‫دارد‬.
‫توابع‬allocate،
deallocate،read‫و‬write
‫صفحات‬
‫فایل‬ ‫ساختار‬
‫نحوه‬‫قرار‬‫گرفتن‬‫رکوردهای‬‫اطالعاتی‬‫در‬
‫فایل‬‫را‬‫اصطالحا‬‫ساختار‬‫فایل‬‫می‬‫گوییم‬.
‫هر‬‫نوع‬‫ساختار‬‫فایل‬‫برخی‬‫از‬‫عملیات‬‫روی‬
‫پایگاه‬‫داده‬‫را‬‫کارا‬‫می‬‫کند‬‫و‬‫برخی‬
‫دیگر‬‫را‬‫دشوار‬‫می‬‫کند‬.
‫مثال‬:‫فرض‬‫کنید‬‫رکوردهای‬‫اطالعاتی‬‫شامل‬
«‫نام‬‫کارمند‬»،«‫نام‬‫خانوادگی‬‫کارمند‬»
«‫تاریخ‬‫تولد‬»‫و‬«‫حقوق‬‫کارمند‬»‫باشد‬.
‫اگر‬‫فهرست‬‫کارمندان‬‫را‬‫به‬‫اساس‬‫حقوق‬‫به‬
‫صورت‬‫نزولی‬‫بخواهیم‬:
‫ساختار‬‫فایل‬:‫مرتب‬‫بر‬‫اساس‬‫حقوق‬
‫مثال‬
‫اگر‬‫نام‬‫کارمندانی‬
‫را‬‫بخواهیم‬‫که‬‫بعد‬
‫از‬‫سال‬1340‫متولد‬
‫شده‬‫اند‬‫باید‬‫کل‬
‫فایل‬‫را‬‫اسکن‬
‫کنیم‬.
‫اگر‬‫حقوق‬‫کارمندان‬
‫با‬‫سرعت‬‫زیاد‬‫عوض‬
،‫شود‬‫ترتیب‬
‫رکوردها‬‫را‬‫باید‬
‫شاخص‬‫گذاری‬‫کمک‬‫می‬،‫کند‬‫مشکالت‬‫باال‬
‫را‬‫حل‬‫کنیم‬
‫حافظه‬ ‫روی‬ ‫داده‬ ‫سازی‬ ‫ذخیره‬
‫ثانویه‬‫می‬ ‫ذخیره‬ ‫اطالعات‬ ‫از‬ ‫زیادی‬ ‫حجم‬ ‫داده‬ ‫پایگاه‬ ‫در‬
‫شود‬.
‫باشد‬ ‫ماندگار‬ ‫باید‬ ‫های‬ ‫داده‬
‫شود‬ ‫نمی‬ ‫جا‬ ‫اصلی‬ ‫حافظه‬ ‫در‬ ‫ها‬ ‫داده‬( .‫این‬ ‫آیا‬
‫است؟‬ ‫مهم‬ ‫هنوز‬ ‫شرط‬)
‫و‬ ‫کنیم‬ ‫می‬ ‫ذخیره‬ ‫ثانویه‬ ‫حافظه‬ ‫روی‬ ‫را‬ ‫ها‬ ‫داده‬
‫می‬ ‫منتقل‬ ‫اصلی‬ ‫حافظه‬ ‫به‬ ‫باشد‬ ‫الزم‬ ‫پروسس‬ ‫وقتی‬
‫کنیم‬( .‫داده‬ ‫انتقال‬ ‫واحد‬=‫پارامتر‬ ،‫صفحه‬DBMS
‫است‬).
‫دیسک‬
‫حافظه‬ ‫روی‬ ‫داده‬ ‫سازی‬ ‫ذخیره‬
‫ثانویه‬
‫اصلی‬ ‫حافظه‬ ‫به‬ ‫جانبی‬ ‫حافظه‬ ‫از‬ ‫صفحه‬ ‫انتقال‬
(‫بالعکس‬ ‫و‬)‫در‬ ‫عملیات‬ ‫ترین‬ ‫پرهزینه‬DBMS
‫است‬.
‫تعداد‬Page IO‫شود‬ ‫کمینه‬ ‫باید‬.
‫مثال‬:‫تفاوت‬External Sorting‫و‬Internal Sorting
‫حافظه‬ ‫روی‬ ‫داده‬ ‫سازی‬ ‫ذخیره‬
‫ثانویه‬
‫فایل‬
‫صفحه‬
‫رکورد‬
‫حافظه‬ ‫روی‬ ‫داده‬ ‫سازی‬ ‫ذخیره‬
‫ثانویه‬‫دیسک‬
‫تصادفی‬ ‫دسترسی‬ ‫با‬ ‫سازی‬ ‫ذخیره‬ ‫ابزار‬ ‫مهمترین‬
(random access)
‫فرض‬:‫واکشی‬ ‫هزینه‬‫تصادفی‬ ‫صفحه‬ ‫یک‬‫است‬ ‫ثابت‬.
‫روی‬ ‫شده‬ ‫ذخیره‬ ‫فیزیکی‬ ‫ترتیب‬ ‫به‬ ‫را‬ ‫صفحات‬ ‫اگر‬
‫خواندن‬ ‫برای‬ ‫موردنیاز‬ ‫زمان‬ ،‫بخوانیم‬ ‫دیسک‬
‫یابد‬ ‫می‬ ‫کاهش‬.
‫نوار‬
‫است‬ ‫متوالی‬ ‫صورت‬ ‫به‬ ‫دسترسی‬( .Sequential)
‫و‬ ‫سازی‬ ‫آرشیو‬ ‫برای‬ ‫مناسب‬Backup‫گیری‬
‫یک‬ ‫رکورد‬ ‫هر‬ ،‫کنیم‬ ‫می‬ ‫فرض‬ ‫فایل‬ ‫الیه‬ ‫در‬
‫حافظه‬ ‫روی‬ ‫داده‬ ‫سازی‬ ‫ذخیره‬
‫ثانویه‬
‫اگر‬‫الیه‬‫فایل‬‫فضای‬‫جدید‬‫نیاز‬‫داشته‬
،‫باشد‬‫به‬‫الیه‬Disk Space Management
‫درخواست‬‫یک‬‫صفحه‬‫جدید‬‫می‬‫دهد‬.
‫اگر‬‫الیه‬‫فایل‬‫یک‬‫صفحه‬‫را‬‫نیاز‬
‫نداشته‬،‫باشد‬‫آن‬‫را‬‫از‬‫طریق‬Disk
Space Management‫آزاد‬‫می‬‫کند‬.
‫گذاری‬ ‫شاخص‬ ‫و‬ ‫فایل‬ ‫ساختار‬
‫به‬ ،‫شده‬ ‫ذخیره‬ ‫های‬ ‫داده‬ ،‫فایل‬ ‫الیه‬ ‫در‬
‫می‬ ‫داده‬ ‫نمایش‬ ‫رکوردها‬ ‫از‬ ‫مجموعه‬ ‫صورت‬
‫شود‬.
‫فایل‬ ‫سطح‬ ‫در‬ ‫عملیات‬:
‫فایل‬ ‫حذف‬ ،‫فایل‬ ‫ساختن‬
،‫رکورد‬ ‫حذف‬ ،‫رکورد‬ ‫درج‬
‫اسکن‬(Scan: )‫رکوردها‬ ‫همه‬ ‫به‬ ‫دسترسی‬
‫گذاری‬ ‫شاخص‬ ‫و‬ ‫فایل‬ ‫ساختار‬
‫مجموعه‬ ‫صورت‬ ‫به‬ ‫را‬ ‫رکوردها‬ ،‫فایل‬ ‫الیه‬
‫کند‬ ‫می‬ ‫ذخیره‬ ‫صفحات‬ ‫از‬.
‫رابطه‬ ‫هر‬ ‫به‬ ‫مربوط‬ ‫های‬ ‫صفحه‬ ،‫فایل‬ ‫الیه‬
‫شناسد‬ ‫می‬ ‫را‬.
،‫فایل‬ ‫الیه‬‫به‬ ‫مربوط‬ ‫صفحه‬ ‫هر‬ ‫خالی‬ ‫فضای‬
‫شناسد‬ ‫می‬ ‫را‬ ‫رابطه‬ ‫یک‬.
‫گذاری‬ ‫شاخص‬ ‫و‬ ‫فایل‬ ‫ساختار‬
‫ساختار‬Heap
‫فایل‬ ‫ساختار‬ ‫ترین‬ ‫ساده‬
‫ساختار‬ ‫در‬Heap‫در‬ ‫تصادفی‬ ‫صورت‬ ‫به‬ ‫رکوردها‬ ،
‫شوند‬ ‫می‬ ‫ذخیره‬ ‫مربوطه‬ ‫صفحات‬.
‫داشتن‬ ‫با‬rid‫رکورد‬ ‫به‬ ‫مربوط‬ ‫صفحه‬ ‫توان‬ ‫می‬
‫کنیم‬ ‫پیدا‬ ‫را‬ ‫موردنظر‬.
‫شده‬ ‫گذاری‬ ‫شاخص‬ ‫ساختار‬
‫از‬ ‫برخی‬ ‫کارایی‬ ‫که‬ ‫ساختار‬ ‫نوعی‬‫جستجو‬ ‫عملیات‬
‫دهد‬ ‫می‬ ‫بهبود‬ ‫را‬.
‫یک‬ ‫برای‬ ‫شاخص‬ ‫هر‬‫جستجو‬ ‫کلید‬(Search key)
‫گذاری‬ ‫شاخص‬ ‫و‬ ‫فایل‬ ‫ساختار‬
‫برای‬‫یک‬‫فایل‬‫واحد‬‫می‬‫توان‬‫چند‬‫نوع‬
‫شاخص‬‫گذاری‬‫داشت‬‫که‬‫هر‬‫کدام‬‫کلید‬
‫جستجوی‬‫خاص‬‫خودش‬‫را‬‫دارد‬.
‫مثال‬‫رکورد‬‫کارمندان‬
‫ذخیره‬‫سازی‬‫به‬‫صورت‬‫شاخص‬‫روی‬‫تاریخ‬‫تولد‬
‫ایجاد‬‫شاخص‬‫اضافی‬‫روی‬‫حقوق‬
‫گذاری‬ ‫شاخص‬ ‫و‬ ‫فایل‬ ‫ساختار‬
‫مفهوم‬ ‫دو‬ ‫با‬ ‫آشنایی‬
Data Entry:‫ایندکس‬ ‫فایل‬ ‫در‬ ‫شده‬ ‫ذخیره‬ ‫های‬ ‫رکورد‬
Data Record:‫داده‬ ‫حاوی‬ ‫رکوردهای‬:‫رکوردهای‬ ‫مانند‬
‫قبل‬ ‫مثال‬ ‫در‬ ‫کارمندان‬
‫داشتن‬ ‫با‬Data Entry‫به‬ ‫توانیم‬ ‫می‬Data Record
‫کنیم‬ ‫پیدا‬ ‫دسترسی‬.
‫ایده‬:
‫یافتن‬ ‫که‬ ‫سازیم‬ ‫می‬ ‫ای‬ ‫گونه‬ ‫به‬ ‫را‬ ‫شاخص‬Data Entry
‫باشد‬ ‫کارا‬ ‫آن‬ ‫در‬ ‫مشخص‬ ‫شرط‬ ‫یک‬ ‫با‬.
‫یافتن‬ ‫از‬ ‫بس‬Data Entry،Data Record‫پیدا‬ ‫را‬ ‫ها‬
‫گذاری‬ ‫شاخص‬
‫کردن‬ ‫مدل‬ ‫های‬ ‫روش‬Data Entry:
‫اول‬ ‫روش‬(‫شده‬ ‫بندی‬ ‫خوشه‬)
= Data recordData Entry
‫دوم‬ ‫روش‬
Data Entry = <K, rid>
‫سوم‬ ‫روش‬
Data Entry = <K, rid list>
‫اول‬ ‫روش‬
‫سوم‬ ‫و‬ ‫دوم‬ ‫روش‬
‫گذاری‬ ‫شاخص‬ ‫های‬ ‫روش‬ ‫مقایسه‬
‫اول‬ ‫روش‬ ‫در‬:
‫شاخص‬ ‫جستجو‬ ‫کلید‬ ‫اساس‬ ‫بر‬ ‫ای‬ ‫داده‬ ‫های‬ ‫رکورد‬
‫گیرند‬ ‫می‬ ‫قرار‬ ‫فایل‬ ‫در‬.
‫سوم‬ ‫و‬ ‫دوم‬ ‫روش‬ ‫در‬:
Data Entry‫به‬ ‫ها‬Data Record‫دهند‬ ‫می‬ ‫آدرس‬ ‫ها‬.
‫اول‬ ‫روش‬ ‫در‬:‫یک‬‫رکوردهای‬ ‫که‬ ‫داریم‬ ‫فایل‬
‫نگهداری‬ ‫شده‬ ‫گذاری‬ ‫شاخص‬ ‫صورت‬ ‫به‬ ‫ای‬ ‫داده‬
‫شوند‬ ‫می‬.
‫سوم‬ ‫و‬ ‫دوم‬ ‫روش‬ ‫در‬:‫فایل‬ ‫از‬ ‫شاخص‬ ‫فایل‬
‫است‬ ‫مستقل‬ ‫و‬ ‫مجزا‬ ‫ای‬ ‫داده‬ ‫رکوردهای‬.
‫شده‬ ‫گذاری‬ ‫خوشه‬ ‫شاخص‬ ‫نمایش‬
Index entries
Data entries = Data Record
direct search for
(Indexed Data File)
data entries
CLUSTERED
‫ترتیب‬data entry‫ترتیب‬ ‫با‬ ‫ها‬data record
‫یکسان‬ ‫ها‬(‫هم‬ ‫به‬ ‫نزدیک‬ ‫یا‬)‫است‬.
‫گذاری‬ ‫خوشه‬ ‫شاخص‬ ‫نمایش‬‫نشده‬
(Index File)
(Data file)
Data entries
UNCLUSTERED
‫ترتیب‬data entry‫ترتیب‬ ‫با‬ ‫ها‬data record
‫است‬ ‫متفاوت‬ ‫ها‬.
Data records
‫گذاری‬ ‫شاخص‬ ‫های‬ ‫روش‬ ‫مقایسه‬
‫شاخص‬ ‫از‬ ‫یکی‬ ‫حداکثر‬ ،‫شاخص‬ ‫چند‬ ‫با‬ ‫فایل‬ ‫یک‬ ‫برای‬
‫باشد‬ ‫اول‬ ‫نوع‬ ‫از‬ ‫تواند‬ ‫می‬ ‫ها‬.
‫چرا؟؟؟؟‬
‫اول‬ ‫نوع‬ ‫شاخص‬ ‫یکی‬ ‫حداکثر‬
‫و‬ ‫دوم‬ ‫نوع‬ ‫شاخص‬
‫سوم‬
‫دلخواه‬ ‫تعداد‬ ‫به‬
‫شده‬ ‫بندی‬ ‫خوشه‬ ‫شاخص‬(Clustered
Index)
‫اگر‬‫یک‬‫فایل‬‫به‬‫گونه‬‫ساختاردهی‬‫شود‬‫که‬
‫ترتیب‬data record‫ها‬‫شبیه‬‫ترتیب‬data Entry
‫ها‬،‫باشد‬‫شاخص‬‫خوشه‬‫بندی‬‫شده‬‫یا‬Clustered
‫نامیده‬‫می‬‫شود‬.
‫تعریف‬ ‫طبق‬ ،‫اول‬ ‫نوع‬ ‫های‬ ‫شاخص‬Clustered‫هستند‬.
‫سوم‬ ‫و‬ ‫دوم‬ ‫های‬ ‫شاخص‬Clustered‫نیستند‬.
‫بندی‬ ‫دسته‬Query‫به‬ ‫توجه‬ ‫با‬ ‫ها‬
‫محدوده‬‫جستجو‬
Range Search Query-‫محدوده‬ ‫جستجوی‬
‫مثال‬:‫حقوق‬ ‫با‬ ‫کارمندان‬ ‫نام‬
‫بین‬1500‫تا‬2500‫بدهید‬ ‫را‬.
 Select name from Employee where salary between 1500
and 2500
Equity Search Query-‫جستجوی‬‫برابری‬
‫مثال‬:‫حقوق‬ ‫با‬ ‫کارمندان‬ ‫نام‬
1000‫بدهید‬ ‫را‬.
 Select name from Employee where salary=1000
‫شده‬ ‫بندی‬ ‫خوشه‬ ‫شاخص‬(Clustered
Index)
‫می‬ ،‫شده‬ ‫بندی‬ ‫خوشه‬ ‫شاخص‬ ‫از‬ ‫استفاده‬ ‫با‬
‫کارایی‬ ‫توانیم‬Range Search Query‫به‬ ‫را‬
‫دهیم‬ ‫افزایش‬ ‫گیری‬ ‫چشم‬ ‫صورت‬.
‫چرا؟‬
‫در‬ ‫کنند‬ ‫می‬ ‫صدق‬ ‫جواب‬ ‫در‬ ‫که‬ ‫رکوردهایی‬
‫اند‬ ‫شده‬ ‫ذخیره‬ ‫هم‬ ‫مجاورت‬.
‫به‬ ‫صفحات‬ ‫از‬ ‫محدودی‬ ‫تعداد‬ ‫انتقال‬ ‫با‬
‫رسیم‬ ‫می‬ ‫جواب‬ ‫به‬ ،‫حافظه‬.
‫شده‬ ‫بندی‬ ‫خوشه‬ ‫شاخص‬Clustered
Index
‫اگر‬‫شاخص‬‫خوشه‬‫بندی‬‫نباشد؟‬
‫ممکن‬‫است‬‫هر‬‫رکورد‬،‫جواب‬‫در‬‫یک‬
‫صفحه‬‫مجزا‬‫قرار‬‫بگیرد‬.
‫در‬‫بدترین‬‫حالت‬‫به‬‫تعداد‬‫رکورد‬
‫های‬‫جواب‬‫باید‬‫صفحه‬‫به‬‫حافظه‬
‫منتقل‬‫کنیم‬.
IO Cost‫بسیار‬‫باال‬
‫کتاب‬ ‫مثال‬-‫جستجوی‬range-search
‫به‬ ‫ان‬ ‫در‬ ‫اخبار‬ ‫که‬ ‫بگیرید‬ ‫نظر‬ ‫در‬ ‫را‬ ‫اخبار‬ ‫کتاب‬ ‫یک‬
‫است‬ ‫شده‬ ‫نوشته‬ ‫جدیدترین‬ ‫به‬ ‫ترین‬ ‫قدیمی‬ ‫از‬ ‫زمانی‬ ‫صورت‬.
‫به‬ ‫پاسخ‬range_search Query‫است‬ ‫کارا‬ ‫بسیار‬ ‫زیر‬:
«‫تاریخ‬ ‫بین‬ ‫خبرها‬ ‫همه‬1/1/94‫تا‬1/1/95‫بدهید‬ ‫را‬»
‫کتاب‬ ‫مثال‬-‫جستجوی‬range-search
‫آن‬ ‫صفحات‬ ‫که‬ ‫بگیرید‬ ‫نظر‬ ‫در‬ ‫را‬ ‫خبر‬ ‫کتاب‬ ‫همان‬
‫باشد‬ ‫شده‬ ‫مرتبط‬ ‫نویسنده‬ ‫اساس‬ ‫بر‬.
‫اول‬ ‫نویسنده‬ ‫خبرهای‬ ‫اول‬ ‫فصل‬
‫دوم‬ ‫نویسنده‬ ‫خبرهای‬ ‫دوم‬ ‫فصل‬
....
‫به‬ ‫پاسخ‬range_search Query‫داشتن‬ ‫با‬ ‫حتی‬ ‫زیر‬
index‫نیست‬ ‫کارا‬:
«‫تاریخ‬ ‫بین‬ ‫خبرها‬ ‫همه‬1/1/94‫تا‬1/1/95‫را‬
‫بدهید‬»
‫تاریخ‬
94/1/1 11, 154,
344,453
94/1/2 99,98,545
94/1/3 1,2
…
95/1/1 45,9999,10001
‫مقایسه‬‫گذاری‬ ‫خوشه‬ ‫شاخص‬‫شده‬‫و‬
‫گذاری‬ ‫خوشه‬ ‫شاخص‬‫نشده‬
‫یک‬ ‫حداکثر‬ ‫فایل‬ ‫یک‬ ‫برای‬‫خوشه‬ ‫شاخص‬
‫گذاری‬‫شده‬‫باشیم‬ ‫داشته‬ ‫توانیم‬ ‫می‬!
‫چرا؟‬
‫شده‬ ‫گذاری‬ ‫خوشه‬ ‫شاخص‬ ‫صفت‬ ‫کدام‬ ‫اساس‬ ‫بر‬
‫بسازیم؟‬
‫توانیم‬ ‫می‬ ‫دلخواه‬ ‫تعداد‬ ‫به‬‫گذاری‬ ‫خوشه‬ ‫شاخص‬
‫نشده‬‫باشیم‬ ‫داشته‬.
‫توانیم‬ ‫می‬ ‫هایی‬ ‫شاخص‬ ‫چه‬ ‫اخبار‬ ‫کتاب‬ ‫برای‬
‫باشیم؟‬ ‫داشته‬
‫شاخص‬Primary‫و‬Secondary
‫تعریف‬ ‫نوع‬ ‫دو‬:
‫اول‬ ‫تعریف‬:‫روی‬ ‫شده‬ ‫تعریف‬ ‫های‬ ‫شاخص‬
Primary Key‫های‬ ‫شاخص‬Primary‫می‬ ‫گفته‬
‫شوند‬.
‫شاخص‬ ‫صورت‬ ‫این‬ ‫غیر‬ ‫در‬Secondary‫است‬.
‫دوم‬ ‫تعریف‬:‫نوع‬ ‫های‬ ‫شاخص‬1‫را‬Primary
index‫نوع‬ ‫های‬ ‫شاخص‬ ‫و‬2‫و‬3‫را‬Secondary
Index‫گوییم‬ ‫می‬.
‫شاخص‬Unique
‫اند‬ ‫شده‬ ‫منتشر‬ ‫یکسان‬ ‫تاریخ‬ ‫یک‬ ‫در‬ ‫که‬ ‫خبر‬ ‫دو‬Search Key
‫اصطالحا‬ ‫و‬ ‫یکسان‬duplicate‫هستند‬.
‫گذاری‬ ‫شاخص‬ ‫یک‬ ‫در‬ ‫اگر‬duplicate‫شاخص‬ ‫به‬ ،‫باشیم‬ ‫نداشته‬
‫مربوطه‬Unique Index‫گوییم‬ ‫می‬.
‫تاریخ‬
94/1/1 11, 154, 344,453
94/1/2 99,98,545
94/1/3 1,2
…
95/1/1 45,9999,10001
‫گذاری‬ ‫شاخص‬ ‫ساختارهای‬ ‫داده‬
‫داده‬ ‫گذاری‬ ‫شاخص‬ ‫برای‬ ‫کلی‬ ‫روش‬ ‫دو‬
‫شود‬ ‫می‬ ‫استفاده‬:
‫از‬ ‫استفاده‬HASHING
‫از‬ ‫استفاده‬TREE
‫هدف‬:‫مقدار‬ ‫داشتن‬ ‫با‬«‫جستجو‬ ‫کلید‬»‫چگونه‬
‫کنیم؟‬ ‫پیدا‬ ‫را‬ ‫جواب‬ ‫رکوردهای‬ ‫صفحه‬ ‫شماره‬
‫مثال‬:«‫که‬ ‫بیابید‬ ‫را‬ ‫دانشجویانی‬ ‫رکوردهای‬
‫نام‬‫ها‬ ‫آن‬‫علی‬‫است‬.»
‫مثال‬:«‫که‬ ‫بیابید‬ ‫را‬ ‫خبرهایی‬ ‫رکوردهای‬
‫به‬ ‫مربوط‬ ‫ها‬ ‫آن‬ ‫تاریخ‬‫مهر‬ ‫اول‬‫است‬.»
‫بر‬ ‫مبتنی‬ ‫گذاری‬ ‫شاخص‬Hash
‫با‬‫استفاده‬‫از‬‫تابع‬Hash‫می‬‫توانیم‬
‫رکورد‬‫ها‬‫را‬‫به‬‫گونه‬‫ای‬‫بچینیم‬‫که‬‫با‬
‫داشتن‬‫کلید‬،‫جستجو‬‫با‬‫سرعت‬‫باال‬‫به‬‫صفحه‬
‫مربوط‬‫به‬‫رکورد‬‫دسترسی‬‫پیدا‬‫کنیم‬.
‫بر‬ ‫مبتنی‬ ‫گذاری‬ ‫شاخص‬Hash
‫سوال‬:‫شاخص‬ ‫اگر‬ ‫کارمندان‬ ‫مثال‬ ‫در‬Hash‫اساس‬ ‫بر‬
‫به‬ ‫چگونه‬ ‫باشد‬ ‫شده‬ ‫ساخته‬ ‫کارمندان‬ ‫تولد‬ ‫تاریخ‬
Query‫دهیم؟‬ ‫پاسخ‬ ‫زیر‬ ‫های‬
«‫سال‬ ‫در‬ ‫که‬ ‫کارمندانی‬ ‫حقوق‬1355‫شده‬ ‫متولد‬
‫اند؟‬»
«‫که‬ ‫کارمندانی‬ ‫تولد‬ ‫تاریخ‬2000‫می‬ ‫حقوق‬ ‫تومان‬
‫گیرند؟‬»
«‫های‬ ‫سال‬ ‫بین‬ ‫که‬ ‫کارمندانی‬ ‫حقوق‬ ‫میانگین‬1345
‫تا‬1355‫اند؟‬ ‫شده‬ ‫متولد‬»
‫از‬ ‫مثال‬Hashing
‫زیر‬ ‫شرح‬ ‫به‬ ‫ها‬ ‫رکورد‬ ‫مجموعه‬ ‫کنید‬ ‫فرض‬
‫باشد‬.
‫از‬ ‫مثال‬Hashing
‫رکوردها‬‫را‬‫به‬
‫صورت‬‫خوشه‬‫بندی‬
،‫شده‬‫با‬
‫استفاده‬‫از‬
‫تابع‬Hash‫زیر‬
‫در‬‫فایل‬‫مرتب‬
‫کنید‬.
«‫باقی‬‫مانده‬
‫تاریخ‬‫تولد‬
‫به‬‫عدد‬3»
‫ورودی‬‫تابع‬:
‫تاریخ‬‫تولد‬
‫خروجی‬‫تابع‬:
‫یک‬‫عدد‬‫صحیح‬
‫بین‬0‫تا‬3
‫از‬ ‫مثال‬Hashing
‫تابع‬
Hash
‫تولد‬ ‫تاریخ‬
‫است‬ ‫شده‬ ‫بندی‬ ‫خوشه‬ ‫شاخص‬ ‫نوع‬
‫نه؟‬ ‫یا‬
‫از‬ ‫مثال‬Hashing
‫هم‬ ‫حقوق‬ ‫اساس‬ ‫بر‬ ‫را‬ ‫قبل‬ ‫فایل‬ ‫رکوردهای‬
‫کنید‬ ‫گذاری‬ ‫شاخص‬.
‫تابع‬Hash
‫از‬ ‫مضربی‬ ‫حقوق‬ ‫آیا‬200‫است؟‬
‫تابع‬ ‫ورودی‬=،‫حقوق‬
‫تابع‬ ‫خروجی‬=‫خیر‬ ،‫بلی‬
‫تعداد‬Bucket‫ها‬=2
‫از‬ ‫مثال‬Hashing
‫ایجاد‬ ‫شده‬ ‫بندی‬ ‫خوشه‬ ‫شاخص‬ ‫توان‬ ‫می‬ ‫آیا‬
‫کرد؟‬
‫داریم‬ ‫جستجو‬ ‫کلید‬ ‫دو‬
1-‫تولد‬ ‫تاریخ‬(‫شده‬ ‫بندی‬ ‫خوشه‬)
2-‫حقوق‬
‫از‬ ‫مثال‬Hashing
‫تابع‬
Hash
‫تولد‬ ‫تاریخ‬
‫تابع‬
Hash
‫حقوق‬
‫شده‬ ‫بندی‬ ‫خوشه‬ ‫حقوق‬ ‫شاخص‬ ‫نوع‬
‫نه؟‬ ‫یا‬ ‫است‬
‫افزونگی‬ ‫بدون‬ ‫توانیم‬ ‫می‬ ‫آیا‬
‫خوشه‬ ‫شاخص‬ ‫چند‬ ‫یا‬ ‫دو‬ ،‫داده‬
‫از‬ ‫مثال‬Hashing
‫می‬ ‫جستجو‬ ‫کلید‬ ‫های‬ ‫فیلد‬ ‫تعداد‬
‫باشد‬ ‫یک‬ ‫از‬ ‫بیش‬ ‫تواند‬.
‫مثال‬:‫شاخص‬ ‫فیلد‬ ‫چند‬ ‫یا‬ ‫دو‬ ‫روی‬ ‫همزمان‬
‫شود‬ ‫انجام‬ ‫گذاری‬.
‫عملی‬ ‫استفاده‬:
‫گذاری‬ ‫شاخص‬ ‫از‬ ‫استفاده‬ ‫عملی‬ ‫صورت‬ ‫به‬
Hashing‫است‬ ‫محدود‬.
‫برای‬ ‫تنها‬Equity Search Query‫است‬ ‫مناسب‬
‫برای‬ ‫و‬Range Query‫نیست‬ ‫مناسب‬.
‫بر‬ ‫مبتنی‬ ‫گذاری‬ ‫شاخص‬Hash
‫چند‬ ‫به‬ ‫ها‬ ‫رکورد‬ ‫مجموعه‬Bucket‫شوند‬ ‫می‬ ‫تقسیم‬.
‫هر‬Bucket،‫نیاز‬ ‫صورت‬ ‫در‬ ‫و‬ ،‫اصلی‬ ‫صفحه‬ ‫یک‬ ‫شامل‬
‫است‬ ‫اضافی‬ ‫صفحه‬ ‫چند‬.
‫نگاشت‬‫جستجو‬ ‫کلید‬‫به‬Bucket‫از‬ ‫استفاده‬ ‫با‬
‫تابع‬Hash‫شود‬ ‫می‬ ‫انجام‬.
‫شماره‬ ‫اگر‬Bucket‫مورد‬ ‫صفحه‬ ‫یافتن‬ ،‫بدانیم‬ ‫را‬
‫محدودی‬ ‫تعداد‬ ‫با‬ ‫نظر‬IO‫است‬ ‫پذیر‬ ‫امکان‬.
‫هنگام‬ ‫در‬Insert‫در‬ ‫رکورد‬ ‫هر‬ ،Bucket‫به‬ ‫مربوط‬
‫شود‬ ‫می‬ ‫درج‬ ‫خود‬.
‫هنگام‬ ‫در‬Search‫با‬ ‫را‬ ‫جستجو‬ ‫کلید‬ ‫مقدار‬ ،
‫تابع‬ ‫از‬ ‫استفاده‬Hash‫شماره‬ ‫به‬Bucket‫می‬ ‫تبدیل‬
Hash index in SQL server
 SQL server 2014 supports Hash Index
 The following figure shows three index keys that are mapped to
three different buckets in the hash index.
 Hash function is fix
 BUCKET_COUNT is a parameter.
 bucket count should be between 1 and 2 times the number of distinct values
in the index key.
 Hash Indexing is suitable for memory-optimized table.
 Reference: msdn.microsoft.com/
‫درختی‬ ‫گذاری‬ ‫شاخص‬
‫برای‬ ‫جایگزین‬ ‫راهکار‬ ‫یک‬ ‫درختی‬ ‫ساختار‬
‫ساختن‬Index‫است‬.
‫روش‬ ‫این‬ ‫در‬Data Entry‫به‬ ‫توجه‬ ‫با‬ ‫ها‬
‫مرتب‬ ‫صورت‬ ‫به‬ ،‫جستجو‬ ‫کلید‬(Sorted)‫ذخیره‬
‫شوند‬ ‫می‬.
‫جستجو‬ ‫هدایت‬ ‫برای‬ ‫درختی‬ ‫ساختار‬ ‫از‬
‫شود‬ ‫می‬ ‫استفاده‬.
1345 1356
1320 1371
1300 1380
1300<=Y<1380
1371<=Y<13801320<=Y<13711300<=Y<1320
1320<=Y<1345
1345<=Y<1356 1356<=Y<1371
‫برگ‬ ‫سطح‬
A
B
C
L1 L2 L3
‫شوند‬ ‫می‬ ‫نگهداری‬ ‫صفحه‬ ‫یک‬ ‫در‬
‫درختی‬ ‫گذاری‬ ‫شاخص‬
‫برگ‬ ‫الیه‬:
‫سطح‬ ‫این‬ ‫در‬Data Entry‫گیرند‬ ‫می‬ ‫قرار‬ ‫ها‬.
Data Entry =? Data Record
‫درختی‬ ‫گذاری‬ ‫شاخص‬ ‫مزیت‬:
‫توان‬ ‫می‬ ‫کارا‬ ‫صورت‬ ‫به‬data entry‫شرط‬ ‫در‬ ‫که‬ ‫هایی‬
range Query‫کرد‬ ‫پیدا‬ ‫را‬ ‫کنند‬ ‫می‬ ‫صدق‬!
‫مثال‬:‫های‬ ‫سال‬ ‫بین‬ ‫که‬ ‫کارمندانی‬1345‫تا‬1362
‫اند‬ ‫شده‬ ‫متولد‬.
1362<Birth Year<1345‫از‬ ‫ای‬ ‫صفحه‬ ‫است‬ ‫کافی‬data entry‫را‬ ‫ها‬
‫تار‬ ‫که‬ ‫کنیم‬ ‫پیدا‬‫ی‬‫از‬ ‫بزرگتر‬ ‫تولد‬ ‫خ‬45
‫باشد‬.‫حرکت‬ ‫برگ‬ ‫روی‬ ‫های‬ ‫لینک‬ ‫از‬ ‫سپس‬
‫درختی‬ ‫گذاری‬ ‫شاخص‬
‫چند‬Page IO‫داریم؟‬ ‫نیاز‬
1-‫پاسخ‬ ‫اولین‬ ‫حاوی‬ ‫برگ‬ ‫عمق‬ ‫به‬
2-‫جواب‬ ‫حاوی‬ ‫های‬ ‫برگ‬ ‫تعداد‬ ‫به‬
‫استفاده‬ ‫مورد‬ ‫ساختار‬ ‫داده‬:‫درخت‬B+
‫یکسان‬ ،‫دلخواه‬ ‫برگ‬ ‫هر‬ ‫تا‬ ‫ریشه‬ ‫فاصله‬
‫است‬( .‫ارتفاع‬Balanced)
‫درختی‬ ‫گذاری‬ ‫شاخص‬
‫درخت‬ ‫یک‬ ‫در‬ ‫جستجو‬ ‫هزینه‬B+‫هزینه‬ ‫از‬ ‫کمتر‬
‫فایل‬ ‫روی‬ ‫باینری‬ ‫جستجوی‬sort‫است‬ ‫ها‬ ‫رکورد‬ ‫شده‬.
‫زیادی‬ ‫تعداد‬ ‫تواند‬ ‫می‬ ‫داخلی‬ ‫گره‬ ‫هر‬pointer
‫از‬ ‫استفاده‬ ‫با‬ ‫را‬ ‫درخت‬ ‫ارتفاع‬ ‫که‬ ‫باشد‬ ‫داشته‬
‫دهیم‬ ‫می‬ ‫کاهش‬ ‫آن‬.
‫درخت‬ ‫ارتفاع‬B+‫حداکثر‬ ‫عمل‬ ‫در‬3-4‫است‬
‫برای‬10^6‫باینری‬ ‫درخت‬ ‫ارتفاع‬ ،‫برگ‬=20
‫مقایسه‬B+ Tree‫و‬Binary Tree
‫غیر‬ ‫نود‬ ‫یک‬ ‫نودهای‬ ‫زیر‬ ‫تعداد‬ ‫میانگین‬
‫برگ‬=Fan out Degree
‫کنید‬ ‫فرض‬Fan out = N‫درخت‬ ‫ارتفاع‬ ‫و‬=H
‫است؟‬ ‫تا‬ ‫چند‬ ‫برگ‬ ‫های‬ ‫گره‬ ‫تعداد‬
N^H
‫اگر‬Fan out =100‫و‬H=4‫برگ‬ ‫تعداد‬‫ها‬=100
‫میلیون‬
‫باینری‬ ‫جستجوی‬log(10^8)‫حداقل‬ ‫به‬ ،25IO
‫دارد‬ ‫نیاز‬.
Fan out= N, Height = H Leaf Node = N^H
...
... ...
‫ها‬ ‫نود‬ ‫تعداد‬
=N
‫ها‬ ‫نود‬ ‫تعداد‬
=N^2
‫فایل‬ ‫ساختارهای‬ ‫مقایسه‬
‫از‬ ‫استفاده‬ ‫با‬ ‫مختلف‬ ‫عملیات‬ ‫کارایی‬ ‫مقایسه‬
‫متنوع‬ ‫ساختارهای‬
‫های‬ ‫کلید‬ ‫اساس‬ ‫بر‬ ‫ها‬ ‫شاخص‬ ‫کنید‬ ‫فرض‬(‫و‬ ‫حقوق‬
‫تولد‬ ‫سال‬)
‫بحث‬ ‫مورد‬ ‫ساختارهای‬:
Heap
‫فایل‬sort‫شده‬
‫درختی‬ ‫شده‬ ‫بندی‬ ‫خوشه‬ ‫شاخص‬
‫ساختار‬Heap‫درختی‬ ‫ای‬ ‫غیرخوشه‬ ‫شاخص‬ ‫با‬
‫ساختار‬Heap‫غیرخوشه‬ ‫شاخص‬ ‫با‬‫ای‬Hash
‫فایل‬ ‫ساختارهای‬ ‫مقایسه‬
‫شرح‬ ‫به‬ ‫دهیم‬ ‫می‬ ‫انجام‬ ‫ها‬ ‫فایل‬ ‫روی‬ ‫که‬ ‫عملیاتی‬
‫است‬ ‫زیر‬:
Scan
‫حافظه‬ ‫از‬ ‫رکوردها‬ ‫همه‬ ‫انتقال‬ ،‫هدف‬ ‫فعالیت‬ ‫این‬ ‫در‬
‫به‬ ‫چانبی‬Buffer‫است‬.
Equity search-‫جستجو‬ ‫کلید‬ ‫با‬ ‫برابری‬ ‫شرط‬ ‫با‬ ‫جستجو‬
‫مثال‬:‫متولد‬ ‫کارمند‬ ‫که‬ ‫بدهید‬ ‫را‬ ‫رکوردهایی‬ ‫همه‬1345‫درآمد‬ ‫و‬
750‫باشد‬ ‫تومان‬.
‫شوند‬ ‫بازیابی‬ ‫باید‬ ‫مربوطه‬ ‫صفحات‬.
Range Query-‫جستجو‬ ‫کلید‬ ‫روی‬ ‫محدوده‬ ‫جستجوی‬
‫مثال‬:‫سال‬ ‫متولد‬ ‫کارمندان‬ ‫شامل‬ ‫که‬ ‫بدهید‬ ‫را‬ ‫رکوردهایی‬ ‫همه‬360
‫باشد‬ ‫بعد‬ ‫به‬.
‫عملیات‬ ‫هزینه‬ ‫سازی‬ ‫مدل‬
‫مقدار‬
‫متداو‬
‫ل‬
‫نام‬
‫پارامت‬
‫ر‬
‫شرح‬‫پارامتر‬
Size
/8k
B ‫برای‬ ‫صفحات‬ ‫تعداد‬‫رکورد‬ ‫سازی‬ ‫ذخیره‬
‫ها‬(‫اتالف‬ ‫بدون‬)
- R ‫تعداد‬‫صفحه‬ ‫هر‬ ‫در‬ ‫رکورد‬
15 MS D ‫متوسط‬‫خواندن‬ ‫زمان‬/‫صفحه‬ ‫یک‬ ‫نوشتن‬
100 NS C ‫یک‬ ‫پردازش‬ ‫برای‬ ‫الزم‬ ‫زمان‬ ‫متوسط‬
‫رکورد‬
100 NS H ‫تابع‬ ‫اجرای‬ ‫برای‬ ‫الزم‬ ‫زمان‬ ‫متوسط‬
Hash‫رکورد‬ ‫یک‬ ‫روی‬
100 F ‫در‬ ‫برگ‬ ‫غیر‬ ‫نودهای‬ ‫فرزندان‬ ‫تعداد‬
B+ Tree
‫ساختار‬ ‫بررسی‬Heap
scan
B(D+RC)
B‫شود‬ ‫منتقل‬ ‫حافظه‬ ‫به‬ ‫باید‬ ‫صفحه‬B*D
‫شامل‬ ‫صفحه‬ ‫هر‬R‫هر‬ ‫پروسس‬ ‫برای‬ ‫که‬ ‫است‬ ‫رکورد‬
‫رکورد‬C‫است‬ ‫الزم‬ ‫زمان‬=B*R*C
Equity Search
‫شود‬ ‫انجام‬ ‫کاندید‬ ‫کلید‬ ‫روی‬ ‫جستجو‬ ‫اگر‬:
0.5B(D+RC)
‫روی‬ ‫جستجو‬ ‫یا‬ ‫و‬ ‫باشد‬ ‫نداشته‬ ‫جواب‬ ‫جستجو‬ ‫اگر‬
‫باشد‬ ‫غیرکلید‬ ‫صفت‬ ‫یک‬:B(D+RC)
‫ساختار‬ ‫بررسی‬Heap
Range Query
‫کارمندان‬ ‫شامل‬ ‫که‬ ‫بدهید‬ ‫را‬ ‫رکوردهایی‬ ‫همه‬
‫سال‬ ‫متولد‬1360‫باشد‬ ‫بعد‬ ‫به‬.
B(D+RC)
‫کنیم‬ ‫جستجو‬ ‫باید‬ ‫پاسخ‬ ‫یافتن‬ ‫برای‬ ‫را‬ ‫فایل‬ ‫همه‬!
Insert
‫کنیم‬ ‫اضافه‬ ‫فایل‬ ‫انتهای‬ ‫به‬ ‫را‬ ‫رکورد‬ ‫است‬ ‫کافی‬
‫را‬ ‫رکورد‬ ،‫کنبد‬ ‫منتقل‬ ‫حافظه‬ ‫به‬ ‫را‬ ‫آخر‬ ‫صفحه‬
‫کنید‬ ‫منتقل‬ ‫دیسک‬ ‫به‬ ‫را‬ ‫صفحه‬ ‫بنویسید؛‬.
2D+C
‫ساختار‬ ‫بررسی‬Heap
Delete
‫صفحه‬ ‫انتقال‬ ‫و‬ ‫رکورد‬ ‫جستجو‬ ‫هزینه‬
‫حافظه‬ ‫به‬+c+D
‫اگر‬rid‫باشیم‬ ‫داشته‬ ‫را‬
‫صفحه‬ ‫انتقال‬ ‫و‬ ‫رکورد‬ ‫جستجو‬ ‫هزینه‬
‫به‬‫حافظه‬=D
‫اگر‬rid‫را‬‫باشیم‬ ‫نداشته‬
‫های‬ ‫روش‬ ‫با‬ ‫باید‬ ‫را‬ ‫هزینه‬Equity‫یا‬
Range‫کنیم‬ ‫محاسبه‬.
‫نکته‬:‫عملیات‬ ‫هزینه‬delete‫در‬
‫ها‬ ‫هزینه‬ ‫جدول‬
File Type Scan Equity Search Range Search Insert Delete
Heap B(D+RC) 0.5B(D+RC) B(D+RC) 2D+C Search +C+D
Sorted
Clustered Tree
Unclustered Tree
Unclustered Hash
File Type Scan Equity Search Range Search Insert Delete
Heap BD 0.5BD BD 2D Search +D
Sorted
Clustered Tree
Unclustered Tree
Unclustered Hash
‫ساختار‬ ‫بررسی‬Sorted
Scan
B(D+RC)
‫چرا؟‬
Equity Search
‫ترتیب‬ ‫کلید‬ ‫روی‬ ‫جستجو‬(‫کلید‬ ‫اولین‬ ‫حداقل‬)‫شود‬ ‫انجام‬
Log B،‫هدف‬ ‫صفحه‬ ‫یافتن‬ ‫برای‬ ‫جستجو‬Log R‫برای‬ ‫جستجو‬
‫رکورد‬ ‫یافتن‬
D Log B + C Log R
‫باشیم؟‬ ‫داشته‬ ‫جواب‬ ‫رکورد‬ ‫یک‬ ‫از‬ ‫بیش‬ ‫اگر‬
‫نشود‬ ‫انجام‬ ‫ترتیب‬ ‫کلید‬ ‫روی‬ ‫جستجو‬.
‫کند‬ ‫نمی‬ ‫کمکی‬ ‫ترتیب‬.‫مانند‬Heap
‫ساختار‬ ‫بررسی‬Sorted
Range Query
‫متولد‬ ‫کارمندان‬ ‫شامل‬ ‫که‬ ‫بدهید‬ ‫را‬ ‫رکوردهایی‬ ‫همه‬
‫سال‬1360‫باشد‬ ‫بعد‬ ‫به‬.
‫اولین‬ ‫یافتن‬ ‫شامل‬ ‫هزینه‬ ،‫شود‬ ‫انجام‬ ‫ترتیب‬ ‫کلید‬ ‫روی‬ ‫جستجو‬ ‫اگر‬
‫لزوم‬ ‫صورت‬ ‫در‬ ‫و‬ ‫جواب‬ ‫رکود‬fetch‫است‬ ‫بعدی‬ ‫صفحات‬ ‫کردن‬.
‫نکته‬:‫دارد‬ ‫بستگی‬ ‫جواب‬ ‫رکوردهای‬ ‫تعداد‬ ‫به‬ ‫هزینه‬.
D Log B + C Log R + C #matched records
Insert
‫شود‬ ‫مشخص‬ ‫رکورد‬ ‫درج‬ ‫جایگاه‬.
‫شوند‬ ‫جابجا‬ ‫رکورد‬ ‫یک‬ ‫جدید‬ ‫رکوردهای‬ ‫از‬ ‫بعد‬ ‫رکوردهای‬.
2 * (0.5B(D+RC))
delete
‫ها‬ ‫هزینه‬ ‫جدول‬
File Type Scan Equity Search Range Search Insert Delete
Heap B(D+RC) 0.5B(D+RC) B(D+RC) 2D+C Search
+C+D
Sorted B(D+RC) D log 𝟐 𝑩+ C Log R D log 𝟐 𝑩 + C Log
R + RC
#matched record
Search+
B(D+RC)
Search +
B(D+RC)
File Type Scan Equity Search Range Search Insert Delete
Heap BD 0.5BD BD 2D Search +D
Sorted BD log 𝟐 𝑩*D log 𝟐 𝑩 * D BD + Search BD + Search
‫بررسی‬‫ساختار‬Clustered B+ Tree
‫برای‬ ،‫است‬ ‫داده‬ ‫نشان‬ ‫تجربی‬ ‫های‬ ‫آزمایش‬
‫نگهداشتن‬ ‫باالنس‬B+ Tree‫متوسط‬ ‫طور‬ ‫به‬ ،‫یک‬
‫سوم‬‫ماند‬ ‫می‬ ‫خالی‬ ‫صفحات‬ ‫حجم‬.‫اگر‬ ‫پس‬
‫فشرده‬ ‫صورت‬ ‫به‬ ‫داده‬B‫این‬ ‫در‬ ،‫باشد‬ ‫صفحه‬
‫روش‬1.5B‫شود‬ ‫می‬ ‫صفحه‬.
Scan
B(D+RC)*1.5
‫چرا؟‬
‫ساختار‬ ‫بررسی‬Clustered B+ Tree
Equity Search
‫ترتیب‬ ‫کلید‬ ‫روی‬ ‫جستجو‬(‫کلید‬ ‫اولین‬ ‫حداقل‬)‫انجام‬
‫شود‬
log 𝐹 1.5𝐵،‫هدف‬ ‫صفحه‬ ‫یافتن‬ ‫برای‬ ‫جستجو‬𝐿𝑜𝑔2 𝑅‫جستجو‬
‫رکورد‬ ‫یافتن‬ ‫برای‬
𝐷 𝐿𝑜𝑔 𝐹 1.5𝐵 + 𝐶 𝐿𝑜𝑔2 𝑅
‫باشیم؟‬ ‫داشته‬ ‫جواب‬ ‫رکورد‬ ‫یک‬ ‫از‬ ‫بیش‬ ‫اگر‬
‫نشود‬ ‫انجام‬ ‫ترتیب‬ ‫کلید‬ ‫روی‬ ‫جستجو‬.
‫کند‬ ‫نمی‬ ‫کمکی‬ ‫ترتیب‬.‫مانند‬Heap
‫ساختار‬ ‫بررسی‬Clustered B+ Tree
Range Query
‫شامل‬ ‫که‬ ‫بدهید‬ ‫را‬ ‫رکوردهایی‬ ‫همه‬
‫سال‬ ‫متولد‬ ‫کارمندان‬1360‫بعد‬ ‫به‬
‫باشد‬.
،‫شود‬ ‫انجام‬ ‫ترتیب‬ ‫کلید‬ ‫روی‬ ‫جستجو‬ ‫اگر‬
‫در‬ ‫و‬ ‫جواب‬ ‫رکود‬ ‫اولین‬ ‫یافتن‬ ‫شامل‬ ‫هزینه‬
‫لزوم‬ ‫صورت‬fetch‫است‬ ‫بعدی‬ ‫صفحات‬ ‫کردن‬.(
‫از‬ ‫استفاده‬ ‫با‬pointer‫ها‬ ‫برگ‬ ‫روی‬ ‫های‬)
‫نکته‬:‫جواب‬ ‫رکوردهای‬ ‫تعداد‬ ‫به‬ ‫هزینه‬
‫دارد‬ ‫بستگی‬.
𝐷 𝐿𝑜𝑔 1.5𝐵 + 𝐶 𝐿𝑜𝑔 𝑅 + 𝑅𝐶 #𝑚𝑎𝑡𝑐ℎ𝑒𝑑 𝑟𝑒𝑐𝑜𝑟𝑑
‫ساختار‬ ‫بررسی‬Clustered B+ Tree
Insert
‫شود‬ ‫مشخص‬ ‫رکورد‬ ‫درج‬ ‫جایگاه‬ ‫برگ‬ ‫صفحه‬.
‫وجود‬ ‫جدید‬ ‫رکورد‬ ‫یک‬ ‫شدن‬ ‫درچ‬ ‫جای‬ ‫موارد‬ ‫بیشتر‬ ‫در‬
‫ساختار‬ ‫صورت‬ ‫این‬ ‫غیر‬ ‫در‬ ،‫دارد‬B Tree‫به‬ ‫باید‬
‫شود‬ ‫روز‬.
𝐷 𝐿𝑜𝑔 𝐹 1.5𝐵 + 𝐶 𝐿𝑜𝑔 𝑅 + 𝐷
Delete
‫مانند‬Insert
‫ها‬ ‫هزینه‬ ‫جدول‬
File Type Scan Equity Search Range Search Insert Delete
Heap B(D+RC) 0.5B(D+RC) B(D+RC) 2D+C Search
+C+D
Sorted B(D+RC) D Log B + C Log R D Log B + C Log R
+ RC #matched
records
Search+
B(D+RC)
Search +
BD
Clustered Tree 1.5B(D+
RC
𝑫 𝑳𝒐𝒈 𝑭 𝟏. 𝟓𝑩
+ 𝑪 𝑳𝒐𝒈 𝟐 𝑹
𝐷 𝐿𝑜𝑔 𝐹 1.5𝐵
+ 𝐶 𝐿𝑜𝑔 𝑅
+ 𝑅𝐶 #𝑚𝑎𝑡𝑐ℎ𝑒𝑑 𝑟𝑒𝑐𝑜𝑟𝑑𝑠
𝐷 𝐿𝑜𝑔 𝐹 1.5𝐵
+ 𝐶 𝐿𝑜𝑔 𝑅
+ 𝐷
𝐷 𝐿𝑜𝑔 𝐹 1.5𝐵
+ 𝐶 𝐿𝑜𝑔 𝑅
+ 𝐷
Unclustered Tree
Unclustered Hash
‫در‬ ‫نکته‬sql server‫صورت‬ ‫به‬ ‫اصلی‬ ‫کلید‬ ‫اساس‬ ‫بر‬ ‫فرض‬ ‫پیش‬ ‫صورت‬ ‫به‬ ‫جدول‬ ،
‫هزینه‬ ‫جدول‬‫شده‬ ‫ساده‬ ‫های‬
File Type Scan Equity Search Range Search Insert Delete
Heap BD 0.5BD BD 2D Search +D
Sorted BD log 𝟐 𝑩*D log 𝟐 𝑩 * D BD + Search BD + Search
Clustered Tree 1.5BD 𝑳𝒐𝒈 𝑭 𝟏. 𝟓𝑩 ∗ 𝑫 𝑳𝒐𝒈 𝑭 𝟏. 𝟓𝑩 ∗ 𝑫 𝑺𝒆𝒂𝒓𝒄𝒉 + 𝑫 𝑺𝒆𝒂𝒓𝒄𝒉 + 𝑫
‫نکته‬:‫در‬sql server،Fan-out‫تا‬ ‫تواند‬ ‫می‬404‫افزایش‬
‫ساختار‬ ‫بررسی‬Clustered B+ Tree
‫بررسی‬‫ساختار‬Unclustered Tree
‫فرض‬:‫اندازه‬data entry= 0.1 data record
‫برای‬ ‫الزم‬ ‫صفحات‬ ‫تعداد‬ ‫اگر‬data record‫ها‬=B‫باشد‬
‫برای‬ ‫الزم‬ ‫صفحات‬ ‫تعداد‬data entry=0.15*B
‫تعداد‬data Entry‫صفحه‬ ‫هر‬ ‫در‬=10* 0.66=6.6 R
Data entries
Data Records
UNCLUSTERED
‫ساختار‬ ‫بررسی‬Unclustered Tree
Scan
‫ها‬ ‫رکورد‬ ‫به‬ ‫شده‬ ‫مرتب‬ ‫صورت‬ ‫به‬ ‫بخواهیم‬ ‫اگر‬
‫که‬ ‫است‬ ‫بهتر‬ ،‫کنیم‬ ‫پیدا‬ ‫دسترسی‬Index‫کال‬ ‫را‬
‫کنیم‬ ‫فراموش‬.
‫زیاد‬ ‫بسیار‬ ‫هزینه‬
‫خواندن‬ ‫برای‬ ‫الزم‬ ‫هزینه‬data entries:
0.15𝐵(𝐷 + 6.7𝑅𝐶)
‫هر‬ ‫برای‬ ‫حالت‬ ‫بدترین‬ ‫در‬data entry‫یک‬IO
‫داریم‬ ‫الزم‬
𝐵𝑅(𝐷 + 𝐶)
‫ساختار‬ ‫بررسی‬Unclustered Tree
Equity Search
‫هزینه‬ ‫مختلف‬ ‫های‬ ‫بخش‬
‫یافتن‬Data Entry‫مربوطه‬=𝐷 log 𝐹 0.15𝐵
‫یافتن‬entry‫در‬ ‫هدف‬Data Entry=𝐶 log2 6.7𝑅
‫یافتن‬Data Record‫روی‬ ‫از‬Data Entry=D
‫کل‬ ‫هزینه‬=𝐷 log 𝐹 0.15𝐵 + 𝐶 log2 6.7𝑅+ D
‫باشیم‬ ‫داشته‬ ‫جواب‬ ‫رکورد‬ ‫یک‬ ‫از‬ ‫بیش‬ ‫اگر‬:
‫یک‬ ‫جواب‬ ‫هر‬ ‫ازای‬ ‫به‬ ‫حالت‬ ‫بدترین‬ ‫در‬IO‫است‬ ‫الزم‬.
‫ساختار‬ ‫بررسی‬Unclustered Tree
Search Range Query
‫یافتن‬Data Entry‫مربوطه‬=𝐷 log 𝐹 0.15𝐵
‫یافتن‬entry‫در‬ ‫هدف‬Data Entry=𝐶 log2 6.7𝑅
‫های‬ ‫صفحه‬ ‫تعداد‬ ‫به‬Match‫در‬ ‫شده‬Index،IO
‫داریم‬ ‫الزم‬.
‫یک‬ ‫جواب‬ ،‫هر‬ ‫ازای‬ ‫به‬IO‫داریم‬ ‫الزم‬.
‫از‬ ‫بیش‬ ‫اگر‬10‫جواب‬ ‫در‬ ‫جدول‬ ‫درصد‬Match‫است‬ ‫بهتر‬ ‫شود‬ ‫می‬
‫از‬Index‫نکنیم‬ ‫استفاده‬.
‫ساختار‬ ‫بررسی‬Unclustered Tree
Insert
‫در‬ ‫درج‬ ‫هزینه‬heap=2D+C
‫رسانی‬ ‫روز‬ ‫به‬ ‫و‬ ‫جستجو‬ ‫هزینه‬Index=
𝐷 log 𝐹 0.15𝐵 + 𝐶𝐿𝑜𝑔26.7𝑅 + 𝐷
Delete
𝐷 log 𝐹 0.15𝐵 + 𝐶𝐿𝑜𝑔26.7𝑅 + 𝐷
2D
‫هزینه‬ ‫جدول‬‫ها‬‫شده‬ ‫ساده‬ ‫ی‬
File Type Scan Equity Search Range Search Insert Delete
Heap BD 0.5BD BD 2D Search +D
Sorted BD log 𝟐 𝑩*D log 𝟐 𝑩 * D BD + Search BD + Search
Clustered Tree 1.5BD 𝑳𝒐𝒈 𝑭 𝟏. 𝟓𝑩 ∗ 𝑫 𝑳𝒐𝒈 𝑭 𝟏. 𝟓𝑩 ∗ 𝑫 Search + D Search + D
Unclustered Tree BRD (1+log 𝐹 0.15𝐵) D (#matched
records+
log 𝐹 0.15𝐵) D
D(3 +
log 𝐹 0.15𝐵)
Search + 2D
‫ساختار‬ ‫بررسی‬Unclustered Hash
index+ Heap File
‫فرض‬:‫اندازه‬Data Entry=0.1 Data Record
‫فرض‬:overflow‫نداریم‬.
‫فرض‬:‫الزم‬ ‫صفحات‬ ‫تعداد‬0.125*B
‫فرض‬:‫صفحه‬ ‫هر‬ ‫های‬ ‫رکورد‬ ‫تعداد‬=8R
‫ساختار‬ ‫بررسی‬Unclustered Hash
index+ Heap File
Scan
‫بازیابی‬ ‫هزینه‬Data Entry‫ها‬
0.125B(D+8RC)
‫هر‬ ‫برای‬ ‫حالت‬ ‫بدترین‬ ‫در‬data entry‫یک‬IO‫برای‬
‫بازیابی‬Data record‫داریم‬ ‫الزم‬
‫اجرا‬ ‫زمان‬=BR(D+C)
‫از‬Hash‫برای‬scan‫کنیم‬ ‫نمی‬ ‫استفاده‬.
‫ساختار‬ ‫بررسی‬Unclustered Hash
index+ Heap File
Equity Search
‫یافتن‬ ‫هزینه‬Bucket‫جواب‬=H
‫هر‬ ‫اینکه‬ ‫فرض‬ ‫با‬Bucket‫هزینه‬ ،‫است‬ ‫صفحه‬ ‫یک‬ ‫حاوی‬
‫صفحه‬ ‫واکشی‬Data Entry=D
‫جواب‬ ‫رکود‬ ‫یافتن‬ ‫هزینه‬=0.5(8RC)=4RC
‫واکشی‬ ‫هزینه‬data record=D
‫کلی‬ ‫هزینه‬=H+2D+4RC
‫ساختار‬ ‫بررسی‬Unclustered Hash
index+ Heap File
Range Search
‫از‬ ‫استفاده‬Hash index‫کند‬ ‫نمی‬ ‫کمکی‬.
‫فایل‬ ‫کل‬Heap‫شود‬ ‫جستجو‬ ‫باید‬.
Insert
‫در‬ ‫درج‬ ‫هزینه‬Heap=2D+C
‫روزرسانی‬ ‫به‬ ‫هزینه‬Index=H+2D+C
Delete
‫در‬ ‫جستجو‬ ‫هزینه‬Index‫داده‬ ‫فایل‬ ‫و‬=H+2D+4RC
‫روزرسانی‬ ‫به‬ ‫هزینه‬=2D
‫هزینه‬ ‫جدول‬‫ها‬‫شده‬ ‫ساده‬ ‫ی‬
File Type Scan Equity Search Range Search Insert Delete
Heap BD 0.5BD BD 2D Search +D
Sorted BD log 𝟐 𝑩*D log 𝟐 𝑩 * D BD + Search BD + Search
Clustered Tree 1.5BD 𝑳𝒐𝒈 𝑭 𝟏. 𝟓𝑩 ∗ 𝑫 𝑳𝒐𝒈 𝑭 𝟏. 𝟓𝑩 ∗ 𝑫 Search + D 𝒔𝒆𝒂𝒓𝒄𝒉 + 𝑫
Unclustered Tree BRD (1+log 𝐹 0.15𝐵) D (#matched
records+
log 𝐹 0.15𝐵) D
D(3 +
log 𝐹 0.15𝐵)
Search + 2D
Hash Index BRD 2D BD 4D Search + 2D
‫فایل‬ ‫ساختارهای‬ ‫مقایسه‬
‫ساختار‬Heap
Scan‫و‬Insert‫است‬ ‫کند‬ ‫جستجو‬ ،‫سریع‬
‫ساختار‬Sort‫شده‬
‫از‬ ‫جستجو‬Heap‫کند‬ ‫بسیار‬ ‫درج‬ ‫اما‬ ‫است‬ ‫سریعتر‬
‫است‬.
‫ساختار‬Cluster‫شده‬
‫جستجو‬+‫سریع‬ ‫حذف‬ ‫و‬ ‫درج‬
‫ساختار‬Uncluster
،‫سریع‬ ‫جستجوی‬scan‫است‬ ‫کند‬ ‫بسیار‬.
‫انتخاب‬Index‫کارایی‬ ‫تنظیم‬ ‫و‬
‫نوع‬ ‫انتخاب‬index‫کارایی‬ ‫در‬ ‫تواند‬ ‫می‬ ‫ها‬DB
‫باشد‬ ‫موثر‬ ‫بسیار‬.
‫اتخاب‬index‫به‬ ‫توجه‬ ‫با‬ ‫ها‬Work Load‫می‬ ‫انجام‬
‫شود‬.
‫از‬ ‫استفاده‬ ‫کلی‬ ‫طور‬ ‫به‬Index،‫شود‬ ‫می‬ ‫باعث‬
‫در‬ ‫و‬ ‫شود‬ ‫انجام‬ ‫کاراتر‬ ‫صورت‬ ‫به‬ ‫اطالعات‬ ‫بازیابی‬
‫هنگام‬ ‫عوض‬Insert‫شود‬ ‫می‬ ‫زیاد‬ ‫هزینه‬.
Hash Index
Equity Search
Tree Index
Equity Search + Range Search
‫مفهوم‬workload
‫رخداد‬ ‫با‬ ‫و‬ ‫مرسوم‬ ‫جوهای‬ ‫و‬ ‫پرس‬ ‫و‬ ‫عملیات‬
‫چیست؟‬ ‫سیستم‬ ‫در‬ ‫زیاد‬
‫مثال‬:‫دانشگاه‬ ‫آموزشی‬ ‫سیستم‬
‫عملیات‬:‫استاد‬ ‫درج‬(2)‫درج‬ ،‫دانشجو‬(100)‫درج‬ ،
‫درس‬(1)
‫جستجو‬:‫دانشجویی‬ ‫شماره‬ ‫با‬ ‫دانشجو‬(100)‫دانشجو‬ ،
‫خانوادگی‬ ‫نام‬ ‫و‬ ‫نام‬ ‫با‬(80)‫ملی‬ ‫کد‬ ‫با‬ ‫دانشجو‬ ،
(10)
‫طراح‬ ‫های‬ ‫انتخاب‬
‫های‬ ‫رابطه‬ ‫کدام‬ ‫برای‬DB،Index‫کنیم؟‬ ‫تعریف‬
‫نوع‬ ‫چه‬Index‫کنیم؟‬ ‫استفاده‬ ‫یی‬Hash‫یا‬Tree
‫نوع‬ ‫چه‬Index‫کنیم؟‬ ‫استفاده‬ ‫یی‬Clustered‫یا‬
‫طراحی‬ ‫های‬ ‫انتخاب‬
‫طراحی‬ ‫روش‬Index:
Query‫کنید‬ ‫شناسایی‬ ‫را‬ ‫سیستم‬ ‫مهم‬ ‫های‬.
‫اجرای‬ ‫نحوه‬Query‫بگیرید‬ ‫نظر‬ ‫در‬ ‫را‬.
‫شدن‬ ‫اضافه‬ ‫با‬ ‫کنید‬ ‫بررسی‬index‫بهتر‬ ‫کارایی‬ ،‫جدید‬
‫شود؟‬ ‫می‬
‫برای‬ ‫را‬ ‫اجرا‬ ‫نحوه‬ ‫اینجا‬ ‫در‬‫جدول‬ ‫یک‬ ‫برای‬ ‫فقط‬
‫گیریم‬ ‫می‬ ‫نظر‬ ‫در‬
Query Evaluation Plan
‫دقت‬»‫کردن‬ ‫اضافه‬Index‫کارایی‬ ‫جدید‬Insert‫و‬update
‫دهد‬ ‫می‬ ‫کاهش‬ ‫را‬.
Trade off
‫طراحی‬ ‫های‬ ‫انتخاب‬
Attribute‫در‬ ‫که‬ ‫هایی‬where‫قرار‬ ‫زیاد‬ ‫دفعات‬ ‫به‬
‫برای‬ ‫خوبی‬ ‫های‬ ‫کاندید‬ ،‫گیرند‬ ‫می‬Index‫شدن‬
‫هستند‬.
‫برابری‬ ‫شرط‬–Hash Index
‫محدوده‬ ‫جستجوی‬ ‫شرط‬=Tree Index
‫از‬ ‫استفاده‬clustering‫افزایش‬ ‫را‬ ‫محدوده‬ ‫جستجوی‬ ‫کارایی‬
‫دهد‬ ‫می‬
‫انواع‬Index
Single Attribute:‫صفت‬ ‫یک‬ ‫حسب‬ ‫بر‬ ‫ها‬ ‫مدخل‬ ‫یا‬ ‫رکوردها‬
‫اند‬ ‫شده‬ ‫گذاری‬ ‫شاخص‬.
Multi Attribute
‫طراحی‬ ‫های‬ ‫انتخاب‬
‫در‬ ‫معمول‬ ‫طور‬ ‫به‬ ‫اگر‬where‫رخ‬ ‫هم‬ ‫با‬ ‫صفت‬ ‫چند‬
‫توانیم‬ ‫می‬ ‫دهند‬ ‫می‬Index‫صورت‬ ‫به‬ ‫را‬Multi-
Attribute‫بسازیم‬.
‫دانشجویان‬ ‫نام‬ ‫و‬ ‫خانوادگی‬ ‫نام‬ ‫کنید‬ ‫فرض‬ ‫مثال‬
‫در‬ ‫همزمان‬ ‫طور‬ ‫به‬Where‫شود‬ ‫استفاده‬.‫این‬ ‫در‬
،‫شود‬ ‫می‬ ‫پیشنهاد‬ ‫صورت‬multi-attribute Index‫ساخته‬
‫شود‬.
 Select * from STT where stname =‘ali’ and stfamily =
‘hassani’
Data entry‫نام‬ ‫روی‬ ‫بر‬ ‫ابتدا‬ ‫صورت‬ ‫این‬ ‫در‬ ‫ها‬
‫مقایسه‬Multi-Attribute‫و‬Single-
Attributeindex
Single Index
‫مقایسه‬Multi-Attribute‫و‬Single-
Attributeindex
Multi Index
‫طراحی‬ ‫های‬ ‫انتخاب‬
‫در‬multi Attribute Indexing‫در‬ ‫ها‬ ‫صفت‬ ‫تقدم‬
where‫است‬ ‫مهم‬.
 Select * from STT where stfamily =‘‫’اکبری‬ and
stname =‘‫’علی‬
‫در‬Query‫باال‬index‫است‬ ‫مفید‬.
 Select * from STT where stname =‘‫’علی‬
‫در‬Query‫باال‬index‫نیست‬ ‫مفید‬.
‫طراحی‬ ‫های‬ ‫انتخاب‬
Index‫کارایی‬ ‫که‬ ‫کنید‬ ‫انتخاب‬ ‫را‬ ‫هایی‬
‫از‬ ‫بیشتری‬ ‫تعداد‬query‫افزایش‬ ‫را‬ ‫ها‬
‫دهد‬.
‫یک‬ ‫حداکثر‬index‫صورت‬ ‫به‬ ‫تواند‬ ‫می‬
Clustered‫که‬ ‫کنید‬ ‫انتخاب‬ ‫را‬ ‫شاخصی‬ ،‫باشد‬
‫کند‬ ‫ایجاد‬ ‫را‬ ‫کارایی‬ ‫بیشترین‬.
‫مثال‬
‫به‬ ‫پاسخ‬ ‫برای‬Query‫چه‬ ‫زیر‬Index‫پیشنهاد‬ ‫را‬ ‫یی‬
‫کنید‬ ‫می‬.
 Select * from Employee where DOB > 1330
‫آیا‬B+ Index‫باشد؟‬ ‫مفید‬ ‫تواند‬ ‫می‬
‫سوال‬1:‫می‬ ‫صدق‬ ‫شرط‬ ‫در‬ ‫رکوردها‬ ‫از‬ ‫درصد‬ ‫چند‬
‫کنند؟‬
‫باالی‬ ‫اگر‬90‫اساسا‬ ‫است‬ ‫بهتر‬ ،‫است‬ ‫درصد‬Scan
‫کنیم‬!
‫سوال‬2:‫آیا‬Index‫صورت‬ ‫به‬clustered‫است؟‬
‫مرکب‬ ‫جستجوی‬ ‫کلید‬
‫صورت‬ ‫به‬ ‫جستجو‬ ‫اگر‬DOB= 1330&&salary =
400‫باشد‬
‫روی‬ ‫ایندکس‬ ‫کارایی‬(sal,DOB)‫کارایی‬ ‫از‬ ‫بهتر‬
‫روی‬sal‫و‬DOB‫است‬.
‫صورت‬ ‫به‬ ‫جستجو‬ ‫اگر‬1330<DOB<1340&&
300<salary<400
‫روی‬ ‫شده‬ ‫بندی‬ ‫خوشه‬ ‫ایندکس‬(sal,DOB)‫یا‬
(DOB,sal)‫است‬ ‫انتخاب‬ ‫بهترین‬.
‫صورت‬ ‫به‬ ‫جستجو‬ ‫اگر‬DOB=30&&
300<salary<400
‫به‬ ‫پاسخ‬Query‫به‬ ‫دسترسی‬ ‫با‬ ‫فقط‬
Index
‫اگر‬ ‫موارد‬ ‫برخی‬ ‫در‬Index‫داشته‬ ‫مناسب‬
‫به‬ ‫توانیم‬ ‫می‬ ،‫باشیم‬Query‫دسترسی‬ ‫بدون‬
‫دهیم‬ ‫پاسخ‬ ‫داده‬ ‫پایگاه‬ ‫های‬ ‫تاپل‬ ‫به‬.
‫مثال‬
 Select DOB, count(*) from Employee group by DOB
 Index on DOB
 Select AVG(sal) from Employee DOB = 1330 and sal
between 3000 and 5000
 Index on “DOB, salary”
‫هشتم‬ ‫فصل‬ ‫پایان‬

More Related Content

What's hot

Introduction to Hadoop and Spark - اسلاید کارگاه آموزش هدوپ و اسپارک شیراز
Introduction to Hadoop and Spark - اسلاید کارگاه آموزش هدوپ و اسپارک شیرازIntroduction to Hadoop and Spark - اسلاید کارگاه آموزش هدوپ و اسپارک شیراز
Introduction to Hadoop and Spark - اسلاید کارگاه آموزش هدوپ و اسپارک شیرازMobin Ranjbar
 
آموزش Sql
آموزش Sqlآموزش Sql
آموزش Sqlaminifar
 
آموزش Sql
آموزش Sqlآموزش Sql
آموزش Sqlaminifar
 
آموزش ذخیره و بازیابی اطلاعات - درس هفتم
آموزش ذخیره و بازیابی اطلاعات - درس هفتمآموزش ذخیره و بازیابی اطلاعات - درس هفتم
آموزش ذخیره و بازیابی اطلاعات - درس هفتمfaradars
 
سیستم فایل HDFS
سیستم فایل HDFSسیستم فایل HDFS
سیستم فایل HDFSnasser rezaei
 
آموزش ذخیره و بازیابی اطلاعات - درس هشتم
آموزش ذخیره و بازیابی اطلاعات - درس هشتمآموزش ذخیره و بازیابی اطلاعات - درس هشتم
آموزش ذخیره و بازیابی اطلاعات - درس هشتمfaradars
 
1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهران
1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهران1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهران
1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهرانFarafekr Technology
 
آموزش ذخیره و بازیابی اطلاعات - درس سوم
آموزش ذخیره و بازیابی اطلاعات - درس سومآموزش ذخیره و بازیابی اطلاعات - درس سوم
آموزش ذخیره و بازیابی اطلاعات - درس سومfaradars
 

What's hot (9)

Introduction to Hadoop and Spark - اسلاید کارگاه آموزش هدوپ و اسپارک شیراز
Introduction to Hadoop and Spark - اسلاید کارگاه آموزش هدوپ و اسپارک شیرازIntroduction to Hadoop and Spark - اسلاید کارگاه آموزش هدوپ و اسپارک شیراز
Introduction to Hadoop and Spark - اسلاید کارگاه آموزش هدوپ و اسپارک شیراز
 
آموزش Sql
آموزش Sqlآموزش Sql
آموزش Sql
 
آموزش Sql
آموزش Sqlآموزش Sql
آموزش Sql
 
HDFS
HDFSHDFS
HDFS
 
آموزش ذخیره و بازیابی اطلاعات - درس هفتم
آموزش ذخیره و بازیابی اطلاعات - درس هفتمآموزش ذخیره و بازیابی اطلاعات - درس هفتم
آموزش ذخیره و بازیابی اطلاعات - درس هفتم
 
سیستم فایل HDFS
سیستم فایل HDFSسیستم فایل HDFS
سیستم فایل HDFS
 
آموزش ذخیره و بازیابی اطلاعات - درس هشتم
آموزش ذخیره و بازیابی اطلاعات - درس هشتمآموزش ذخیره و بازیابی اطلاعات - درس هشتم
آموزش ذخیره و بازیابی اطلاعات - درس هشتم
 
1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهران
1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهران1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهران
1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهران
 
آموزش ذخیره و بازیابی اطلاعات - درس سوم
آموزش ذخیره و بازیابی اطلاعات - درس سومآموزش ذخیره و بازیابی اطلاعات - درس سوم
آموزش ذخیره و بازیابی اطلاعات - درس سوم
 

Viewers also liked

Equipment and human resource management in construction project
Equipment and human resource management in construction projectEquipment and human resource management in construction project
Equipment and human resource management in construction projectBabak Farahmand Shad
 
آشنایی با مدلهای سر آمدی
آشنایی با مدلهای سر آمدیآشنایی با مدلهای سر آمدی
آشنایی با مدلهای سر آمدیHamid Nazer
 
ضرورت پیاده سازی Isms
ضرورت پیاده سازی Ismsضرورت پیاده سازی Isms
ضرورت پیاده سازی IsmsMuhammad Bayat
 
ساختار سازماني و سازماندهی
ساختار سازماني و سازماندهیساختار سازماني و سازماندهی
ساختار سازماني و سازماندهیMorteza Noshad
 
Answer the question of trojan tech. case study
Answer the question of trojan tech. case studyAnswer the question of trojan tech. case study
Answer the question of trojan tech. case studySeyedbahira Farzadkish
 
Dss dr monem- first session
Dss dr monem- first sessionDss dr monem- first session
Dss dr monem- first sessionHossein Monem
 
SAP Business Objects
SAP Business ObjectsSAP Business Objects
SAP Business ObjectsPaniz Fazlali
 
تدوین برنامه عملیاتی برای گلاب زهرا و بانوی گل سرخ
تدوین برنامه عملیاتی برای گلاب زهرا و بانوی گل سرختدوین برنامه عملیاتی برای گلاب زهرا و بانوی گل سرخ
تدوین برنامه عملیاتی برای گلاب زهرا و بانوی گل سرخSeyedbahira Farzadkish
 
گزارش از ساختمانهای پروژه مهر سازمان مسکن و شهرسازی
گزارش از ساختمانهای پروژه مهر سازمان مسکن و شهرسازیگزارش از ساختمانهای پروژه مهر سازمان مسکن و شهرسازی
گزارش از ساختمانهای پروژه مهر سازمان مسکن و شهرسازیSeyedbahira Farzadkish
 
Finance project about housing investment company (hic)
Finance project about housing investment company (hic)Finance project about housing investment company (hic)
Finance project about housing investment company (hic)Seyedbahira Farzadkish
 
مدلهای فرایندی مدیریت دانش
مدلهای فرایندی مدیریت دانشمدلهای فرایندی مدیریت دانش
مدلهای فرایندی مدیریت دانشArash Omidi
 
First successful experience of sap erp implementation in iran
First successful experience of sap erp implementation in iranFirst successful experience of sap erp implementation in iran
First successful experience of sap erp implementation in iranPaniz Fazlali
 
SAP ERP Presentation for IKCO
SAP ERP Presentation for IKCOSAP ERP Presentation for IKCO
SAP ERP Presentation for IKCOPaniz Fazlali
 
Data Mining (Concepts, Applications, Techniques, Tools, Process, Experiences)...
Data Mining (Concepts, Applications, Techniques, Tools, Process, Experiences)...Data Mining (Concepts, Applications, Techniques, Tools, Process, Experiences)...
Data Mining (Concepts, Applications, Techniques, Tools, Process, Experiences)...Ehsan Asgarian
 

Viewers also liked (20)

پروژه سیستم کنفرانس مخابرات استان کرمانشاه
پروژه سیستم کنفرانس مخابرات استان کرمانشاهپروژه سیستم کنفرانس مخابرات استان کرمانشاه
پروژه سیستم کنفرانس مخابرات استان کرمانشاه
 
Equipment and human resource management in construction project
Equipment and human resource management in construction projectEquipment and human resource management in construction project
Equipment and human resource management in construction project
 
C#fasl3 2
C#fasl3 2C#fasl3 2
C#fasl3 2
 
آشنایی با مدلهای سر آمدی
آشنایی با مدلهای سر آمدیآشنایی با مدلهای سر آمدی
آشنایی با مدلهای سر آمدی
 
ضرورت پیاده سازی Isms
ضرورت پیاده سازی Ismsضرورت پیاده سازی Isms
ضرورت پیاده سازی Isms
 
ERP Implementation
ERP ImplementationERP Implementation
ERP Implementation
 
Rasis stragey-web 950126
Rasis stragey-web 950126Rasis stragey-web 950126
Rasis stragey-web 950126
 
ساختار سازماني و سازماندهی
ساختار سازماني و سازماندهیساختار سازماني و سازماندهی
ساختار سازماني و سازماندهی
 
Answer the question of trojan tech. case study
Answer the question of trojan tech. case studyAnswer the question of trojan tech. case study
Answer the question of trojan tech. case study
 
Dss dr monem- first session
Dss dr monem- first sessionDss dr monem- first session
Dss dr monem- first session
 
Project about economic engineering
Project about economic engineeringProject about economic engineering
Project about economic engineering
 
SAP Business Objects
SAP Business ObjectsSAP Business Objects
SAP Business Objects
 
تدوین برنامه عملیاتی برای گلاب زهرا و بانوی گل سرخ
تدوین برنامه عملیاتی برای گلاب زهرا و بانوی گل سرختدوین برنامه عملیاتی برای گلاب زهرا و بانوی گل سرخ
تدوین برنامه عملیاتی برای گلاب زهرا و بانوی گل سرخ
 
گزارش از ساختمانهای پروژه مهر سازمان مسکن و شهرسازی
گزارش از ساختمانهای پروژه مهر سازمان مسکن و شهرسازیگزارش از ساختمانهای پروژه مهر سازمان مسکن و شهرسازی
گزارش از ساختمانهای پروژه مهر سازمان مسکن و شهرسازی
 
Finance project about housing investment company (hic)
Finance project about housing investment company (hic)Finance project about housing investment company (hic)
Finance project about housing investment company (hic)
 
مدلهای فرایندی مدیریت دانش
مدلهای فرایندی مدیریت دانشمدلهای فرایندی مدیریت دانش
مدلهای فرایندی مدیریت دانش
 
اجرای استراتژی
اجرای استراتژیاجرای استراتژی
اجرای استراتژی
 
First successful experience of sap erp implementation in iran
First successful experience of sap erp implementation in iranFirst successful experience of sap erp implementation in iran
First successful experience of sap erp implementation in iran
 
SAP ERP Presentation for IKCO
SAP ERP Presentation for IKCOSAP ERP Presentation for IKCO
SAP ERP Presentation for IKCO
 
Data Mining (Concepts, Applications, Techniques, Tools, Process, Experiences)...
Data Mining (Concepts, Applications, Techniques, Tools, Process, Experiences)...Data Mining (Concepts, Applications, Techniques, Tools, Process, Experiences)...
Data Mining (Concepts, Applications, Techniques, Tools, Process, Experiences)...
 

Similar to DB Indexing

موتور جستجوی درون سازمانی
موتور جستجوی درون سازمانیموتور جستجوی درون سازمانی
موتور جستجوی درون سازمانیHamedSanaei
 
Ordbms پایگاه داده شی گرا-رابطه ای
Ordbms پایگاه داده شی گرا-رابطه ایOrdbms پایگاه داده شی گرا-رابطه ای
Ordbms پایگاه داده شی گرا-رابطه ایAli Moradi
 
(ِData Structures-Java Object oriented Programming Languages)ساختارهای دیتا ...
 (ِData Structures-Java Object oriented Programming Languages)ساختارهای دیتا ... (ِData Structures-Java Object oriented Programming Languages)ساختارهای دیتا ...
(ِData Structures-Java Object oriented Programming Languages)ساختارهای دیتا ...Muhibullah Aman
 
Transactions &amp; concurrency control
Transactions &amp; concurrency controlTransactions &amp; concurrency control
Transactions &amp; concurrency controlYoussef Esmailpour
 
Bi and data mining with Oracle
Bi and data mining with OracleBi and data mining with Oracle
Bi and data mining with Oracleghanadbashi
 
Introduction to oracle
Introduction to oracleIntroduction to oracle
Introduction to oracleEhsan Hamzei
 
spss-Part 1introduction of statistical package for social science
spss-Part 1introduction of statistical package for social sciencespss-Part 1introduction of statistical package for social science
spss-Part 1introduction of statistical package for social sciencemashkhalilbaba
 
(Linux Ubuntu Guide in Persian- Basic)رهنمود سیستم عامل اوبنتو فارسی- محب ال...
 (Linux Ubuntu Guide in Persian- Basic)رهنمود سیستم عامل اوبنتو فارسی- محب ال... (Linux Ubuntu Guide in Persian- Basic)رهنمود سیستم عامل اوبنتو فارسی- محب ال...
(Linux Ubuntu Guide in Persian- Basic)رهنمود سیستم عامل اوبنتو فارسی- محب ال...Muhibullah Aman
 
Data cleansing
Data cleansingData cleansing
Data cleansingSiminZolfi
 
ورودی خروجی Hadoop
ورودی خروجی Hadoopورودی خروجی Hadoop
ورودی خروجی Hadoopnasser rezaei
 
آموزش پایگاه داده ها - بخش یکم
آموزش پایگاه داده ها - بخش یکمآموزش پایگاه داده ها - بخش یکم
آموزش پایگاه داده ها - بخش یکمfaradars
 
معرفي فايروال پايگاه داده
معرفي فايروال پايگاه دادهمعرفي فايروال پايگاه داده
معرفي فايروال پايگاه دادهHamid Torkashvand
 

Similar to DB Indexing (20)

fasle3
fasle3fasle3
fasle3
 
موتور جستجوی درون سازمانی
موتور جستجوی درون سازمانیموتور جستجوی درون سازمانی
موتور جستجوی درون سازمانی
 
Ordbms پایگاه داده شی گرا-رابطه ای
Ordbms پایگاه داده شی گرا-رابطه ایOrdbms پایگاه داده شی گرا-رابطه ای
Ordbms پایگاه داده شی گرا-رابطه ای
 
(ِData Structures-Java Object oriented Programming Languages)ساختارهای دیتا ...
 (ِData Structures-Java Object oriented Programming Languages)ساختارهای دیتا ... (ِData Structures-Java Object oriented Programming Languages)ساختارهای دیتا ...
(ِData Structures-Java Object oriented Programming Languages)ساختارهای دیتا ...
 
Transactions &amp; concurrency control
Transactions &amp; concurrency controlTransactions &amp; concurrency control
Transactions &amp; concurrency control
 
Bi and data mining with Oracle
Bi and data mining with OracleBi and data mining with Oracle
Bi and data mining with Oracle
 
Introduction to oracle
Introduction to oracleIntroduction to oracle
Introduction to oracle
 
Sql tuning
Sql tuningSql tuning
Sql tuning
 
spss-Part 1introduction of statistical package for social science
spss-Part 1introduction of statistical package for social sciencespss-Part 1introduction of statistical package for social science
spss-Part 1introduction of statistical package for social science
 
(Linux Ubuntu Guide in Persian- Basic)رهنمود سیستم عامل اوبنتو فارسی- محب ال...
 (Linux Ubuntu Guide in Persian- Basic)رهنمود سیستم عامل اوبنتو فارسی- محب ال... (Linux Ubuntu Guide in Persian- Basic)رهنمود سیستم عامل اوبنتو فارسی- محب ال...
(Linux Ubuntu Guide in Persian- Basic)رهنمود سیستم عامل اوبنتو فارسی- محب ال...
 
Data cleansing
Data cleansingData cleansing
Data cleansing
 
Persian dspace
Persian dspacePersian dspace
Persian dspace
 
ورودی خروجی Hadoop
ورودی خروجی Hadoopورودی خروجی Hadoop
ورودی خروجی Hadoop
 
Html & Css
Html & CssHtml & Css
Html & Css
 
how enable ceph dashboard
how enable  ceph dashboardhow enable  ceph dashboard
how enable ceph dashboard
 
آموزش پایگاه داده ها - بخش یکم
آموزش پایگاه داده ها - بخش یکمآموزش پایگاه داده ها - بخش یکم
آموزش پایگاه داده ها - بخش یکم
 
Pg autoscaling in ceph
Pg autoscaling in  cephPg autoscaling in  ceph
Pg autoscaling in ceph
 
rbdmap in ceph
rbdmap in ceph rbdmap in ceph
rbdmap in ceph
 
Identifier
IdentifierIdentifier
Identifier
 
معرفي فايروال پايگاه داده
معرفي فايروال پايگاه دادهمعرفي فايروال پايگاه داده
معرفي فايروال پايگاه داده
 

More from Mahmood Neshati (PhD)

Organizational searchengineose architecture
Organizational searchengineose architectureOrganizational searchengineose architecture
Organizational searchengineose architectureMahmood Neshati (PhD)
 
رتبه بندی الاستیک سرچ
رتبه بندی الاستیک سرچرتبه بندی الاستیک سرچ
رتبه بندی الاستیک سرچMahmood Neshati (PhD)
 
موتور جستجوی سازمانی
موتور جستجوی سازمانیموتور جستجوی سازمانی
موتور جستجوی سازمانیMahmood Neshati (PhD)
 
موتورهای جستجوی تجارت الکترونیک و تنظیمات الاستیک سرچ برای زبان فارسی
موتورهای جستجوی تجارت الکترونیک و تنظیمات الاستیک سرچ برای زبان فارسیموتورهای جستجوی تجارت الکترونیک و تنظیمات الاستیک سرچ برای زبان فارسی
موتورهای جستجوی تجارت الکترونیک و تنظیمات الاستیک سرچ برای زبان فارسیMahmood Neshati (PhD)
 
اینترنت اشیا در 10 دقیقه
اینترنت اشیا در 10 دقیقهاینترنت اشیا در 10 دقیقه
اینترنت اشیا در 10 دقیقهMahmood Neshati (PhD)
 

More from Mahmood Neshati (PhD) (7)

Behjoo
BehjooBehjoo
Behjoo
 
Organizational searchengineose architecture
Organizational searchengineose architectureOrganizational searchengineose architecture
Organizational searchengineose architecture
 
رتبه بندی الاستیک سرچ
رتبه بندی الاستیک سرچرتبه بندی الاستیک سرچ
رتبه بندی الاستیک سرچ
 
موتور جستجوی سازمانی
موتور جستجوی سازمانیموتور جستجوی سازمانی
موتور جستجوی سازمانی
 
موتورهای جستجوی تجارت الکترونیک و تنظیمات الاستیک سرچ برای زبان فارسی
موتورهای جستجوی تجارت الکترونیک و تنظیمات الاستیک سرچ برای زبان فارسیموتورهای جستجوی تجارت الکترونیک و تنظیمات الاستیک سرچ برای زبان فارسی
موتورهای جستجوی تجارت الکترونیک و تنظیمات الاستیک سرچ برای زبان فارسی
 
اینترنت اشیا در 10 دقیقه
اینترنت اشیا در 10 دقیقهاینترنت اشیا در 10 دقیقه
اینترنت اشیا در 10 دقیقه
 
متدلوژی تحقیق
متدلوژی تحقیقمتدلوژی تحقیق
متدلوژی تحقیق
 

DB Indexing

  • 1. ‫ساختار‬ ‫بر‬ ‫ای‬ ‫مقدمه‬ ‫گذاری‬ ‫شاخص‬ ‫و‬ ‫فایل‬ ‫فصل‬8‫کتاب‬Database Management System‫ویرایش‬ ‫سوم‬ ‫نشاطی‬ ‫محمود‬ ‫دکتر‬
  • 2.
  • 3. ‫فصل‬ ‫این‬ ‫در‬ ‫مهم‬ ‫های‬ ‫سوال‬ 1)‫یک‬DBMS‫ماندگار‬ ‫های‬ ‫داده‬ ‫چگونه‬(Persistent Data)‫کند؟‬ ‫می‬ ‫سازی‬ ‫ذخیره‬ ‫را‬ 2)‫هزینه‬ ‫چرا‬IO‫بسیار‬ ‫داده‬ ‫پایگاه‬ ‫عملیات‬ ‫در‬ ‫است؟‬ ‫مهم‬ 3)DBMS‫کند‬ ‫می‬ ‫انتخاب‬ ‫را‬ ‫فایل‬ ‫ساختار‬ ‫چگونه‬ ‫هزینه‬ ‫تا‬IO‫شود؟‬ ‫کمینه‬ 4)Index‫کنیم؟‬ ‫استفاده‬ ‫آن‬ ‫از‬ ‫چگونه‬ ‫و‬ ‫چیست‬ 5)‫کجا‬ ‫کدام‬ ‫هر‬ ‫و‬ ‫چیست؟‬ ‫ایندکس‬ ‫مختلف‬ ‫انواع‬ ‫دارد؟‬ ‫کاربرد‬ 6)‫از‬ ‫چگونه‬Index‫کارایی‬ ‫تا‬ ‫کنیم‬ ‫استفاده‬ ‫کنیم؟‬ ‫بهینه‬ ‫را‬ ‫داده‬ ‫پایگاه‬
  • 4. ‫یک‬ ‫داخلی‬ ‫ساختار‬DBMS‫نمونه‬ Query Optimization and Execution Files and Access Methods Buffer Management Disk Space Management Application SQL ‫الیه‬‫اول‬:query‫به‬‫زبان‬ SQL‫را‬‫دریافت‬‫و‬‫پس‬‫از‬ parse‫کردن‬‫نحوه‬‫اجرا‬‫را‬ ‫مشخص‬‫می‬‫کند‬. ‫الیه‬‫دوم‬:‫برای‬‫الیه‬ ،‫باالتر‬‫مفهوم‬File‫را‬ ‫ایجاد‬‫می‬‫کند‬. File‫مجموعه‬‫از‬‫صفحات‬ ‫است‬. ‫هر‬‫صفحه‬‫حاوی‬‫یک‬‫یا‬ ‫چند‬‫رکورد‬‫است‬.‫الیه‬ ‫چند‬ ‫ساختار‬MS
  • 5. ‫یک‬ ‫داخلی‬ ‫ساختار‬DBMS‫نمونه‬ Query Optimization and Execution Files and Access Methods Buffer Management Disk Space Management Application SQL ‫الیه‬‫سوم‬:‫وظیفه‬‫انتقال‬ ‫صفحات‬‫از‬‫حافظه‬‫جانبی‬‫به‬ ‫حافظه‬‫اصلی‬‫را‬‫به‬‫عهده‬ ‫دارد‬. ‫الیه‬‫چهارم‬:‫مدیریت‬‫فضای‬ ‫روی‬‫دیسک‬‫را‬‫به‬‫عهده‬ ‫دارد‬. ‫توابع‬allocate، deallocate،read‫و‬write ‫صفحات‬
  • 6. ‫فایل‬ ‫ساختار‬ ‫نحوه‬‫قرار‬‫گرفتن‬‫رکوردهای‬‫اطالعاتی‬‫در‬ ‫فایل‬‫را‬‫اصطالحا‬‫ساختار‬‫فایل‬‫می‬‫گوییم‬. ‫هر‬‫نوع‬‫ساختار‬‫فایل‬‫برخی‬‫از‬‫عملیات‬‫روی‬ ‫پایگاه‬‫داده‬‫را‬‫کارا‬‫می‬‫کند‬‫و‬‫برخی‬ ‫دیگر‬‫را‬‫دشوار‬‫می‬‫کند‬. ‫مثال‬:‫فرض‬‫کنید‬‫رکوردهای‬‫اطالعاتی‬‫شامل‬ «‫نام‬‫کارمند‬»،«‫نام‬‫خانوادگی‬‫کارمند‬» «‫تاریخ‬‫تولد‬»‫و‬«‫حقوق‬‫کارمند‬»‫باشد‬. ‫اگر‬‫فهرست‬‫کارمندان‬‫را‬‫به‬‫اساس‬‫حقوق‬‫به‬ ‫صورت‬‫نزولی‬‫بخواهیم‬: ‫ساختار‬‫فایل‬:‫مرتب‬‫بر‬‫اساس‬‫حقوق‬
  • 8. ‫حافظه‬ ‫روی‬ ‫داده‬ ‫سازی‬ ‫ذخیره‬ ‫ثانویه‬‫می‬ ‫ذخیره‬ ‫اطالعات‬ ‫از‬ ‫زیادی‬ ‫حجم‬ ‫داده‬ ‫پایگاه‬ ‫در‬ ‫شود‬. ‫باشد‬ ‫ماندگار‬ ‫باید‬ ‫های‬ ‫داده‬ ‫شود‬ ‫نمی‬ ‫جا‬ ‫اصلی‬ ‫حافظه‬ ‫در‬ ‫ها‬ ‫داده‬( .‫این‬ ‫آیا‬ ‫است؟‬ ‫مهم‬ ‫هنوز‬ ‫شرط‬) ‫و‬ ‫کنیم‬ ‫می‬ ‫ذخیره‬ ‫ثانویه‬ ‫حافظه‬ ‫روی‬ ‫را‬ ‫ها‬ ‫داده‬ ‫می‬ ‫منتقل‬ ‫اصلی‬ ‫حافظه‬ ‫به‬ ‫باشد‬ ‫الزم‬ ‫پروسس‬ ‫وقتی‬ ‫کنیم‬( .‫داده‬ ‫انتقال‬ ‫واحد‬=‫پارامتر‬ ،‫صفحه‬DBMS ‫است‬). ‫دیسک‬
  • 9. ‫حافظه‬ ‫روی‬ ‫داده‬ ‫سازی‬ ‫ذخیره‬ ‫ثانویه‬ ‫اصلی‬ ‫حافظه‬ ‫به‬ ‫جانبی‬ ‫حافظه‬ ‫از‬ ‫صفحه‬ ‫انتقال‬ (‫بالعکس‬ ‫و‬)‫در‬ ‫عملیات‬ ‫ترین‬ ‫پرهزینه‬DBMS ‫است‬. ‫تعداد‬Page IO‫شود‬ ‫کمینه‬ ‫باید‬. ‫مثال‬:‫تفاوت‬External Sorting‫و‬Internal Sorting
  • 10. ‫حافظه‬ ‫روی‬ ‫داده‬ ‫سازی‬ ‫ذخیره‬ ‫ثانویه‬ ‫فایل‬ ‫صفحه‬ ‫رکورد‬
  • 11. ‫حافظه‬ ‫روی‬ ‫داده‬ ‫سازی‬ ‫ذخیره‬ ‫ثانویه‬‫دیسک‬ ‫تصادفی‬ ‫دسترسی‬ ‫با‬ ‫سازی‬ ‫ذخیره‬ ‫ابزار‬ ‫مهمترین‬ (random access) ‫فرض‬:‫واکشی‬ ‫هزینه‬‫تصادفی‬ ‫صفحه‬ ‫یک‬‫است‬ ‫ثابت‬. ‫روی‬ ‫شده‬ ‫ذخیره‬ ‫فیزیکی‬ ‫ترتیب‬ ‫به‬ ‫را‬ ‫صفحات‬ ‫اگر‬ ‫خواندن‬ ‫برای‬ ‫موردنیاز‬ ‫زمان‬ ،‫بخوانیم‬ ‫دیسک‬ ‫یابد‬ ‫می‬ ‫کاهش‬. ‫نوار‬ ‫است‬ ‫متوالی‬ ‫صورت‬ ‫به‬ ‫دسترسی‬( .Sequential) ‫و‬ ‫سازی‬ ‫آرشیو‬ ‫برای‬ ‫مناسب‬Backup‫گیری‬ ‫یک‬ ‫رکورد‬ ‫هر‬ ،‫کنیم‬ ‫می‬ ‫فرض‬ ‫فایل‬ ‫الیه‬ ‫در‬
  • 12. ‫حافظه‬ ‫روی‬ ‫داده‬ ‫سازی‬ ‫ذخیره‬ ‫ثانویه‬ ‫اگر‬‫الیه‬‫فایل‬‫فضای‬‫جدید‬‫نیاز‬‫داشته‬ ،‫باشد‬‫به‬‫الیه‬Disk Space Management ‫درخواست‬‫یک‬‫صفحه‬‫جدید‬‫می‬‫دهد‬. ‫اگر‬‫الیه‬‫فایل‬‫یک‬‫صفحه‬‫را‬‫نیاز‬ ‫نداشته‬،‫باشد‬‫آن‬‫را‬‫از‬‫طریق‬Disk Space Management‫آزاد‬‫می‬‫کند‬.
  • 13. ‫گذاری‬ ‫شاخص‬ ‫و‬ ‫فایل‬ ‫ساختار‬ ‫به‬ ،‫شده‬ ‫ذخیره‬ ‫های‬ ‫داده‬ ،‫فایل‬ ‫الیه‬ ‫در‬ ‫می‬ ‫داده‬ ‫نمایش‬ ‫رکوردها‬ ‫از‬ ‫مجموعه‬ ‫صورت‬ ‫شود‬. ‫فایل‬ ‫سطح‬ ‫در‬ ‫عملیات‬: ‫فایل‬ ‫حذف‬ ،‫فایل‬ ‫ساختن‬ ،‫رکورد‬ ‫حذف‬ ،‫رکورد‬ ‫درج‬ ‫اسکن‬(Scan: )‫رکوردها‬ ‫همه‬ ‫به‬ ‫دسترسی‬
  • 14. ‫گذاری‬ ‫شاخص‬ ‫و‬ ‫فایل‬ ‫ساختار‬ ‫مجموعه‬ ‫صورت‬ ‫به‬ ‫را‬ ‫رکوردها‬ ،‫فایل‬ ‫الیه‬ ‫کند‬ ‫می‬ ‫ذخیره‬ ‫صفحات‬ ‫از‬. ‫رابطه‬ ‫هر‬ ‫به‬ ‫مربوط‬ ‫های‬ ‫صفحه‬ ،‫فایل‬ ‫الیه‬ ‫شناسد‬ ‫می‬ ‫را‬. ،‫فایل‬ ‫الیه‬‫به‬ ‫مربوط‬ ‫صفحه‬ ‫هر‬ ‫خالی‬ ‫فضای‬ ‫شناسد‬ ‫می‬ ‫را‬ ‫رابطه‬ ‫یک‬.
  • 15. ‫گذاری‬ ‫شاخص‬ ‫و‬ ‫فایل‬ ‫ساختار‬ ‫ساختار‬Heap ‫فایل‬ ‫ساختار‬ ‫ترین‬ ‫ساده‬ ‫ساختار‬ ‫در‬Heap‫در‬ ‫تصادفی‬ ‫صورت‬ ‫به‬ ‫رکوردها‬ ، ‫شوند‬ ‫می‬ ‫ذخیره‬ ‫مربوطه‬ ‫صفحات‬. ‫داشتن‬ ‫با‬rid‫رکورد‬ ‫به‬ ‫مربوط‬ ‫صفحه‬ ‫توان‬ ‫می‬ ‫کنیم‬ ‫پیدا‬ ‫را‬ ‫موردنظر‬. ‫شده‬ ‫گذاری‬ ‫شاخص‬ ‫ساختار‬ ‫از‬ ‫برخی‬ ‫کارایی‬ ‫که‬ ‫ساختار‬ ‫نوعی‬‫جستجو‬ ‫عملیات‬ ‫دهد‬ ‫می‬ ‫بهبود‬ ‫را‬. ‫یک‬ ‫برای‬ ‫شاخص‬ ‫هر‬‫جستجو‬ ‫کلید‬(Search key)
  • 16. ‫گذاری‬ ‫شاخص‬ ‫و‬ ‫فایل‬ ‫ساختار‬ ‫برای‬‫یک‬‫فایل‬‫واحد‬‫می‬‫توان‬‫چند‬‫نوع‬ ‫شاخص‬‫گذاری‬‫داشت‬‫که‬‫هر‬‫کدام‬‫کلید‬ ‫جستجوی‬‫خاص‬‫خودش‬‫را‬‫دارد‬. ‫مثال‬‫رکورد‬‫کارمندان‬ ‫ذخیره‬‫سازی‬‫به‬‫صورت‬‫شاخص‬‫روی‬‫تاریخ‬‫تولد‬ ‫ایجاد‬‫شاخص‬‫اضافی‬‫روی‬‫حقوق‬
  • 17. ‫گذاری‬ ‫شاخص‬ ‫و‬ ‫فایل‬ ‫ساختار‬ ‫مفهوم‬ ‫دو‬ ‫با‬ ‫آشنایی‬ Data Entry:‫ایندکس‬ ‫فایل‬ ‫در‬ ‫شده‬ ‫ذخیره‬ ‫های‬ ‫رکورد‬ Data Record:‫داده‬ ‫حاوی‬ ‫رکوردهای‬:‫رکوردهای‬ ‫مانند‬ ‫قبل‬ ‫مثال‬ ‫در‬ ‫کارمندان‬ ‫داشتن‬ ‫با‬Data Entry‫به‬ ‫توانیم‬ ‫می‬Data Record ‫کنیم‬ ‫پیدا‬ ‫دسترسی‬. ‫ایده‬: ‫یافتن‬ ‫که‬ ‫سازیم‬ ‫می‬ ‫ای‬ ‫گونه‬ ‫به‬ ‫را‬ ‫شاخص‬Data Entry ‫باشد‬ ‫کارا‬ ‫آن‬ ‫در‬ ‫مشخص‬ ‫شرط‬ ‫یک‬ ‫با‬. ‫یافتن‬ ‫از‬ ‫بس‬Data Entry،Data Record‫پیدا‬ ‫را‬ ‫ها‬
  • 18. ‫گذاری‬ ‫شاخص‬ ‫کردن‬ ‫مدل‬ ‫های‬ ‫روش‬Data Entry: ‫اول‬ ‫روش‬(‫شده‬ ‫بندی‬ ‫خوشه‬) = Data recordData Entry ‫دوم‬ ‫روش‬ Data Entry = <K, rid> ‫سوم‬ ‫روش‬ Data Entry = <K, rid list>
  • 21. ‫گذاری‬ ‫شاخص‬ ‫های‬ ‫روش‬ ‫مقایسه‬ ‫اول‬ ‫روش‬ ‫در‬: ‫شاخص‬ ‫جستجو‬ ‫کلید‬ ‫اساس‬ ‫بر‬ ‫ای‬ ‫داده‬ ‫های‬ ‫رکورد‬ ‫گیرند‬ ‫می‬ ‫قرار‬ ‫فایل‬ ‫در‬. ‫سوم‬ ‫و‬ ‫دوم‬ ‫روش‬ ‫در‬: Data Entry‫به‬ ‫ها‬Data Record‫دهند‬ ‫می‬ ‫آدرس‬ ‫ها‬. ‫اول‬ ‫روش‬ ‫در‬:‫یک‬‫رکوردهای‬ ‫که‬ ‫داریم‬ ‫فایل‬ ‫نگهداری‬ ‫شده‬ ‫گذاری‬ ‫شاخص‬ ‫صورت‬ ‫به‬ ‫ای‬ ‫داده‬ ‫شوند‬ ‫می‬. ‫سوم‬ ‫و‬ ‫دوم‬ ‫روش‬ ‫در‬:‫فایل‬ ‫از‬ ‫شاخص‬ ‫فایل‬ ‫است‬ ‫مستقل‬ ‫و‬ ‫مجزا‬ ‫ای‬ ‫داده‬ ‫رکوردهای‬.
  • 22. ‫شده‬ ‫گذاری‬ ‫خوشه‬ ‫شاخص‬ ‫نمایش‬ Index entries Data entries = Data Record direct search for (Indexed Data File) data entries CLUSTERED ‫ترتیب‬data entry‫ترتیب‬ ‫با‬ ‫ها‬data record ‫یکسان‬ ‫ها‬(‫هم‬ ‫به‬ ‫نزدیک‬ ‫یا‬)‫است‬.
  • 23. ‫گذاری‬ ‫خوشه‬ ‫شاخص‬ ‫نمایش‬‫نشده‬ (Index File) (Data file) Data entries UNCLUSTERED ‫ترتیب‬data entry‫ترتیب‬ ‫با‬ ‫ها‬data record ‫است‬ ‫متفاوت‬ ‫ها‬. Data records
  • 24. ‫گذاری‬ ‫شاخص‬ ‫های‬ ‫روش‬ ‫مقایسه‬ ‫شاخص‬ ‫از‬ ‫یکی‬ ‫حداکثر‬ ،‫شاخص‬ ‫چند‬ ‫با‬ ‫فایل‬ ‫یک‬ ‫برای‬ ‫باشد‬ ‫اول‬ ‫نوع‬ ‫از‬ ‫تواند‬ ‫می‬ ‫ها‬. ‫چرا؟؟؟؟‬ ‫اول‬ ‫نوع‬ ‫شاخص‬ ‫یکی‬ ‫حداکثر‬ ‫و‬ ‫دوم‬ ‫نوع‬ ‫شاخص‬ ‫سوم‬ ‫دلخواه‬ ‫تعداد‬ ‫به‬
  • 25. ‫شده‬ ‫بندی‬ ‫خوشه‬ ‫شاخص‬(Clustered Index) ‫اگر‬‫یک‬‫فایل‬‫به‬‫گونه‬‫ساختاردهی‬‫شود‬‫که‬ ‫ترتیب‬data record‫ها‬‫شبیه‬‫ترتیب‬data Entry ‫ها‬،‫باشد‬‫شاخص‬‫خوشه‬‫بندی‬‫شده‬‫یا‬Clustered ‫نامیده‬‫می‬‫شود‬. ‫تعریف‬ ‫طبق‬ ،‫اول‬ ‫نوع‬ ‫های‬ ‫شاخص‬Clustered‫هستند‬. ‫سوم‬ ‫و‬ ‫دوم‬ ‫های‬ ‫شاخص‬Clustered‫نیستند‬.
  • 26. ‫بندی‬ ‫دسته‬Query‫به‬ ‫توجه‬ ‫با‬ ‫ها‬ ‫محدوده‬‫جستجو‬ Range Search Query-‫محدوده‬ ‫جستجوی‬ ‫مثال‬:‫حقوق‬ ‫با‬ ‫کارمندان‬ ‫نام‬ ‫بین‬1500‫تا‬2500‫بدهید‬ ‫را‬.  Select name from Employee where salary between 1500 and 2500 Equity Search Query-‫جستجوی‬‫برابری‬ ‫مثال‬:‫حقوق‬ ‫با‬ ‫کارمندان‬ ‫نام‬ 1000‫بدهید‬ ‫را‬.  Select name from Employee where salary=1000
  • 27. ‫شده‬ ‫بندی‬ ‫خوشه‬ ‫شاخص‬(Clustered Index) ‫می‬ ،‫شده‬ ‫بندی‬ ‫خوشه‬ ‫شاخص‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫کارایی‬ ‫توانیم‬Range Search Query‫به‬ ‫را‬ ‫دهیم‬ ‫افزایش‬ ‫گیری‬ ‫چشم‬ ‫صورت‬. ‫چرا؟‬ ‫در‬ ‫کنند‬ ‫می‬ ‫صدق‬ ‫جواب‬ ‫در‬ ‫که‬ ‫رکوردهایی‬ ‫اند‬ ‫شده‬ ‫ذخیره‬ ‫هم‬ ‫مجاورت‬. ‫به‬ ‫صفحات‬ ‫از‬ ‫محدودی‬ ‫تعداد‬ ‫انتقال‬ ‫با‬ ‫رسیم‬ ‫می‬ ‫جواب‬ ‫به‬ ،‫حافظه‬.
  • 28. ‫شده‬ ‫بندی‬ ‫خوشه‬ ‫شاخص‬Clustered Index ‫اگر‬‫شاخص‬‫خوشه‬‫بندی‬‫نباشد؟‬ ‫ممکن‬‫است‬‫هر‬‫رکورد‬،‫جواب‬‫در‬‫یک‬ ‫صفحه‬‫مجزا‬‫قرار‬‫بگیرد‬. ‫در‬‫بدترین‬‫حالت‬‫به‬‫تعداد‬‫رکورد‬ ‫های‬‫جواب‬‫باید‬‫صفحه‬‫به‬‫حافظه‬ ‫منتقل‬‫کنیم‬. IO Cost‫بسیار‬‫باال‬
  • 29. ‫کتاب‬ ‫مثال‬-‫جستجوی‬range-search ‫به‬ ‫ان‬ ‫در‬ ‫اخبار‬ ‫که‬ ‫بگیرید‬ ‫نظر‬ ‫در‬ ‫را‬ ‫اخبار‬ ‫کتاب‬ ‫یک‬ ‫است‬ ‫شده‬ ‫نوشته‬ ‫جدیدترین‬ ‫به‬ ‫ترین‬ ‫قدیمی‬ ‫از‬ ‫زمانی‬ ‫صورت‬. ‫به‬ ‫پاسخ‬range_search Query‫است‬ ‫کارا‬ ‫بسیار‬ ‫زیر‬: «‫تاریخ‬ ‫بین‬ ‫خبرها‬ ‫همه‬1/1/94‫تا‬1/1/95‫بدهید‬ ‫را‬»
  • 30. ‫کتاب‬ ‫مثال‬-‫جستجوی‬range-search ‫آن‬ ‫صفحات‬ ‫که‬ ‫بگیرید‬ ‫نظر‬ ‫در‬ ‫را‬ ‫خبر‬ ‫کتاب‬ ‫همان‬ ‫باشد‬ ‫شده‬ ‫مرتبط‬ ‫نویسنده‬ ‫اساس‬ ‫بر‬. ‫اول‬ ‫نویسنده‬ ‫خبرهای‬ ‫اول‬ ‫فصل‬ ‫دوم‬ ‫نویسنده‬ ‫خبرهای‬ ‫دوم‬ ‫فصل‬ .... ‫به‬ ‫پاسخ‬range_search Query‫داشتن‬ ‫با‬ ‫حتی‬ ‫زیر‬ index‫نیست‬ ‫کارا‬: «‫تاریخ‬ ‫بین‬ ‫خبرها‬ ‫همه‬1/1/94‫تا‬1/1/95‫را‬ ‫بدهید‬» ‫تاریخ‬ 94/1/1 11, 154, 344,453 94/1/2 99,98,545 94/1/3 1,2 … 95/1/1 45,9999,10001
  • 31. ‫مقایسه‬‫گذاری‬ ‫خوشه‬ ‫شاخص‬‫شده‬‫و‬ ‫گذاری‬ ‫خوشه‬ ‫شاخص‬‫نشده‬ ‫یک‬ ‫حداکثر‬ ‫فایل‬ ‫یک‬ ‫برای‬‫خوشه‬ ‫شاخص‬ ‫گذاری‬‫شده‬‫باشیم‬ ‫داشته‬ ‫توانیم‬ ‫می‬! ‫چرا؟‬ ‫شده‬ ‫گذاری‬ ‫خوشه‬ ‫شاخص‬ ‫صفت‬ ‫کدام‬ ‫اساس‬ ‫بر‬ ‫بسازیم؟‬ ‫توانیم‬ ‫می‬ ‫دلخواه‬ ‫تعداد‬ ‫به‬‫گذاری‬ ‫خوشه‬ ‫شاخص‬ ‫نشده‬‫باشیم‬ ‫داشته‬. ‫توانیم‬ ‫می‬ ‫هایی‬ ‫شاخص‬ ‫چه‬ ‫اخبار‬ ‫کتاب‬ ‫برای‬ ‫باشیم؟‬ ‫داشته‬
  • 32. ‫شاخص‬Primary‫و‬Secondary ‫تعریف‬ ‫نوع‬ ‫دو‬: ‫اول‬ ‫تعریف‬:‫روی‬ ‫شده‬ ‫تعریف‬ ‫های‬ ‫شاخص‬ Primary Key‫های‬ ‫شاخص‬Primary‫می‬ ‫گفته‬ ‫شوند‬. ‫شاخص‬ ‫صورت‬ ‫این‬ ‫غیر‬ ‫در‬Secondary‫است‬. ‫دوم‬ ‫تعریف‬:‫نوع‬ ‫های‬ ‫شاخص‬1‫را‬Primary index‫نوع‬ ‫های‬ ‫شاخص‬ ‫و‬2‫و‬3‫را‬Secondary Index‫گوییم‬ ‫می‬.
  • 33. ‫شاخص‬Unique ‫اند‬ ‫شده‬ ‫منتشر‬ ‫یکسان‬ ‫تاریخ‬ ‫یک‬ ‫در‬ ‫که‬ ‫خبر‬ ‫دو‬Search Key ‫اصطالحا‬ ‫و‬ ‫یکسان‬duplicate‫هستند‬. ‫گذاری‬ ‫شاخص‬ ‫یک‬ ‫در‬ ‫اگر‬duplicate‫شاخص‬ ‫به‬ ،‫باشیم‬ ‫نداشته‬ ‫مربوطه‬Unique Index‫گوییم‬ ‫می‬. ‫تاریخ‬ 94/1/1 11, 154, 344,453 94/1/2 99,98,545 94/1/3 1,2 … 95/1/1 45,9999,10001
  • 34. ‫گذاری‬ ‫شاخص‬ ‫ساختارهای‬ ‫داده‬ ‫داده‬ ‫گذاری‬ ‫شاخص‬ ‫برای‬ ‫کلی‬ ‫روش‬ ‫دو‬ ‫شود‬ ‫می‬ ‫استفاده‬: ‫از‬ ‫استفاده‬HASHING ‫از‬ ‫استفاده‬TREE ‫هدف‬:‫مقدار‬ ‫داشتن‬ ‫با‬«‫جستجو‬ ‫کلید‬»‫چگونه‬ ‫کنیم؟‬ ‫پیدا‬ ‫را‬ ‫جواب‬ ‫رکوردهای‬ ‫صفحه‬ ‫شماره‬ ‫مثال‬:«‫که‬ ‫بیابید‬ ‫را‬ ‫دانشجویانی‬ ‫رکوردهای‬ ‫نام‬‫ها‬ ‫آن‬‫علی‬‫است‬.» ‫مثال‬:«‫که‬ ‫بیابید‬ ‫را‬ ‫خبرهایی‬ ‫رکوردهای‬ ‫به‬ ‫مربوط‬ ‫ها‬ ‫آن‬ ‫تاریخ‬‫مهر‬ ‫اول‬‫است‬.»
  • 35. ‫بر‬ ‫مبتنی‬ ‫گذاری‬ ‫شاخص‬Hash ‫با‬‫استفاده‬‫از‬‫تابع‬Hash‫می‬‫توانیم‬ ‫رکورد‬‫ها‬‫را‬‫به‬‫گونه‬‫ای‬‫بچینیم‬‫که‬‫با‬ ‫داشتن‬‫کلید‬،‫جستجو‬‫با‬‫سرعت‬‫باال‬‫به‬‫صفحه‬ ‫مربوط‬‫به‬‫رکورد‬‫دسترسی‬‫پیدا‬‫کنیم‬.
  • 36. ‫بر‬ ‫مبتنی‬ ‫گذاری‬ ‫شاخص‬Hash ‫سوال‬:‫شاخص‬ ‫اگر‬ ‫کارمندان‬ ‫مثال‬ ‫در‬Hash‫اساس‬ ‫بر‬ ‫به‬ ‫چگونه‬ ‫باشد‬ ‫شده‬ ‫ساخته‬ ‫کارمندان‬ ‫تولد‬ ‫تاریخ‬ Query‫دهیم؟‬ ‫پاسخ‬ ‫زیر‬ ‫های‬ «‫سال‬ ‫در‬ ‫که‬ ‫کارمندانی‬ ‫حقوق‬1355‫شده‬ ‫متولد‬ ‫اند؟‬» «‫که‬ ‫کارمندانی‬ ‫تولد‬ ‫تاریخ‬2000‫می‬ ‫حقوق‬ ‫تومان‬ ‫گیرند؟‬» «‫های‬ ‫سال‬ ‫بین‬ ‫که‬ ‫کارمندانی‬ ‫حقوق‬ ‫میانگین‬1345 ‫تا‬1355‫اند؟‬ ‫شده‬ ‫متولد‬»
  • 37. ‫از‬ ‫مثال‬Hashing ‫زیر‬ ‫شرح‬ ‫به‬ ‫ها‬ ‫رکورد‬ ‫مجموعه‬ ‫کنید‬ ‫فرض‬ ‫باشد‬.
  • 39. ‫از‬ ‫مثال‬Hashing ‫تابع‬ Hash ‫تولد‬ ‫تاریخ‬ ‫است‬ ‫شده‬ ‫بندی‬ ‫خوشه‬ ‫شاخص‬ ‫نوع‬ ‫نه؟‬ ‫یا‬
  • 40. ‫از‬ ‫مثال‬Hashing ‫هم‬ ‫حقوق‬ ‫اساس‬ ‫بر‬ ‫را‬ ‫قبل‬ ‫فایل‬ ‫رکوردهای‬ ‫کنید‬ ‫گذاری‬ ‫شاخص‬. ‫تابع‬Hash ‫از‬ ‫مضربی‬ ‫حقوق‬ ‫آیا‬200‫است؟‬ ‫تابع‬ ‫ورودی‬=،‫حقوق‬ ‫تابع‬ ‫خروجی‬=‫خیر‬ ،‫بلی‬ ‫تعداد‬Bucket‫ها‬=2
  • 41. ‫از‬ ‫مثال‬Hashing ‫ایجاد‬ ‫شده‬ ‫بندی‬ ‫خوشه‬ ‫شاخص‬ ‫توان‬ ‫می‬ ‫آیا‬ ‫کرد؟‬ ‫داریم‬ ‫جستجو‬ ‫کلید‬ ‫دو‬ 1-‫تولد‬ ‫تاریخ‬(‫شده‬ ‫بندی‬ ‫خوشه‬) 2-‫حقوق‬
  • 42. ‫از‬ ‫مثال‬Hashing ‫تابع‬ Hash ‫تولد‬ ‫تاریخ‬ ‫تابع‬ Hash ‫حقوق‬ ‫شده‬ ‫بندی‬ ‫خوشه‬ ‫حقوق‬ ‫شاخص‬ ‫نوع‬ ‫نه؟‬ ‫یا‬ ‫است‬ ‫افزونگی‬ ‫بدون‬ ‫توانیم‬ ‫می‬ ‫آیا‬ ‫خوشه‬ ‫شاخص‬ ‫چند‬ ‫یا‬ ‫دو‬ ،‫داده‬
  • 43. ‫از‬ ‫مثال‬Hashing ‫می‬ ‫جستجو‬ ‫کلید‬ ‫های‬ ‫فیلد‬ ‫تعداد‬ ‫باشد‬ ‫یک‬ ‫از‬ ‫بیش‬ ‫تواند‬. ‫مثال‬:‫شاخص‬ ‫فیلد‬ ‫چند‬ ‫یا‬ ‫دو‬ ‫روی‬ ‫همزمان‬ ‫شود‬ ‫انجام‬ ‫گذاری‬. ‫عملی‬ ‫استفاده‬: ‫گذاری‬ ‫شاخص‬ ‫از‬ ‫استفاده‬ ‫عملی‬ ‫صورت‬ ‫به‬ Hashing‫است‬ ‫محدود‬. ‫برای‬ ‫تنها‬Equity Search Query‫است‬ ‫مناسب‬ ‫برای‬ ‫و‬Range Query‫نیست‬ ‫مناسب‬.
  • 44. ‫بر‬ ‫مبتنی‬ ‫گذاری‬ ‫شاخص‬Hash ‫چند‬ ‫به‬ ‫ها‬ ‫رکورد‬ ‫مجموعه‬Bucket‫شوند‬ ‫می‬ ‫تقسیم‬. ‫هر‬Bucket،‫نیاز‬ ‫صورت‬ ‫در‬ ‫و‬ ،‫اصلی‬ ‫صفحه‬ ‫یک‬ ‫شامل‬ ‫است‬ ‫اضافی‬ ‫صفحه‬ ‫چند‬. ‫نگاشت‬‫جستجو‬ ‫کلید‬‫به‬Bucket‫از‬ ‫استفاده‬ ‫با‬ ‫تابع‬Hash‫شود‬ ‫می‬ ‫انجام‬. ‫شماره‬ ‫اگر‬Bucket‫مورد‬ ‫صفحه‬ ‫یافتن‬ ،‫بدانیم‬ ‫را‬ ‫محدودی‬ ‫تعداد‬ ‫با‬ ‫نظر‬IO‫است‬ ‫پذیر‬ ‫امکان‬. ‫هنگام‬ ‫در‬Insert‫در‬ ‫رکورد‬ ‫هر‬ ،Bucket‫به‬ ‫مربوط‬ ‫شود‬ ‫می‬ ‫درج‬ ‫خود‬. ‫هنگام‬ ‫در‬Search‫با‬ ‫را‬ ‫جستجو‬ ‫کلید‬ ‫مقدار‬ ، ‫تابع‬ ‫از‬ ‫استفاده‬Hash‫شماره‬ ‫به‬Bucket‫می‬ ‫تبدیل‬
  • 45. Hash index in SQL server  SQL server 2014 supports Hash Index  The following figure shows three index keys that are mapped to three different buckets in the hash index.  Hash function is fix  BUCKET_COUNT is a parameter.  bucket count should be between 1 and 2 times the number of distinct values in the index key.  Hash Indexing is suitable for memory-optimized table.  Reference: msdn.microsoft.com/
  • 46. ‫درختی‬ ‫گذاری‬ ‫شاخص‬ ‫برای‬ ‫جایگزین‬ ‫راهکار‬ ‫یک‬ ‫درختی‬ ‫ساختار‬ ‫ساختن‬Index‫است‬. ‫روش‬ ‫این‬ ‫در‬Data Entry‫به‬ ‫توجه‬ ‫با‬ ‫ها‬ ‫مرتب‬ ‫صورت‬ ‫به‬ ،‫جستجو‬ ‫کلید‬(Sorted)‫ذخیره‬ ‫شوند‬ ‫می‬. ‫جستجو‬ ‫هدایت‬ ‫برای‬ ‫درختی‬ ‫ساختار‬ ‫از‬ ‫شود‬ ‫می‬ ‫استفاده‬.
  • 47. 1345 1356 1320 1371 1300 1380 1300<=Y<1380 1371<=Y<13801320<=Y<13711300<=Y<1320 1320<=Y<1345 1345<=Y<1356 1356<=Y<1371 ‫برگ‬ ‫سطح‬ A B C L1 L2 L3 ‫شوند‬ ‫می‬ ‫نگهداری‬ ‫صفحه‬ ‫یک‬ ‫در‬
  • 48. ‫درختی‬ ‫گذاری‬ ‫شاخص‬ ‫برگ‬ ‫الیه‬: ‫سطح‬ ‫این‬ ‫در‬Data Entry‫گیرند‬ ‫می‬ ‫قرار‬ ‫ها‬. Data Entry =? Data Record ‫درختی‬ ‫گذاری‬ ‫شاخص‬ ‫مزیت‬: ‫توان‬ ‫می‬ ‫کارا‬ ‫صورت‬ ‫به‬data entry‫شرط‬ ‫در‬ ‫که‬ ‫هایی‬ range Query‫کرد‬ ‫پیدا‬ ‫را‬ ‫کنند‬ ‫می‬ ‫صدق‬! ‫مثال‬:‫های‬ ‫سال‬ ‫بین‬ ‫که‬ ‫کارمندانی‬1345‫تا‬1362 ‫اند‬ ‫شده‬ ‫متولد‬. 1362<Birth Year<1345‫از‬ ‫ای‬ ‫صفحه‬ ‫است‬ ‫کافی‬data entry‫را‬ ‫ها‬ ‫تار‬ ‫که‬ ‫کنیم‬ ‫پیدا‬‫ی‬‫از‬ ‫بزرگتر‬ ‫تولد‬ ‫خ‬45 ‫باشد‬.‫حرکت‬ ‫برگ‬ ‫روی‬ ‫های‬ ‫لینک‬ ‫از‬ ‫سپس‬
  • 49. ‫درختی‬ ‫گذاری‬ ‫شاخص‬ ‫چند‬Page IO‫داریم؟‬ ‫نیاز‬ 1-‫پاسخ‬ ‫اولین‬ ‫حاوی‬ ‫برگ‬ ‫عمق‬ ‫به‬ 2-‫جواب‬ ‫حاوی‬ ‫های‬ ‫برگ‬ ‫تعداد‬ ‫به‬ ‫استفاده‬ ‫مورد‬ ‫ساختار‬ ‫داده‬:‫درخت‬B+ ‫یکسان‬ ،‫دلخواه‬ ‫برگ‬ ‫هر‬ ‫تا‬ ‫ریشه‬ ‫فاصله‬ ‫است‬( .‫ارتفاع‬Balanced)
  • 50. ‫درختی‬ ‫گذاری‬ ‫شاخص‬ ‫درخت‬ ‫یک‬ ‫در‬ ‫جستجو‬ ‫هزینه‬B+‫هزینه‬ ‫از‬ ‫کمتر‬ ‫فایل‬ ‫روی‬ ‫باینری‬ ‫جستجوی‬sort‫است‬ ‫ها‬ ‫رکورد‬ ‫شده‬. ‫زیادی‬ ‫تعداد‬ ‫تواند‬ ‫می‬ ‫داخلی‬ ‫گره‬ ‫هر‬pointer ‫از‬ ‫استفاده‬ ‫با‬ ‫را‬ ‫درخت‬ ‫ارتفاع‬ ‫که‬ ‫باشد‬ ‫داشته‬ ‫دهیم‬ ‫می‬ ‫کاهش‬ ‫آن‬. ‫درخت‬ ‫ارتفاع‬B+‫حداکثر‬ ‫عمل‬ ‫در‬3-4‫است‬ ‫برای‬10^6‫باینری‬ ‫درخت‬ ‫ارتفاع‬ ،‫برگ‬=20
  • 51. ‫مقایسه‬B+ Tree‫و‬Binary Tree ‫غیر‬ ‫نود‬ ‫یک‬ ‫نودهای‬ ‫زیر‬ ‫تعداد‬ ‫میانگین‬ ‫برگ‬=Fan out Degree ‫کنید‬ ‫فرض‬Fan out = N‫درخت‬ ‫ارتفاع‬ ‫و‬=H ‫است؟‬ ‫تا‬ ‫چند‬ ‫برگ‬ ‫های‬ ‫گره‬ ‫تعداد‬ N^H ‫اگر‬Fan out =100‫و‬H=4‫برگ‬ ‫تعداد‬‫ها‬=100 ‫میلیون‬ ‫باینری‬ ‫جستجوی‬log(10^8)‫حداقل‬ ‫به‬ ،25IO ‫دارد‬ ‫نیاز‬.
  • 52. Fan out= N, Height = H Leaf Node = N^H ... ... ... ‫ها‬ ‫نود‬ ‫تعداد‬ =N ‫ها‬ ‫نود‬ ‫تعداد‬ =N^2
  • 53. ‫فایل‬ ‫ساختارهای‬ ‫مقایسه‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫مختلف‬ ‫عملیات‬ ‫کارایی‬ ‫مقایسه‬ ‫متنوع‬ ‫ساختارهای‬ ‫های‬ ‫کلید‬ ‫اساس‬ ‫بر‬ ‫ها‬ ‫شاخص‬ ‫کنید‬ ‫فرض‬(‫و‬ ‫حقوق‬ ‫تولد‬ ‫سال‬) ‫بحث‬ ‫مورد‬ ‫ساختارهای‬: Heap ‫فایل‬sort‫شده‬ ‫درختی‬ ‫شده‬ ‫بندی‬ ‫خوشه‬ ‫شاخص‬ ‫ساختار‬Heap‫درختی‬ ‫ای‬ ‫غیرخوشه‬ ‫شاخص‬ ‫با‬ ‫ساختار‬Heap‫غیرخوشه‬ ‫شاخص‬ ‫با‬‫ای‬Hash
  • 54. ‫فایل‬ ‫ساختارهای‬ ‫مقایسه‬ ‫شرح‬ ‫به‬ ‫دهیم‬ ‫می‬ ‫انجام‬ ‫ها‬ ‫فایل‬ ‫روی‬ ‫که‬ ‫عملیاتی‬ ‫است‬ ‫زیر‬: Scan ‫حافظه‬ ‫از‬ ‫رکوردها‬ ‫همه‬ ‫انتقال‬ ،‫هدف‬ ‫فعالیت‬ ‫این‬ ‫در‬ ‫به‬ ‫چانبی‬Buffer‫است‬. Equity search-‫جستجو‬ ‫کلید‬ ‫با‬ ‫برابری‬ ‫شرط‬ ‫با‬ ‫جستجو‬ ‫مثال‬:‫متولد‬ ‫کارمند‬ ‫که‬ ‫بدهید‬ ‫را‬ ‫رکوردهایی‬ ‫همه‬1345‫درآمد‬ ‫و‬ 750‫باشد‬ ‫تومان‬. ‫شوند‬ ‫بازیابی‬ ‫باید‬ ‫مربوطه‬ ‫صفحات‬. Range Query-‫جستجو‬ ‫کلید‬ ‫روی‬ ‫محدوده‬ ‫جستجوی‬ ‫مثال‬:‫سال‬ ‫متولد‬ ‫کارمندان‬ ‫شامل‬ ‫که‬ ‫بدهید‬ ‫را‬ ‫رکوردهایی‬ ‫همه‬360 ‫باشد‬ ‫بعد‬ ‫به‬.
  • 55. ‫عملیات‬ ‫هزینه‬ ‫سازی‬ ‫مدل‬ ‫مقدار‬ ‫متداو‬ ‫ل‬ ‫نام‬ ‫پارامت‬ ‫ر‬ ‫شرح‬‫پارامتر‬ Size /8k B ‫برای‬ ‫صفحات‬ ‫تعداد‬‫رکورد‬ ‫سازی‬ ‫ذخیره‬ ‫ها‬(‫اتالف‬ ‫بدون‬) - R ‫تعداد‬‫صفحه‬ ‫هر‬ ‫در‬ ‫رکورد‬ 15 MS D ‫متوسط‬‫خواندن‬ ‫زمان‬/‫صفحه‬ ‫یک‬ ‫نوشتن‬ 100 NS C ‫یک‬ ‫پردازش‬ ‫برای‬ ‫الزم‬ ‫زمان‬ ‫متوسط‬ ‫رکورد‬ 100 NS H ‫تابع‬ ‫اجرای‬ ‫برای‬ ‫الزم‬ ‫زمان‬ ‫متوسط‬ Hash‫رکورد‬ ‫یک‬ ‫روی‬ 100 F ‫در‬ ‫برگ‬ ‫غیر‬ ‫نودهای‬ ‫فرزندان‬ ‫تعداد‬ B+ Tree
  • 56. ‫ساختار‬ ‫بررسی‬Heap scan B(D+RC) B‫شود‬ ‫منتقل‬ ‫حافظه‬ ‫به‬ ‫باید‬ ‫صفحه‬B*D ‫شامل‬ ‫صفحه‬ ‫هر‬R‫هر‬ ‫پروسس‬ ‫برای‬ ‫که‬ ‫است‬ ‫رکورد‬ ‫رکورد‬C‫است‬ ‫الزم‬ ‫زمان‬=B*R*C Equity Search ‫شود‬ ‫انجام‬ ‫کاندید‬ ‫کلید‬ ‫روی‬ ‫جستجو‬ ‫اگر‬: 0.5B(D+RC) ‫روی‬ ‫جستجو‬ ‫یا‬ ‫و‬ ‫باشد‬ ‫نداشته‬ ‫جواب‬ ‫جستجو‬ ‫اگر‬ ‫باشد‬ ‫غیرکلید‬ ‫صفت‬ ‫یک‬:B(D+RC)
  • 57. ‫ساختار‬ ‫بررسی‬Heap Range Query ‫کارمندان‬ ‫شامل‬ ‫که‬ ‫بدهید‬ ‫را‬ ‫رکوردهایی‬ ‫همه‬ ‫سال‬ ‫متولد‬1360‫باشد‬ ‫بعد‬ ‫به‬. B(D+RC) ‫کنیم‬ ‫جستجو‬ ‫باید‬ ‫پاسخ‬ ‫یافتن‬ ‫برای‬ ‫را‬ ‫فایل‬ ‫همه‬! Insert ‫کنیم‬ ‫اضافه‬ ‫فایل‬ ‫انتهای‬ ‫به‬ ‫را‬ ‫رکورد‬ ‫است‬ ‫کافی‬ ‫را‬ ‫رکورد‬ ،‫کنبد‬ ‫منتقل‬ ‫حافظه‬ ‫به‬ ‫را‬ ‫آخر‬ ‫صفحه‬ ‫کنید‬ ‫منتقل‬ ‫دیسک‬ ‫به‬ ‫را‬ ‫صفحه‬ ‫بنویسید؛‬. 2D+C
  • 58. ‫ساختار‬ ‫بررسی‬Heap Delete ‫صفحه‬ ‫انتقال‬ ‫و‬ ‫رکورد‬ ‫جستجو‬ ‫هزینه‬ ‫حافظه‬ ‫به‬+c+D ‫اگر‬rid‫باشیم‬ ‫داشته‬ ‫را‬ ‫صفحه‬ ‫انتقال‬ ‫و‬ ‫رکورد‬ ‫جستجو‬ ‫هزینه‬ ‫به‬‫حافظه‬=D ‫اگر‬rid‫را‬‫باشیم‬ ‫نداشته‬ ‫های‬ ‫روش‬ ‫با‬ ‫باید‬ ‫را‬ ‫هزینه‬Equity‫یا‬ Range‫کنیم‬ ‫محاسبه‬. ‫نکته‬:‫عملیات‬ ‫هزینه‬delete‫در‬
  • 59. ‫ها‬ ‫هزینه‬ ‫جدول‬ File Type Scan Equity Search Range Search Insert Delete Heap B(D+RC) 0.5B(D+RC) B(D+RC) 2D+C Search +C+D Sorted Clustered Tree Unclustered Tree Unclustered Hash File Type Scan Equity Search Range Search Insert Delete Heap BD 0.5BD BD 2D Search +D Sorted Clustered Tree Unclustered Tree Unclustered Hash
  • 60. ‫ساختار‬ ‫بررسی‬Sorted Scan B(D+RC) ‫چرا؟‬ Equity Search ‫ترتیب‬ ‫کلید‬ ‫روی‬ ‫جستجو‬(‫کلید‬ ‫اولین‬ ‫حداقل‬)‫شود‬ ‫انجام‬ Log B،‫هدف‬ ‫صفحه‬ ‫یافتن‬ ‫برای‬ ‫جستجو‬Log R‫برای‬ ‫جستجو‬ ‫رکورد‬ ‫یافتن‬ D Log B + C Log R ‫باشیم؟‬ ‫داشته‬ ‫جواب‬ ‫رکورد‬ ‫یک‬ ‫از‬ ‫بیش‬ ‫اگر‬ ‫نشود‬ ‫انجام‬ ‫ترتیب‬ ‫کلید‬ ‫روی‬ ‫جستجو‬. ‫کند‬ ‫نمی‬ ‫کمکی‬ ‫ترتیب‬.‫مانند‬Heap
  • 61. ‫ساختار‬ ‫بررسی‬Sorted Range Query ‫متولد‬ ‫کارمندان‬ ‫شامل‬ ‫که‬ ‫بدهید‬ ‫را‬ ‫رکوردهایی‬ ‫همه‬ ‫سال‬1360‫باشد‬ ‫بعد‬ ‫به‬. ‫اولین‬ ‫یافتن‬ ‫شامل‬ ‫هزینه‬ ،‫شود‬ ‫انجام‬ ‫ترتیب‬ ‫کلید‬ ‫روی‬ ‫جستجو‬ ‫اگر‬ ‫لزوم‬ ‫صورت‬ ‫در‬ ‫و‬ ‫جواب‬ ‫رکود‬fetch‫است‬ ‫بعدی‬ ‫صفحات‬ ‫کردن‬. ‫نکته‬:‫دارد‬ ‫بستگی‬ ‫جواب‬ ‫رکوردهای‬ ‫تعداد‬ ‫به‬ ‫هزینه‬. D Log B + C Log R + C #matched records Insert ‫شود‬ ‫مشخص‬ ‫رکورد‬ ‫درج‬ ‫جایگاه‬. ‫شوند‬ ‫جابجا‬ ‫رکورد‬ ‫یک‬ ‫جدید‬ ‫رکوردهای‬ ‫از‬ ‫بعد‬ ‫رکوردهای‬. 2 * (0.5B(D+RC)) delete
  • 62. ‫ها‬ ‫هزینه‬ ‫جدول‬ File Type Scan Equity Search Range Search Insert Delete Heap B(D+RC) 0.5B(D+RC) B(D+RC) 2D+C Search +C+D Sorted B(D+RC) D log 𝟐 𝑩+ C Log R D log 𝟐 𝑩 + C Log R + RC #matched record Search+ B(D+RC) Search + B(D+RC) File Type Scan Equity Search Range Search Insert Delete Heap BD 0.5BD BD 2D Search +D Sorted BD log 𝟐 𝑩*D log 𝟐 𝑩 * D BD + Search BD + Search
  • 63. ‫بررسی‬‫ساختار‬Clustered B+ Tree ‫برای‬ ،‫است‬ ‫داده‬ ‫نشان‬ ‫تجربی‬ ‫های‬ ‫آزمایش‬ ‫نگهداشتن‬ ‫باالنس‬B+ Tree‫متوسط‬ ‫طور‬ ‫به‬ ،‫یک‬ ‫سوم‬‫ماند‬ ‫می‬ ‫خالی‬ ‫صفحات‬ ‫حجم‬.‫اگر‬ ‫پس‬ ‫فشرده‬ ‫صورت‬ ‫به‬ ‫داده‬B‫این‬ ‫در‬ ،‫باشد‬ ‫صفحه‬ ‫روش‬1.5B‫شود‬ ‫می‬ ‫صفحه‬. Scan B(D+RC)*1.5 ‫چرا؟‬
  • 64. ‫ساختار‬ ‫بررسی‬Clustered B+ Tree Equity Search ‫ترتیب‬ ‫کلید‬ ‫روی‬ ‫جستجو‬(‫کلید‬ ‫اولین‬ ‫حداقل‬)‫انجام‬ ‫شود‬ log 𝐹 1.5𝐵،‫هدف‬ ‫صفحه‬ ‫یافتن‬ ‫برای‬ ‫جستجو‬𝐿𝑜𝑔2 𝑅‫جستجو‬ ‫رکورد‬ ‫یافتن‬ ‫برای‬ 𝐷 𝐿𝑜𝑔 𝐹 1.5𝐵 + 𝐶 𝐿𝑜𝑔2 𝑅 ‫باشیم؟‬ ‫داشته‬ ‫جواب‬ ‫رکورد‬ ‫یک‬ ‫از‬ ‫بیش‬ ‫اگر‬ ‫نشود‬ ‫انجام‬ ‫ترتیب‬ ‫کلید‬ ‫روی‬ ‫جستجو‬. ‫کند‬ ‫نمی‬ ‫کمکی‬ ‫ترتیب‬.‫مانند‬Heap
  • 65. ‫ساختار‬ ‫بررسی‬Clustered B+ Tree Range Query ‫شامل‬ ‫که‬ ‫بدهید‬ ‫را‬ ‫رکوردهایی‬ ‫همه‬ ‫سال‬ ‫متولد‬ ‫کارمندان‬1360‫بعد‬ ‫به‬ ‫باشد‬. ،‫شود‬ ‫انجام‬ ‫ترتیب‬ ‫کلید‬ ‫روی‬ ‫جستجو‬ ‫اگر‬ ‫در‬ ‫و‬ ‫جواب‬ ‫رکود‬ ‫اولین‬ ‫یافتن‬ ‫شامل‬ ‫هزینه‬ ‫لزوم‬ ‫صورت‬fetch‫است‬ ‫بعدی‬ ‫صفحات‬ ‫کردن‬.( ‫از‬ ‫استفاده‬ ‫با‬pointer‫ها‬ ‫برگ‬ ‫روی‬ ‫های‬) ‫نکته‬:‫جواب‬ ‫رکوردهای‬ ‫تعداد‬ ‫به‬ ‫هزینه‬ ‫دارد‬ ‫بستگی‬. 𝐷 𝐿𝑜𝑔 1.5𝐵 + 𝐶 𝐿𝑜𝑔 𝑅 + 𝑅𝐶 #𝑚𝑎𝑡𝑐ℎ𝑒𝑑 𝑟𝑒𝑐𝑜𝑟𝑑
  • 66. ‫ساختار‬ ‫بررسی‬Clustered B+ Tree Insert ‫شود‬ ‫مشخص‬ ‫رکورد‬ ‫درج‬ ‫جایگاه‬ ‫برگ‬ ‫صفحه‬. ‫وجود‬ ‫جدید‬ ‫رکورد‬ ‫یک‬ ‫شدن‬ ‫درچ‬ ‫جای‬ ‫موارد‬ ‫بیشتر‬ ‫در‬ ‫ساختار‬ ‫صورت‬ ‫این‬ ‫غیر‬ ‫در‬ ،‫دارد‬B Tree‫به‬ ‫باید‬ ‫شود‬ ‫روز‬. 𝐷 𝐿𝑜𝑔 𝐹 1.5𝐵 + 𝐶 𝐿𝑜𝑔 𝑅 + 𝐷 Delete ‫مانند‬Insert
  • 67. ‫ها‬ ‫هزینه‬ ‫جدول‬ File Type Scan Equity Search Range Search Insert Delete Heap B(D+RC) 0.5B(D+RC) B(D+RC) 2D+C Search +C+D Sorted B(D+RC) D Log B + C Log R D Log B + C Log R + RC #matched records Search+ B(D+RC) Search + BD Clustered Tree 1.5B(D+ RC 𝑫 𝑳𝒐𝒈 𝑭 𝟏. 𝟓𝑩 + 𝑪 𝑳𝒐𝒈 𝟐 𝑹 𝐷 𝐿𝑜𝑔 𝐹 1.5𝐵 + 𝐶 𝐿𝑜𝑔 𝑅 + 𝑅𝐶 #𝑚𝑎𝑡𝑐ℎ𝑒𝑑 𝑟𝑒𝑐𝑜𝑟𝑑𝑠 𝐷 𝐿𝑜𝑔 𝐹 1.5𝐵 + 𝐶 𝐿𝑜𝑔 𝑅 + 𝐷 𝐷 𝐿𝑜𝑔 𝐹 1.5𝐵 + 𝐶 𝐿𝑜𝑔 𝑅 + 𝐷 Unclustered Tree Unclustered Hash ‫در‬ ‫نکته‬sql server‫صورت‬ ‫به‬ ‫اصلی‬ ‫کلید‬ ‫اساس‬ ‫بر‬ ‫فرض‬ ‫پیش‬ ‫صورت‬ ‫به‬ ‫جدول‬ ،
  • 68. ‫هزینه‬ ‫جدول‬‫شده‬ ‫ساده‬ ‫های‬ File Type Scan Equity Search Range Search Insert Delete Heap BD 0.5BD BD 2D Search +D Sorted BD log 𝟐 𝑩*D log 𝟐 𝑩 * D BD + Search BD + Search Clustered Tree 1.5BD 𝑳𝒐𝒈 𝑭 𝟏. 𝟓𝑩 ∗ 𝑫 𝑳𝒐𝒈 𝑭 𝟏. 𝟓𝑩 ∗ 𝑫 𝑺𝒆𝒂𝒓𝒄𝒉 + 𝑫 𝑺𝒆𝒂𝒓𝒄𝒉 + 𝑫 ‫نکته‬:‫در‬sql server،Fan-out‫تا‬ ‫تواند‬ ‫می‬404‫افزایش‬
  • 70. ‫بررسی‬‫ساختار‬Unclustered Tree ‫فرض‬:‫اندازه‬data entry= 0.1 data record ‫برای‬ ‫الزم‬ ‫صفحات‬ ‫تعداد‬ ‫اگر‬data record‫ها‬=B‫باشد‬ ‫برای‬ ‫الزم‬ ‫صفحات‬ ‫تعداد‬data entry=0.15*B ‫تعداد‬data Entry‫صفحه‬ ‫هر‬ ‫در‬=10* 0.66=6.6 R Data entries Data Records UNCLUSTERED
  • 71. ‫ساختار‬ ‫بررسی‬Unclustered Tree Scan ‫ها‬ ‫رکورد‬ ‫به‬ ‫شده‬ ‫مرتب‬ ‫صورت‬ ‫به‬ ‫بخواهیم‬ ‫اگر‬ ‫که‬ ‫است‬ ‫بهتر‬ ،‫کنیم‬ ‫پیدا‬ ‫دسترسی‬Index‫کال‬ ‫را‬ ‫کنیم‬ ‫فراموش‬. ‫زیاد‬ ‫بسیار‬ ‫هزینه‬ ‫خواندن‬ ‫برای‬ ‫الزم‬ ‫هزینه‬data entries: 0.15𝐵(𝐷 + 6.7𝑅𝐶) ‫هر‬ ‫برای‬ ‫حالت‬ ‫بدترین‬ ‫در‬data entry‫یک‬IO ‫داریم‬ ‫الزم‬ 𝐵𝑅(𝐷 + 𝐶)
  • 72. ‫ساختار‬ ‫بررسی‬Unclustered Tree Equity Search ‫هزینه‬ ‫مختلف‬ ‫های‬ ‫بخش‬ ‫یافتن‬Data Entry‫مربوطه‬=𝐷 log 𝐹 0.15𝐵 ‫یافتن‬entry‫در‬ ‫هدف‬Data Entry=𝐶 log2 6.7𝑅 ‫یافتن‬Data Record‫روی‬ ‫از‬Data Entry=D ‫کل‬ ‫هزینه‬=𝐷 log 𝐹 0.15𝐵 + 𝐶 log2 6.7𝑅+ D ‫باشیم‬ ‫داشته‬ ‫جواب‬ ‫رکورد‬ ‫یک‬ ‫از‬ ‫بیش‬ ‫اگر‬: ‫یک‬ ‫جواب‬ ‫هر‬ ‫ازای‬ ‫به‬ ‫حالت‬ ‫بدترین‬ ‫در‬IO‫است‬ ‫الزم‬.
  • 73. ‫ساختار‬ ‫بررسی‬Unclustered Tree Search Range Query ‫یافتن‬Data Entry‫مربوطه‬=𝐷 log 𝐹 0.15𝐵 ‫یافتن‬entry‫در‬ ‫هدف‬Data Entry=𝐶 log2 6.7𝑅 ‫های‬ ‫صفحه‬ ‫تعداد‬ ‫به‬Match‫در‬ ‫شده‬Index،IO ‫داریم‬ ‫الزم‬. ‫یک‬ ‫جواب‬ ،‫هر‬ ‫ازای‬ ‫به‬IO‫داریم‬ ‫الزم‬. ‫از‬ ‫بیش‬ ‫اگر‬10‫جواب‬ ‫در‬ ‫جدول‬ ‫درصد‬Match‫است‬ ‫بهتر‬ ‫شود‬ ‫می‬ ‫از‬Index‫نکنیم‬ ‫استفاده‬.
  • 74. ‫ساختار‬ ‫بررسی‬Unclustered Tree Insert ‫در‬ ‫درج‬ ‫هزینه‬heap=2D+C ‫رسانی‬ ‫روز‬ ‫به‬ ‫و‬ ‫جستجو‬ ‫هزینه‬Index= 𝐷 log 𝐹 0.15𝐵 + 𝐶𝐿𝑜𝑔26.7𝑅 + 𝐷 Delete 𝐷 log 𝐹 0.15𝐵 + 𝐶𝐿𝑜𝑔26.7𝑅 + 𝐷 2D
  • 75. ‫هزینه‬ ‫جدول‬‫ها‬‫شده‬ ‫ساده‬ ‫ی‬ File Type Scan Equity Search Range Search Insert Delete Heap BD 0.5BD BD 2D Search +D Sorted BD log 𝟐 𝑩*D log 𝟐 𝑩 * D BD + Search BD + Search Clustered Tree 1.5BD 𝑳𝒐𝒈 𝑭 𝟏. 𝟓𝑩 ∗ 𝑫 𝑳𝒐𝒈 𝑭 𝟏. 𝟓𝑩 ∗ 𝑫 Search + D Search + D Unclustered Tree BRD (1+log 𝐹 0.15𝐵) D (#matched records+ log 𝐹 0.15𝐵) D D(3 + log 𝐹 0.15𝐵) Search + 2D
  • 76. ‫ساختار‬ ‫بررسی‬Unclustered Hash index+ Heap File ‫فرض‬:‫اندازه‬Data Entry=0.1 Data Record ‫فرض‬:overflow‫نداریم‬. ‫فرض‬:‫الزم‬ ‫صفحات‬ ‫تعداد‬0.125*B ‫فرض‬:‫صفحه‬ ‫هر‬ ‫های‬ ‫رکورد‬ ‫تعداد‬=8R
  • 77. ‫ساختار‬ ‫بررسی‬Unclustered Hash index+ Heap File Scan ‫بازیابی‬ ‫هزینه‬Data Entry‫ها‬ 0.125B(D+8RC) ‫هر‬ ‫برای‬ ‫حالت‬ ‫بدترین‬ ‫در‬data entry‫یک‬IO‫برای‬ ‫بازیابی‬Data record‫داریم‬ ‫الزم‬ ‫اجرا‬ ‫زمان‬=BR(D+C) ‫از‬Hash‫برای‬scan‫کنیم‬ ‫نمی‬ ‫استفاده‬.
  • 78. ‫ساختار‬ ‫بررسی‬Unclustered Hash index+ Heap File Equity Search ‫یافتن‬ ‫هزینه‬Bucket‫جواب‬=H ‫هر‬ ‫اینکه‬ ‫فرض‬ ‫با‬Bucket‫هزینه‬ ،‫است‬ ‫صفحه‬ ‫یک‬ ‫حاوی‬ ‫صفحه‬ ‫واکشی‬Data Entry=D ‫جواب‬ ‫رکود‬ ‫یافتن‬ ‫هزینه‬=0.5(8RC)=4RC ‫واکشی‬ ‫هزینه‬data record=D ‫کلی‬ ‫هزینه‬=H+2D+4RC
  • 79. ‫ساختار‬ ‫بررسی‬Unclustered Hash index+ Heap File Range Search ‫از‬ ‫استفاده‬Hash index‫کند‬ ‫نمی‬ ‫کمکی‬. ‫فایل‬ ‫کل‬Heap‫شود‬ ‫جستجو‬ ‫باید‬. Insert ‫در‬ ‫درج‬ ‫هزینه‬Heap=2D+C ‫روزرسانی‬ ‫به‬ ‫هزینه‬Index=H+2D+C Delete ‫در‬ ‫جستجو‬ ‫هزینه‬Index‫داده‬ ‫فایل‬ ‫و‬=H+2D+4RC ‫روزرسانی‬ ‫به‬ ‫هزینه‬=2D
  • 80. ‫هزینه‬ ‫جدول‬‫ها‬‫شده‬ ‫ساده‬ ‫ی‬ File Type Scan Equity Search Range Search Insert Delete Heap BD 0.5BD BD 2D Search +D Sorted BD log 𝟐 𝑩*D log 𝟐 𝑩 * D BD + Search BD + Search Clustered Tree 1.5BD 𝑳𝒐𝒈 𝑭 𝟏. 𝟓𝑩 ∗ 𝑫 𝑳𝒐𝒈 𝑭 𝟏. 𝟓𝑩 ∗ 𝑫 Search + D 𝒔𝒆𝒂𝒓𝒄𝒉 + 𝑫 Unclustered Tree BRD (1+log 𝐹 0.15𝐵) D (#matched records+ log 𝐹 0.15𝐵) D D(3 + log 𝐹 0.15𝐵) Search + 2D Hash Index BRD 2D BD 4D Search + 2D
  • 81. ‫فایل‬ ‫ساختارهای‬ ‫مقایسه‬ ‫ساختار‬Heap Scan‫و‬Insert‫است‬ ‫کند‬ ‫جستجو‬ ،‫سریع‬ ‫ساختار‬Sort‫شده‬ ‫از‬ ‫جستجو‬Heap‫کند‬ ‫بسیار‬ ‫درج‬ ‫اما‬ ‫است‬ ‫سریعتر‬ ‫است‬. ‫ساختار‬Cluster‫شده‬ ‫جستجو‬+‫سریع‬ ‫حذف‬ ‫و‬ ‫درج‬ ‫ساختار‬Uncluster ،‫سریع‬ ‫جستجوی‬scan‫است‬ ‫کند‬ ‫بسیار‬.
  • 82. ‫انتخاب‬Index‫کارایی‬ ‫تنظیم‬ ‫و‬ ‫نوع‬ ‫انتخاب‬index‫کارایی‬ ‫در‬ ‫تواند‬ ‫می‬ ‫ها‬DB ‫باشد‬ ‫موثر‬ ‫بسیار‬. ‫اتخاب‬index‫به‬ ‫توجه‬ ‫با‬ ‫ها‬Work Load‫می‬ ‫انجام‬ ‫شود‬. ‫از‬ ‫استفاده‬ ‫کلی‬ ‫طور‬ ‫به‬Index،‫شود‬ ‫می‬ ‫باعث‬ ‫در‬ ‫و‬ ‫شود‬ ‫انجام‬ ‫کاراتر‬ ‫صورت‬ ‫به‬ ‫اطالعات‬ ‫بازیابی‬ ‫هنگام‬ ‫عوض‬Insert‫شود‬ ‫می‬ ‫زیاد‬ ‫هزینه‬. Hash Index Equity Search Tree Index Equity Search + Range Search
  • 83. ‫مفهوم‬workload ‫رخداد‬ ‫با‬ ‫و‬ ‫مرسوم‬ ‫جوهای‬ ‫و‬ ‫پرس‬ ‫و‬ ‫عملیات‬ ‫چیست؟‬ ‫سیستم‬ ‫در‬ ‫زیاد‬ ‫مثال‬:‫دانشگاه‬ ‫آموزشی‬ ‫سیستم‬ ‫عملیات‬:‫استاد‬ ‫درج‬(2)‫درج‬ ،‫دانشجو‬(100)‫درج‬ ، ‫درس‬(1) ‫جستجو‬:‫دانشجویی‬ ‫شماره‬ ‫با‬ ‫دانشجو‬(100)‫دانشجو‬ ، ‫خانوادگی‬ ‫نام‬ ‫و‬ ‫نام‬ ‫با‬(80)‫ملی‬ ‫کد‬ ‫با‬ ‫دانشجو‬ ، (10) ‫طراح‬ ‫های‬ ‫انتخاب‬ ‫های‬ ‫رابطه‬ ‫کدام‬ ‫برای‬DB،Index‫کنیم؟‬ ‫تعریف‬ ‫نوع‬ ‫چه‬Index‫کنیم؟‬ ‫استفاده‬ ‫یی‬Hash‫یا‬Tree ‫نوع‬ ‫چه‬Index‫کنیم؟‬ ‫استفاده‬ ‫یی‬Clustered‫یا‬
  • 84. ‫طراحی‬ ‫های‬ ‫انتخاب‬ ‫طراحی‬ ‫روش‬Index: Query‫کنید‬ ‫شناسایی‬ ‫را‬ ‫سیستم‬ ‫مهم‬ ‫های‬. ‫اجرای‬ ‫نحوه‬Query‫بگیرید‬ ‫نظر‬ ‫در‬ ‫را‬. ‫شدن‬ ‫اضافه‬ ‫با‬ ‫کنید‬ ‫بررسی‬index‫بهتر‬ ‫کارایی‬ ،‫جدید‬ ‫شود؟‬ ‫می‬ ‫برای‬ ‫را‬ ‫اجرا‬ ‫نحوه‬ ‫اینجا‬ ‫در‬‫جدول‬ ‫یک‬ ‫برای‬ ‫فقط‬ ‫گیریم‬ ‫می‬ ‫نظر‬ ‫در‬ Query Evaluation Plan ‫دقت‬»‫کردن‬ ‫اضافه‬Index‫کارایی‬ ‫جدید‬Insert‫و‬update ‫دهد‬ ‫می‬ ‫کاهش‬ ‫را‬. Trade off
  • 85. ‫طراحی‬ ‫های‬ ‫انتخاب‬ Attribute‫در‬ ‫که‬ ‫هایی‬where‫قرار‬ ‫زیاد‬ ‫دفعات‬ ‫به‬ ‫برای‬ ‫خوبی‬ ‫های‬ ‫کاندید‬ ،‫گیرند‬ ‫می‬Index‫شدن‬ ‫هستند‬. ‫برابری‬ ‫شرط‬–Hash Index ‫محدوده‬ ‫جستجوی‬ ‫شرط‬=Tree Index ‫از‬ ‫استفاده‬clustering‫افزایش‬ ‫را‬ ‫محدوده‬ ‫جستجوی‬ ‫کارایی‬ ‫دهد‬ ‫می‬ ‫انواع‬Index Single Attribute:‫صفت‬ ‫یک‬ ‫حسب‬ ‫بر‬ ‫ها‬ ‫مدخل‬ ‫یا‬ ‫رکوردها‬ ‫اند‬ ‫شده‬ ‫گذاری‬ ‫شاخص‬. Multi Attribute
  • 86. ‫طراحی‬ ‫های‬ ‫انتخاب‬ ‫در‬ ‫معمول‬ ‫طور‬ ‫به‬ ‫اگر‬where‫رخ‬ ‫هم‬ ‫با‬ ‫صفت‬ ‫چند‬ ‫توانیم‬ ‫می‬ ‫دهند‬ ‫می‬Index‫صورت‬ ‫به‬ ‫را‬Multi- Attribute‫بسازیم‬. ‫دانشجویان‬ ‫نام‬ ‫و‬ ‫خانوادگی‬ ‫نام‬ ‫کنید‬ ‫فرض‬ ‫مثال‬ ‫در‬ ‫همزمان‬ ‫طور‬ ‫به‬Where‫شود‬ ‫استفاده‬.‫این‬ ‫در‬ ،‫شود‬ ‫می‬ ‫پیشنهاد‬ ‫صورت‬multi-attribute Index‫ساخته‬ ‫شود‬.  Select * from STT where stname =‘ali’ and stfamily = ‘hassani’ Data entry‫نام‬ ‫روی‬ ‫بر‬ ‫ابتدا‬ ‫صورت‬ ‫این‬ ‫در‬ ‫ها‬
  • 89. ‫طراحی‬ ‫های‬ ‫انتخاب‬ ‫در‬multi Attribute Indexing‫در‬ ‫ها‬ ‫صفت‬ ‫تقدم‬ where‫است‬ ‫مهم‬.  Select * from STT where stfamily =‘‫’اکبری‬ and stname =‘‫’علی‬ ‫در‬Query‫باال‬index‫است‬ ‫مفید‬.  Select * from STT where stname =‘‫’علی‬ ‫در‬Query‫باال‬index‫نیست‬ ‫مفید‬.
  • 90. ‫طراحی‬ ‫های‬ ‫انتخاب‬ Index‫کارایی‬ ‫که‬ ‫کنید‬ ‫انتخاب‬ ‫را‬ ‫هایی‬ ‫از‬ ‫بیشتری‬ ‫تعداد‬query‫افزایش‬ ‫را‬ ‫ها‬ ‫دهد‬. ‫یک‬ ‫حداکثر‬index‫صورت‬ ‫به‬ ‫تواند‬ ‫می‬ Clustered‫که‬ ‫کنید‬ ‫انتخاب‬ ‫را‬ ‫شاخصی‬ ،‫باشد‬ ‫کند‬ ‫ایجاد‬ ‫را‬ ‫کارایی‬ ‫بیشترین‬.
  • 91. ‫مثال‬ ‫به‬ ‫پاسخ‬ ‫برای‬Query‫چه‬ ‫زیر‬Index‫پیشنهاد‬ ‫را‬ ‫یی‬ ‫کنید‬ ‫می‬.  Select * from Employee where DOB > 1330 ‫آیا‬B+ Index‫باشد؟‬ ‫مفید‬ ‫تواند‬ ‫می‬ ‫سوال‬1:‫می‬ ‫صدق‬ ‫شرط‬ ‫در‬ ‫رکوردها‬ ‫از‬ ‫درصد‬ ‫چند‬ ‫کنند؟‬ ‫باالی‬ ‫اگر‬90‫اساسا‬ ‫است‬ ‫بهتر‬ ،‫است‬ ‫درصد‬Scan ‫کنیم‬! ‫سوال‬2:‫آیا‬Index‫صورت‬ ‫به‬clustered‫است؟‬
  • 92. ‫مرکب‬ ‫جستجوی‬ ‫کلید‬ ‫صورت‬ ‫به‬ ‫جستجو‬ ‫اگر‬DOB= 1330&&salary = 400‫باشد‬ ‫روی‬ ‫ایندکس‬ ‫کارایی‬(sal,DOB)‫کارایی‬ ‫از‬ ‫بهتر‬ ‫روی‬sal‫و‬DOB‫است‬. ‫صورت‬ ‫به‬ ‫جستجو‬ ‫اگر‬1330<DOB<1340&& 300<salary<400 ‫روی‬ ‫شده‬ ‫بندی‬ ‫خوشه‬ ‫ایندکس‬(sal,DOB)‫یا‬ (DOB,sal)‫است‬ ‫انتخاب‬ ‫بهترین‬. ‫صورت‬ ‫به‬ ‫جستجو‬ ‫اگر‬DOB=30&& 300<salary<400
  • 93. ‫به‬ ‫پاسخ‬Query‫به‬ ‫دسترسی‬ ‫با‬ ‫فقط‬ Index ‫اگر‬ ‫موارد‬ ‫برخی‬ ‫در‬Index‫داشته‬ ‫مناسب‬ ‫به‬ ‫توانیم‬ ‫می‬ ،‫باشیم‬Query‫دسترسی‬ ‫بدون‬ ‫دهیم‬ ‫پاسخ‬ ‫داده‬ ‫پایگاه‬ ‫های‬ ‫تاپل‬ ‫به‬. ‫مثال‬  Select DOB, count(*) from Employee group by DOB  Index on DOB  Select AVG(sal) from Employee DOB = 1330 and sal between 3000 and 5000  Index on “DOB, salary”