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