Rockset شما را قادر می سازد SQL را بر روی داده های نیمه ساختار یافته خود اجرا کنید و بدون نیاز به نگرانی در مورد مدل سازی داده ها یا نمایه سازی ، در میلی ثانیه به دست بیاورید. برای انجام این کار ، Rockset بیشتر اجزای پایگاه داده خود را از زمین به بالا ساخته است ، از جمله کامپایلر ، برنامه ریز ، بهینه ساز ، موتور نمایه سازی و موتور اجرای.
بهینه ساز فعلی Rockset از مجموعه ای از اکتشافات برای تخمین برنامه اجرای بهینه استفاده می کند ، اما گاهی اوقات با توجه به توزیع داده های شما ممکن است این اکتشافی بهینه نباشد. در این موارد ، می توانید از نکات بهینه ساز برای به دست آوردن پیشرفت های قابل توجهی در عملکرد استفاده کنید. عدم ارائه این نکات می تواند تأخیر پرس و جو شما را با سفارش بزرگی افزایش دهد. به عنوان مثال ، انتخاب سفارش اشتباه برای یک سری از پیوندها ، شاخص اشتباه برای استفاده برای یک مجموعه خاص یا استراتژی پیوستن اشتباه برخی از اشتباهات مشترک است.
این موضوع ابزارهایی را برای جلوگیری از اشتباهات مشترک و نوشتن نمایش داده شدگان ارائه می دهد که پتانسیل عملکرد کامل طراحی طرحواره Rockset را باز می کند.
بهینه سازی فهرست
تمام داده هایی که به Rockset وارد می شوند از سه روش فهرست بندی می شوند:
شاخص ردیف
در شاخص ردیف ، مقادیر همه زمینه ها در همان سند به صورت همزمان ذخیره می شوند. این به شما امکان می دهد تا همه زمینه ها را برای یک سند خاص بازیابی کنید (یعنی انتخاب *). شما نمی توانید یک پرس و جو را برای استفاده از این شاخص مجبور کنید زیرا برای هر چیزی غیر از انتخاب * بسیار کندتر است.
شاخص ستونی
در شاخص ستونی ، تمام مقادیر مربوط به یک قسمت یکسان در تمام اسناد به طور مبهم ذخیره می شوند. این به شما امکان می دهد تا تمام مقادیر را برای یک زمینه خاص بازیابی کنید. به عنوان مثال ، AVG (A) را از Foo انتخاب کنید. می توانید بلافاصله پس از نام مجموعه ، استفاده از فهرست ستون را با اضافه کردن اشاره (Access_Path = column_scan) مجبور کنید.
فهرست جستجو
در شاخص جستجو ، سوابق بر اساس فیلد و مقدار طبقه بندی می شوند ، بنابراین تمام مقادیر یک فیلد که برابر هستند به طور مبهم ذخیره می شوند. این به شما امکان می دهد اسنادی را که در آن یک قسمت دارای یک مقدار خاص است ، به طور موثر بازیابی کنید. به عنوان مثال ، COUNT (*) را از Foo که A = 5 است انتخاب کنید. می توانید بلافاصله پس از نام مجموعه ، استفاده از شاخص جستجو را با اضافه کردن اشاره (Access_Path = index_filter) انجام دهید.
همچنین تنوع این اشاره وجود دارد که می تواند برای نمایش داده های دامنه ای که می خواهید نتیجه آن را با یک قسمت خاص مرتب کنید ، استفاده شود. برای این حالت ، اشاره (Access_Path = index_scan ، index_scan_sort_field = xyz) را اضافه کنید و در صورت لزوم جایگزین XYZ کنید. اگر می خواهید خروجی نهایی با فیلتر طبقه بندی شود ، ممکن است مفید باشد.
در صورت وجود یک اصطلاح شاخص در بند یک پرس و جو ، همیشه از شاخص جستجو استفاده می شود. اگر بند جایی که خیلی انتخابی نیست ، احتمالاً با استفاده از شاخص ستون در پرس و جو خود به عملکرد بهتری دست خواهید یافت. می توانید بلافاصله پس از نام مجموعه ، استفاده از فهرست ستون را با اضافه کردن اشاره (Access_Path = column_scan) مجبور کنید.
علاوه بر این ، قسمت ویژه _event_time در شاخص جستجو متفاوت است. پرس و جو این زمینه نسبت به پرس و جو از زمینه های منظم اجرا کننده است. برای اطلاعات بیشتر به مستندات زمینه _event_time ما مراجعه کنید.
برای کسب اطلاعات بیشتر در مورد نحوه عملکرد نمایه سازی ما ، وبلاگ ما را در فهرست بندی همگرا بررسی کنید.
SQL بهینه سازی ها را بپیوندید
موتور SQL Rockset از چهار نوع پیوست که در زیر ذکر شده است پشتیبانی می کند.
هش پیوستن
این پیش فرض است و معمولاً بهترین استراتژی پیوستن است. با پیوستن به هش ، یک اتصال داخلی B در A. X = B. x سرور یک هش را بر روی مقادیر B. x (که از برگها آمده است) ایجاد می کند و سپس مقادیر A (از مجموعه دیگری از برگها) را پخش می کند و آن سوابق را منتشر می کندکه A. X در مجموعه هش است. این بدان معنی است که کل مجموعه B باید در حافظه جای بگیرد.
برای پیوستن به برابری مانند این ، کار می تواند در بسیاری از سرورها توزیع شود. با سرورهای N ، Rockset هر B. X را به شماره سرور Hash (B. X) ٪ n ارسال می کند. به همین ترتیب ، مقادیر A. X به سرور مناسب ارسال می شود. به این ترتیب ، هر جدول هش ساخته شده توسط سرورها فقط اندازه (b) / n در اندازه است. این عدد n به موازات مصالح مصالح گفته می شود و بر اساس نمونه مجازی Rockset شما (رایگان ، به اشتراک گذاشته شده ، L ، XL ، 2XL و غیره) تنظیم شده است.
توجه: همین مورد در مورد پیوندهای بیرونی چپ نیز صدق می کند ، بنابراین یک عضو چپ B هنوز یک هش را روی B می سازد و مقادیر a را پخش می کند. با این حال ، پیوندهای بیرونی راست به داخل داخلی به پیوندهای بیرونی سمت چپ تبدیل می شوند ، بنابراین یک پیوستن راست B به صورت داخلی به B به سمت چپ بازنویسی می شود ، و در این حالت ، یک مجموعه هش در بالای A ساخته می شود و B پخش می شود.
پیوستن به هش می تواند بلافاصله پس از بند ON (به عنوان مثال ، یک اتصال داخلی B در A. x = B. x (join_strategy = هش)) با اضافه کردن اشاره (join_strategy = hash) مجبور شود. به خاطر داشته باشید که پیوستن هش به طور پیش فرض است ، بنابراین این اشاره بدون برنامه است.
حلقه تو در تو در
Nested Loop Join یک استراتژی پیوستن کندتر و کم نظیر حافظه است که از نزدیک الگوی برنامه نویسی یک حلقه تو در تو را دنبال می کند.
برای a در a برای b در b اگر a. x == b. x ساطع می شود (a ، b)
با توجه به این رفتار n^2 ، پیوستن به حلقه تو در تو معمولاً نامطلوب است. با این حال ، این می تواند بدون نگرانی از قرار دادن آنها در حافظه ، مجموعه های بزرگ خودسرانه را اداره کند. همانطور که با پیوستن به هش ، پیوستن به حلقه برابری می تواند در بسیاری از سرورها توزیع شود ، تا حد موازی بودن جمع کننده حساب شما. با افزودن اشاره (join_strategy = nested_loops) بلافاصله پس از بند پیوستن ، می توان با افزودن اشاره (join_strategy = nested_loops) مجبور شد.
پخش شوید
با پیوستن به Broadcast ، یک اتصال داخلی B در A. X = B. X مقادیر B. X را به تمام برگهایی که در خدمت قسمتهای مجموعه است ، ارسال می کند. B. X و بخش محلی مجموعه A خود را برای انجام پیوستن و ارسال نتایج به همراه خواهد داشت. این امر می تواند مفید باشد اگر مجموعه A به طور قابل توجهی بزرگتر از مجموعه B باشد و پیوستن انتخابی باشد ، زیرا این امر از انتقال تعداد قابل توجهی از شبکه از انتقال همه سوابق a جلوگیری می کند.
با افزودن اشاره (join_broadcast = true) بلافاصله پس از بند پیوستن ، می توان یک پیوستن پخش را مجبور کرد. این یک اشاره متفاوت از بالا است ، زیرا تصمیم به پخش پیوستن مستقل از استراتژی است. به عنوان مثال ، شما می توانید استراتژی پیوستن را برای استفاده از حلقه های تو در تو و همچنین فعال کردن پخش تنظیم کنید. با این حال ، پخش فقط هنگامی مفید خواهد بود که پخش این مجموعه کوچک باشد ، در این صورت با استفاده از استراتژی پیش فرض Hash Join بهترین است.
به جستجوی بپیوندید
Lookup Join همچنین یک پیوستن به سمت برگ است ، اما به جای ساختن یک مجموعه هش بر روی B و انجام پیوستن ، مقادیر B را مستقیماً در شاخص جستجو جستجو می کند. پیوندهای Lookup فقط برای اتصالات برابری مرتبط هستند و در صورت وجود تعداد بسیار کمی از ردیف ها در B ، ایده خوبی هستند.
خوشه بندی داده ها
در حین ایجاد مجموعه ، می توانید به صورت اختیاری یک طرح خوشه بندی را برای شاخص ستونی برای بهینه سازی الگوهای پرس و جو خاص مشخص کنید. هنگام پیکربندی ، اسنادی با همان مقادیر زمینه خوشه بندی در کنار هم ذخیره می شوند. این امر باعث می شود که نمایش داده شده هایی که در زمینه های خوشه بندی پیش بینی می کنند بسیار سریعتر باشند زیرا موتور اعدام می تواند به طور هوشمندانه از اسکن خوشه هایی که می داند با پیش بینی های ارائه شده مطابقت نداشته باشد ، به جای اینکه بخواهد کل مجموعه را اسکن کند ، جلوگیری کند.
برای پیکربندی خوشه بندی برای یک مجموعه ، باید بند را به صورت خوشه در تحول درج مجموعه مشخص کنید. مثلا،
کپی حساب اسلامي...
ما را در سایت حساب اسلامي دنبال می کنید
برچسب :
نویسنده : کامران فیوضات
بازدید : 22
تاريخ : چهارشنبه
15 شهريور
1402 ساعت: 3:52