رفتن به محتوای اصلی
جونیورJGPTورود یا ساخت حساب
فهرست

آزمایشگاه آزاد؛ بدون نیاز به ورود

شاخص پایگاه داده چطور جست‌وجو را کم‌کار می‌کند؟

برای پیدا کردن یک ردیف در جدول بزرگ، باید یکی‌یکی جلو رفت؟ شاخص می‌تونه راه پیدا کردن رو کوتاه کنه؛ این مدل تعداد کارهای دو روش رو کنار هم می‌ذاره.

آزمایش رو شروع کن

برای شروع، اندازهٔ جدول رو ۱۰۰۰ بذار و استفاده از شاخص رو خاموش نگه دار. عدد ردیف‌های خوانده‌شده رو یادداشت کن، بعد فقط شاخص رو روشن کن. خروجی شمارشِ فرضیِ الگوریتمه، نه زمان واقعی یک پایگاه داده.

آزمایشگاه در حال آماده شدنه…

حالا خودت امتحان کن

هر بار فقط یک چیز رو تغییر بده تا اثرش رو ببینی. قبل از اجرا، نتیجه رو حدس بزن.

جست‌وجو بدون شاخص

اندازهٔ جدول رو ۱۰۰۰ و استفاده از شاخص رو خاموش بذار. اجرا کن و تعداد ردیف‌های خوانده‌شده رو ببین.

حدست چیه؟ اگر فقط ۱۰۰۰ ردیف وجود داشته باشه، برای پیدا کردن یک مورد معمولاً باید چند ردیف رو بررسی کرد؟

توضیح نتیجه رو ببین

این مدل بدون شاخص ۵۰۰ ردیف رو می‌شماره؛ یعنی حدود نصف جدول. عددش با گردکردنِ نصف اندازهٔ جدوله و اجرای واقعی پایگاه داده رو شبیه‌سازی نمی‌کنه.

همان جدول با شاخص

اندازهٔ جدول رو روی ۱۰۰۰ نگه دار و فقط استفاده از شاخص رو روشن کن. تعداد ردیف‌های خوانده‌شده رو با آزمایش قبلی مقایسه کن.

حدست چیه؟ اگر هر بار بخش بزرگی از گزینه‌ها کنار گذاشته بشه، شمار کارها با دو برابر شدن جدول چه‌قدر رشد می‌کنه؟

توضیح نتیجه رو ببین

در مدل جست‌وجوی دودویی، برای ۱۰۰۰ ردیف حدود ۱۰ مقایسه حساب می‌شه؛ در برابر ۵۰۰ ردیفِ حالت بدون شاخص. نسبت این دو شمار ۵۰ برابره، نه وعدهٔ ۵۰ برابر شدن سرعت واقعی یک پایگاه داده.

جدول را حدود صد برابر بزرگ‌تر کن

شاخص رو روشن نگه دار و اندازهٔ جدول رو از ۱۰۰۰ به ۱۰۱۰۰۰ برسون؛ یعنی ۱۰۱ برابرش کن. تعداد خواندن‌ها و نسبت نمایش‌داده‌شده رو با حالت ۱۰۰۰ ردیفی مقایسه کن.

حدست چیه؟ با حدود صد برابر شدن اندازهٔ جدول، تعداد مقایسه‌های دودویی هم صد برابر می‌شه؟

توضیح نتیجه رو ببین

برای ۱۰۱۰۰۰ ردیف، این مدل ۱۷ مقایسه برای روش شاخص‌دار می‌شماره؛ از ۱۰ مقایسه برای ۱۰۰۰ ردیف. نسبت شمار کارهای خطی به دودویی حدود ۲۹۷۰٫۶ برابره، اما این نسبتِ مدل‌شده‌ست و زمان پاسخ واقعی نیست.

پشت این حرکت چه خبره؟

جست‌وجوی خطی یعنی یکی‌یکی گشتن

L = ceil(n / 2)

بدون راهنمای مرتب، باید از چند ردیف عبور کرد تا مورد پیدا بشه. در این مدل، تعداد خواندن‌های میانگین حدود نصف اندازهٔ جدوله و به شکل یک عدد صحیح حساب می‌شه.

جست‌وجوی دودویی هر بار نصف می‌کند

B = ceil(log2(n))

اگر داده‌ها بر اساس کلید مرتب باشن، می‌شه هر بار نیمه‌ای رو که جواب داخلش نیست کنار گذاشت. تعداد مرحله‌ها تقریباً با لگاریتم اندازه رشد می‌کنه؛ دادهٔ نامرتب به تنهایی چنین میان‌بری نمی‌ده.

نسبت کارها، زمان واقعی نیست

S = L / B

وقتی شاخص روشنه، مدل شمار خواندن خطی رو بر مرحله‌های جست‌وجوی دودویی تقسیم می‌کنه. وقتی خاموشه، نسبتِ نمایش‌داده‌شده ۱ می‌شه. هیچ‌کدوم سرعت پردازنده، حافظه یا زمان پاسخ رو اندازه نمی‌گیرن.

سؤالت رو بپرس، جوابش رو هم ببین

وقتی توی چت دربارهٔ یک مفهوم درس می‌خونی، دستیار هوش مصنوعی می‌تونه شبیه‌سازی مرتبط رو کنار توضیحش نشون بده. پارامترها رو تغییر می‌دی و با کمک توضیح بعدی، نتیجه رو بهتر می‌فهمی.

شروع یادگیری با چت

برای ادامه در چت، وارد مسیر شروع و ورود می‌شی. نتیجهٔ این آزمایش به چت منتقل نمی‌شه.

نمونهٔ نمایشی از آموزش در چت

پرسش تو

پس روشن کردن شاخص همیشه باعث می‌شه پرس‌وجوم ۵۰ برابر سریع‌تر بشه؟

دستیار هوش مصنوعی

نه. ۵۰ برابر در این تنظیم، نسبت ۵۰۰ ردیف به ۱۰ مقایسه در یک مدل ساده‌ست. پایگاه دادهٔ واقعی ساختارهای شاخص، حافظه و روش اجراهای مختلف داره؛ زمانش رو باید اندازه گرفت، نه از این نسبت نتیجه گرفت.

سؤال‌های رایج

شاخص پایگاه داده چیه؟

ساختاری کمکیه که پیدا کردن ردیف‌ها بر اساس یک کلید رو سریع‌تر می‌کنه؛ مثل راهنمایی که لازم نباشه همهٔ صفحه‌ها رو از اول بگردی. ساخت شاخص و نگهداریش هم هزینه داره.

چرا جست‌وجوی دودویی به مرتب بودن داده نیاز داره؟

چون بعد از دیدن مقدار میانی باید مطمئن باشیم جواب در نیمهٔ چپ یا راست قرار داره. اگر ترتیب مشخصی نباشه، حذف یک نیمه ممکنه خود جواب رو هم حذف کنه.

عدد سرعت‌بخشی، زمان اجرای واقعی رو می‌گه؟

نه. وقتی شاخص روشنه، این فقط نسبت تعداد خواندن‌های خطی به مرحله‌های دودوییه؛ وقتی خاموشه مقدارش ۱ می‌شه. برای زمان واقعی باید همان پرس‌وجو رو روی همان داده و سخت‌افزار اندازه گرفت.

آیا همهٔ پایگاه‌های داده دقیقاً همین جست‌وجوی دودویی رو انجام می‌دن؟

نه. شاخص‌های واقعی می‌تونن درخت چندشاخه یا ساختارهای دیگه باشن و چند ردیف یا صفحه رو با هم بررسی کنن. این شبیه‌سازی فقط تفاوت رشد خطی و لگاریتمی رو ساده می‌کنه.

چرا برای هر ستون شاخص نمی‌سازیم؟

شاخص جا می‌گیره و هنگام اضافه، حذف یا تغییر داده باید به‌روز بشه. پایگاه داده معمولاً بین جست‌وجوی سریع‌تر و هزینهٔ نگهداری تعادل می‌ذاره؛ این هزینه در مدل نشان داده نمی‌شه.