این صفحه شامل نمونههایی از نحوه محاسبه واحدهای صورتحساب در برخیاز رایجترین سناریوها است. توجه داشته باشید که هر پُرسمان ممکن است براساس عواملی مانند طرح پُرسمان، شکل دادهها، و نمایههای دردسترس، ازنظر دادههای پردازششده متفاوت باشد.
توصیه میکنیم از ویژگی توضیح پُرسمان برای درک بهتر هزینه و عملکرد پُرسمانهای خاص خود استفاده کنید.
عملیات خواندن
بیشتر عملیات خواندن شامل انجام خواندن نقطهای یک سند خاص یا اسکن کردن محدودهای از دادهها براساس یک شناسه است. عملیات خواندن واحدهای خواندن را مصرف میکند. مثالهای زیر را ببینید.
جستجوی کل نوشتار
هزینههای پرسمانهای جستجوی کل نوشتار بین هزینه انجام جستجو در نمایه نوشتار و هزینه بازیابی اسناد متمایز میشود. هزینه انجام جستجو در نمایه نوشتاری براساس پیچیدگی پُرسمان و مقدار دادههای اسکنشده در نمایه برای یافتن نتایج تعیین میشود. عوامل تأثیرگذار بر این هزینه شامل تعداد و ماهیت عبارتهای جستجو (مثلاً عبارتها، عبارتهای چندکلمهای)، اعمال شدن یا نشدن امتیازدهی مربوط بودن، و تعداد ورودیهای نمایه است که باید بررسی شوند. هزینه بازیابی اسناد مرتبط براساس تعداد و اندازه اسناد واکشیشده پساز تکمیل مرحله جستجو است.
جدول زیر هزینههای مرتبط با اجرای پرسمانهای جستجوی کل نوشتار را برای کاتالوگ محصول تجارت الکترونیک یک گلخانه گیاهی نشان میدهد. این مثال فرض میکند که مجموعهای از ۲۰۰٬۰۰۰ فهرست محصول در یک مجموعه وجود دارد، که هر سند فهرست محصول ۲ کیبیبایت است، و اندازه نمایه جستجوی نوشتار مربوطه تقریباً ۱۰۰ مبیبایت است.
| پُرسمان | نمونه کد | واحدهای خواندن تخمینی مصرفشده در هر پُرسمان | هزینههای تخمینی (منطقه: us-central1 به دلار امریکا) |
|---|---|---|---|
| جستجوی محصول کمیاب «آب خشک» با سینی تخت پشتهای، که منجر به بازیابی ۳ سند میشود. | |
مجموعاً ۱۰ واحد خواندهشده براساس ۷ واحد برای جستجوی کل نوشتار و ۳ واحد تکمیلی برای اسناد برگرداندهشده. |
۰٫۵۰ دلار برای هر میلیون پُرسمان |
| جستجوی همه درختان مرکبات داخلی، که منجر به بازیابی ۳۶ سند میشود. | |
مجموعاً ۴۲ واحد خواندهشده براساس ۶ واحد برای جستجوی کل نوشتار و ۳۶ واحد تکمیلی برای اسناد برگرداندهشده. |
۲٫۱۰ دلار بهازای هر میلیون پُرسمان |
| گلدان بالکن را جستجو کنید که محصولات منطبق زیادی برای آن وجود دارد. نتایج را براساس مربوط بودن مرتب کنید و به ۵۰ نتیجه جستجوی برتر محدود کنید. | |
مجموعاً ۷۵ واحد خواندهشده براساس ۲۵ واحد برای جستجوی کل نوشتار و ۵۰ واحد اضافی برای سندهای برگرداندهشده. |
۳٫۷۵ دلار برای هر میلیون پُرسمان |
این مثالها نشان میدهند که چگونه الگوهای پُرسمان مختلف بر هزینهها تأثیر میگذارند:
- پُرسمان «dry water» شامل یک عبارت (
"dry water") و عبارات اضافی است. جستجوهای عبارت پیچیدهتر هستند زیرا موتور پُرسمان باید مجاورت و ترتیب نشانهها را بررسی کند، که به ۷ واحد خواندن برای مرحله جستجو کمک میکند. چون اسناد بسیار کمی مطابقت دارند، هزینه بازیابی سند پایین است. - پرسمان «درخت» «مرکبات» «داخل ساختمان» سه عبارت جداگانه را جستجو میکند. اگرچه پیچیدگی آن برای هر عبارت کمی کمتر از جستجوی عبارت است، اما همچنان نیاز به جستجوی چندین نشانه دارد. هزینه اسکن نمایه جستجوی آن کمی کمتر از مثال «dry water» است (۶ واحد خواندن)، اما ۳۶ سند برگردانده میشود که هزینه کل را افزایش میدهد.
- پرسوجوی گلدان بالکن با حاشیه قابلتوجهی بالاترین هزینه جستجوی کل نوشتار را با ۲۵ واحد دارد. دلیل اصلی این است که این جستجو درخواست میکند نتایج براساس ارتباط (
.sort({score: {$meta: "textScore"}})) با عبارتهایی که با اسناد زیادی مطابقت دارند مرتب شوند. برای تعیین ۵۰ نتیجه برتر مرتبط، موتور پُرسمان باید همه موارد منطبق بالقوه را برای «بالکن» یا «گلدان» پیدا کند، امتیاز مربوط بودن را برای هرکدام محاسبه کند، و سپس آنها را مرتب کند. این فرایند امتیازدهی و مرتبسازی در میان تعداد زیادی از نامزدها در نمایه ازنظر محاسباتی فشرده است، حتی اگر درنهایت فقط ۵۰ سند بازیابی شود. گستردگی عبارتها همراه با سربار امتیازدهی ارتباط باعث میشود مرحله جستجو پرهزینهتر شود.
پُرسمانهای زمینمکانی
هزینههای پُرسمانهای زمینمکانی براساس پیچیدگی پُرسمان و شرایط خاص و مرتبسازی استفادهشده، و همچنین منابع موردنیاز برای اسکن کردن همه دادهها در نمایه زمینمکانی مربوطه تعیین میشود.
جدول زیر هزینههای مربوط به اجرای پُرسمانهای جغرافیایی-فضایی را برای برنامه نقشهها نشان میدهد. این مثال مجموعهای از ۱٬۰۰۰٬۰۰۰ سند را فرض میکند که نقاط دیدنی را نشان میدهند، بهطوریکه هر سند نقطه دیدنی ۱ کیبیبایت است و اندازه نمایه جغرافیایی مربوطه تقریباً ۶۰ مبیبایت است.
| پُرسمان | نمونه کد | واحدهای خواندن تخمینی مصرفشده در هر پُرسمان | هزینههای تخمینی (منطقه: us-central1 به دلار امریکا) |
|---|---|---|---|
| همه مکانهای جالب را در حداکثر ۱۰ کیلومتری پیدا کنید و ۱۰ مورد منطبق را برگردانید. | |
درمجموع ۱۶ واحد خواندهشده. براساس ۶ واحد خواندن برای پُرسمان زمینمکانی و ۱۰ واحد تکمیلی برای اسناد برگرداندهشده. |
۰٫۸۰ دلار برای هر میلیون پُرسمان |
| همه مکانهای نشاندار را با حداکثر فاصله ۱۰۰ کیلومتر پیدا کن و ۱۰ مکان نشاندار نزدیکتر را از بین ۱٬۰۰۰ مورد منطبق برگردان | |
مجموعاً ۱۹ واحد خواندهشده. براساس ۹ واحد خواندن برای پُرسمان زمینمکانی و ۱۰ واحد تکمیلی برای اسناد برگرداندهشده. |
۰٫۹۵ دلار برای هر میلیون پُرسمان |
این مثالها نشان میدهند که چگونه الگوهای پُرسمان مختلف بر هزینهها تأثیر میگذارند:
- پرسمان شعاع ۱۰ کیلومتری: این پرسمان منطقه جغرافیایی کوچکتری را اسکن میکند. ازآنجاییکه
فقط ۱۰ مورد مطابقت در این شعاع ۱۰ کیلومتری پیدا میکند، موتور پُرسمان باید
کار کمتری برای شناسایی و مرتب کردن این نقاط براساس فاصله انجام دهد (همانطور که
$nearبهطور ضمنی انجام میدهد). این امر منجر به هزینه اسکن نمایه پایینتر ۶ واحد خواندن میشود. - پرسوجو با شعاع ۱۰۰ کیلومتر: این پرسوجو منطقه بسیار بزرگتری را پوشش میدهد. این پُرسمان ۱٬۰۰۰ مطابقت بالقوه در شعاع ۱۰۰ کیلومتری پیدا میکند. برای برآورده کردن درخواست ۱۰ نزدیکترین نقطه، موتور پُرسمان باید فاصلهها را محاسبه کند و مجموعه بسیار بزرگتری از نامزدها (تا ۱٬۰۰۰ نقطه) را در نمایه مرتب کند. این کار محاسباتی اضافی برای غربال کردن و رتبهبندی نقاط بسیار بیشتر، دلیل بالاتر بودن هزینه پُرسمان زمینمکانی با ۹ واحد خواندن در مقایسه با پُرسمان ۱۰ کیلومتری است، بااینکه این پُرسمان هم فقط ۱۰ سند برمیگرداند.
نقطه میخواند
نمونه صورتحساب برای خواندن نقطه:
- خواندن نقطهای یک سند ۱ کیبیبایتی. مصرف: ۱ واحد خواندن
- خواندن نقطهای یک سند ۴ کیبیبایتی. مصرف: ۱ واحد خواندن
- خواندن نقطهای یک سند ۱ مبیبایتی. مصرف: ۲۵۶ واحد خواندن
- خواندن نقطهای ۱۰۰ سند، هرکدام ۱ کیبیبایت. مصرف: ۱۰۰ واحد خواندن
درحال اسکن کردن
مثالهای زیر شامل سناریوهایی است که اسناد یا ورودیهای نمایه را اسکن میکند.
اسکن کردن اسناد
- پرسمانی که ۱۰۰ سند را اسکن میکند، هرکدام ۱ کیبیبایت. مصرف: ۲۵ واحد خواندن
درحال اسکن کردن نمایهها
هزینه اسکن، ازنظر بایت، یکسان است، صرفنظر از اینکه سند یا نمایه اسکن شود. بااینحال، ورودیهای نمایه اغلب ازنظر اندازه کوچکتر هستند. درنتیجه، آنها اغلب میتوانند روشی مقرونبهصرفهتر برای اسکن دادهها ارائه دهند.
- پُرسمانی که ۱۰۰ ورودی نمایه را اسکن میکند، هرکدام ۱ کیبیبایت. مصرف: ۲۵ واحد خواندن.
- پرسمانی که ۱۰۰ ورودی نمایه را اسکن میکند، هرکدام ۱۲۸ بایت. مصرف: ۴ واحد خواندن.
حداقل اندازه سند یا ورودی نمایه
در برخی شرایط ممکن است برای پاسخ دادن به پُرسمان نیازی به خواندن محتوای سند یا ورودی نمایه نباشد. این شامل پُرسمانهای شمارش ساده میشود مانند شمارش تعداد کل اسناد در یک مجموعه. در این شرایط، حداقل هزینه ۳۲ بایت برای هر مورد اسکنشده اعمال میشود.
- تعداد اسناد موجود در مجموعه را بشمارید. این پُرسمان ۱۰۰۰ مورد را در مجموعه اسکن میکند. مصرف: ۸ واحد خواندن.
ترکیبی از اسکن و خواندن نقطهای
بسیاری از پُرسمانها ترکیبی از اسکن و خواندن نقطهای را برای انجام یک عملیات اجرا میکنند.
- پرسمانی که ۱۲۸ ورودی نمایه را اسکن میکند، هرکدام ۲۵۶ بایت، و خواندن نقطهای ۱۲۸ سند را انجام میدهد، هرکدام ۴ کیبیبایت. مصرف: ۱۳۶ واحد خواندن، شامل:
- ۱۲۸ واحد خواندن برای خواندن نقطهای
- ۸ واحد خواندن برای اسکنهای نمایه
توضیح پُرسمان
توضیح پُرسمان به شما کمک میکند متوجه شوید پایگاه داده چگونه پُرسمانهایتان را اجرا میکند. جزئیات ارائهشده میتواند به شما کمک کند پُرسمانهایتان را بهینهسازی کنید.
هنگام استفاده از «توضیح پُرسمان»، هزینههای زیر اعمال میشود:
- Query Explain که پُرسمان را اجرا میکند: هزینه پُرسمان اعمال میشود.
- Query Explain using plan only option. مصرف: ۱ واحد خواندن (حداقل هزینه پُرسمان)
نوشتن عملیات
هزینه عملیات نوشتن (ایجاد، بهروزرسانی، و حذف) براساس اندازه اسناد و نمایههایی که درطول عملیات ایجاد، اصلاح، یا حذف میشوند محاسبه میشود. عملیات نوشتن واحدهای نوشتن را مصرف میکند. واحدهای نوشتن در بخشهای ۱ کیبیبایتی محاسبه میشود.
عملیات نوشتن ساده، مانند بهروزرسانی با شناسه سند، فقط هزینه نوشتن را متحمل میشود. عملیات نوشتن که برای انجام عملیات نیاز به پُرسمان دارد، علاوهبراین، هزینههای خواندن مرتبط با پُرسمان را متحمل خواهد شد.
مثالهای زیر را ببینید.
ایجاد میکند
- سند ۱۰ کیبیبایت جدیدی بدون نمایه ایجاد کنید. مصرف: ۱۰ واحد نوشتن
- سندی ۱ کیبیبایتی با ۱ ورودی نمایه ۲۵۶ بایتی در مجموعه ایجاد کنید. مصرف میکند: ۲ واحد نوشتن
بهروزرسانیها
- سندی ۱۰ کیبیبایتی را با شناسه سند پیدا کنید و بدون نمایه در مجموعه بهروز کنید. مصرف: ۱۰ واحد نوشتن
- سند ۱ کیبیبایتی را با شناسه سند پیدا کنید و ۱ فیلد را با ۱ ورودی نمایه ۲۵۶ بایتی بهروز کنید. مصرف: ۳ واحد نوشتن. توجه: بهروزرسانی ورودی نمایه در این وضعیت ۲ واحد نوشتن مصرف میکند – یکی برای حذف و دیگری برای بازآفرینی ورودی نمایه.
- سند ۱ کیبیبایتی را با شناسه سند پیدا کنید و چیزی را بهروز نکنید (بدون تغییر). مصرف: ۱ واحد نوشتن (حداقل هزینه نوشتن)
- همه اسناد ۱ کیبیبایتی را در مجموعهای پُرسمان کنید که ۱۰۰۰ سند را اسکن میکند و فیلد ۲۵۶ بایتی جدیدی را بدون نمایه در مجموعه درج کنید: ۱۰۰۰ واحد خواندن و ۱۰۰۰ واحد نوشتن.
حذف میکند
- حذف سند ۱ کیبیبایتی که ۱ نمایه در مجموعه دارد. مصرف: ۲ واحد نوشتن
- حذف سند ۱ کیبیبایتی که هیچ نمایهای در مجموعه ندارد. مصرف: ۱ واحد نوشتن
ساختهای نمایه
هزینه ساخت نمایه برای ورودیهای نمایهای که درطول عملیات ساخت ایجاد یا اصلاح شدهاند دریافت میشود. این هزینهها هرزمان که تعریف نمایهای اضافه یا برداشته شود تحمیل میشود. ورودیهای نمایه بهطور یکسان با نوشتنهایی که ۱ واحد نوشتن بهازای هر ۱ کیبیبایت متحمل میشوند صورتحساب میشوند.
- ایجاد نمایه جدید برای مجموعهای حاوی ۵۰۰ سند، ورودیهای نمایه ایجادشده هرکدام ۱ کیبیبایت است. ۵۰۰ واحد نوشتن مصرف میکند.
- نمایه موجود برای مجموعهای حاوی ۵۰۰ سند را حذف کنید، ورودیهای نمایه حذفشده هرکدام ۱ کیبیبایت است. ۵۰۰ واحد نوشتن مصرف میکند.