SlideShare a Scribd company logo
1 of 45
Download to read offline
1
‫عنوان‬
‫داده‬ ‫پایگاه‬ ‫در‬ ‫سرعت‬ ‫افزایش‬ ‫و‬ ‫کارایی‬ ‫بهبود‬
(SQL PERFORMANCE TUNING)
‫مشاور‬
‫مرادآبادی‬ ‫مهندس‬
‫نگارنده‬
‫دهکردی‬ ‫کرمی‬ ‫مهرداد‬
‫پاییز‬1397
‫دیتا‬ ‫گروه‬‫ی‬‫آویهنگ‬ ‫پردازان‬ ‫ایده‬
‫موضوع‬ ‫معرفی‬Sql-Tuning
‫به‬‫سیستم‬ ‫کارایی‬ ‫سرعت‬ ‫افزایش‬ ‫و‬ ‫بهبود‬ ‫معنای‬‫داده‬ ‫پایگاه‬
‫هر‬‫چقدر‬‫کاریها‬ ‫ریزه‬ ‫و‬ ‫جزئیات‬ ‫با‬‫به‬ ‫مربوط‬ ‫ی‬DB‫شوید‬ ‫آشنا‬ ‫بیشتر‬
‫رفتارتان‬‫عوض‬ ‫آن‬ ‫با‬‫میشودو‬‫میتوانید‬ ‫خوبی‬ ‫به‬‫از‬‫مشکالت‬ ‫عهده‬‫مربوط‬
‫به‬‫برآیید‬ ‫اطالعاتی‬ ‫بانکهای‬ ‫کارایی‬
‫مساله‬ ‫بیان‬
‫موضوع‬ ‫معرفی‬
‫اهداف‬
‫بر‬ ‫مروری‬Sql
‫منطق‬‫کوئری‬
‫کار‬ ‫راه‬
‫اجرا‬ ‫ترتیب‬
‫مساله‬ ‫بیان‬(‫چیست‬ ‫مشکل‬!‫؟‬)
‫هستیم‬ ‫این‬ ‫شاهد‬ ‫متاسفانه‬ ،‫میکنیم‬ ‫مراجعه‬ ‫که‬ ‫مختلف‬ ‫های‬ ‫پروژه‬ ‫انجام‬ ‫برای‬ ‫وقتها‬ ‫بیشتر‬
‫بازهم‬ ‫ولی‬ ‫دارد‬ ‫اختیار‬ ‫در‬ ‫هیوال‬ ‫یک‬ ‫تقریبا‬ ‫کارفرما‬ ‫که‬‫سرعت‬‫پایین‬ ‫اطالعاتی‬ ‫بانک‬
‫است‬.‫میکنیم‬ ‫سوال‬ ‫وقتی‬‫را‬ ‫قدرتمند‬ ‫سرور‬ ‫این‬ ‫چرا‬‫برای‬ ‫میدهند‬ ‫پاسخ‬ ،‫اید‬ ‫کرده‬ ‫خرید‬
‫اولین‬ ‫سرعت‬ ‫افزایش‬‫قدرت‬ ‫افزایش‬ ‫کردیم‬ ‫که‬ ‫کاری‬‫بود‬ ‫افزار‬ ‫سخت‬!!‫صورتیکه‬ ‫در‬
‫سخت‬‫افزار‬40‫قضیه‬ ‫درصد‬‫میباشد‬‫خود‬ ‫مباحث‬ ‫و‬SQL‫و‬‫شما‬ ‫نویسی‬ ‫برنامه‬ ‫کدهای‬
‫حدود‬60‫تا‬ ‫پس‬ ‫درصد؛‬‫و‬ ‫ببرید‬ ‫باال‬ ‫را‬ ‫افزار‬ ‫نرم‬ ‫سمت‬ ‫میتوانید‬
‫چند‬ ‫های‬ ‫نسخه‬‫افزاری‬ ‫سخت‬ ‫میلیونی‬ ‫صد‬‫نپیچید‬!
‫کار‬ ‫راه‬
‫موضوع‬ ‫معرفی‬
‫اهداف‬
‫کار‬ ‫روش‬
‫فرضیات‬
‫مساله‬ ‫بیان‬
‫اجرا‬ ‫ترتیب‬
‫سرعت‬ ‫افزایش‬ ‫برای‬ ‫عناصر‬ ‫ترین‬ ‫مهم‬ ‫از‬ ‫برخی‬
•‫منطق‬ ‫از‬ ‫استفاده‬‫روی‬ ‫صحیح‬‫کوئری‬‫ها‬
•‫از‬ ‫استفاده‬Execution Plan
•‫ابزار‬Database Engine Tuning Advise(‫شما‬ ‫به‬ ‫ابزار‬ ‫این‬‫اجازه‬
‫تا‬ ‫دهد‬ ‫می‬SQL‫را‬‫یا‬ ‫وضعیت‬ ‫یک‬ ‫ی‬ ‫تجزیه‬ ‫به‬ ‫وادار‬‫گروهی‬
‫کنید‬ ‫ها‬ ‫وضعیت‬ ‫از‬)
•‫از‬ ‫استفاده‬Statistc(‫آمار‬)‫سرعت‬ ‫افزایش‬ ‫جهت‬
•‫ایندکس‬ ‫و‬ ‫جدول‬ ‫سازی‬ ‫فشرده‬
•INDEX‫انتخاب‬ ‫و‬ ‫جداول‬ ‫روی‬ ‫صحیح‬ ‫گزاری‬Selectivity Column
•‫مدیریت‬TEMP-DB‫ها‬(‫در‬DB‫یک‬‫پیش‬ ‫از‬ ‫داده‬ ‫پایگاه‬‫تعریف‬
‫نام‬ ‫با‬ ‫شده‬Temp db‫یک‬ ‫به‬ ‫شما‬ ‫مواقع‬ ‫بعضی‬ ‫در‬ ،‫دارد‬ ‫وجود‬‫موقت‬ ‫جدول‬
‫نیاز‬‫می‬ ‫ذخیره‬ ‫داده‬ ‫پایگاه‬ ‫این‬ ‫در‬ ‫جداول‬ ‫این‬ ‫دارید‬‫شودکه‬
Temp Table‫دارد‬ ‫نام‬.)‫و‬...
‫کار‬ ‫راه‬
‫موضوع‬ ‫معرفی‬
‫اهداف‬
‫کار‬ ‫روش‬
‫فرضیات‬
‫مساله‬ ‫بیان‬
‫اجرا‬ ‫ترتیب‬
Excecution Plan
‫میتوانیم‬ ‫ابزار‬ ‫این‬ ‫ی‬ ‫وسیله‬ ‫به‬‫متوجه‬‫شویم‬SQL‫چطور‬‫داخلی‬ ‫صورت‬ ‫به‬(‫واقعی‬)
‫میکند‬ ‫اجرا‬ ‫را‬ ‫کوئری‬(‫صحنه‬ ‫پشت‬)‫شکل‬ ‫یک‬ ‫قالب‬ ‫در‬ ‫و‬‫گرافیکی‬‫ترتیب‬ ‫و‬ ‫مراحل‬
،‫میدهد‬ ‫نشان‬ ‫ما‬ ‫به‬ ‫را‬ ‫اجرا‬
‫بخش‬ ‫ترین‬ ‫مهم‬Excecution Plan،Estimated‫میباشد‬
‫براساس‬ ‫آن‬ ‫کارایی‬Optimizer‫است‬
‫واقع‬ ‫در‬Plan‫توسط‬ ‫اجرایی‬Optimizer‫توضیح‬ ‫ادامه‬ ‫در‬ ‫که‬ ،‫میشود‬ ‫طراحی‬
‫میشود‬ ‫داده‬(.Optimizer‫باشین‬ ‫داشته‬ ‫را‬)
WhatIsExcecutionPlan
Excecution Plan & Tooltips(‫ابزار‬ ‫راهنمای‬)
8
Optimizer
Optimizer
Sql‫از‬‫الگوریتم‬ ‫سه‬‫فیزیکی‬(‫ادامه‬ ‫در‬ ‫توضیح‬)‫برا‬‫ی‬‫اجرای‬‫کوئری‬‫ا‬‫می‬ ‫ستفاده‬‫کن‬‫د‬،‫و‬
‫بستگی‬ ‫شود‬ ‫انتخاب‬ ‫اجرا‬ ‫برای‬ ‫الگوریتمی‬ ‫چه‬ ‫اینکه‬‫ک‬ ‫شرکت‬ ‫رکوردهای‬ ‫تعداد‬ ‫به‬‫در‬ ‫ننده‬
‫عملیت‬‫جوین‬‫و‬Optimizer‫دا‬‫پس‬ ،‫رد‬‫اجرایی‬ ‫پلن‬‫توسط‬ ‫نهایت‬ ‫در‬‫انتخاب‬Optimizer
‫میشود‬ ‫انجام‬(‫میشود‬ ‫انجام‬ ‫فیزیکی‬ ‫الگوریتم‬ ‫سه‬ ‫از‬ ‫یکی‬ ‫توسط‬ ‫کوئری‬ ‫اجرای‬)
Optimizer:
‫که‬ ‫زمانی‬optimizer‫میکنه‬ ‫ما‬ ‫کوئری‬ ‫کردن‬ ‫کامپایل‬ ‫به‬ ‫اقدام‬(‫در‬ ‫که‬ ‫مراحلی‬‫پ‬‫ش‬‫ت‬
‫صحنه‬‫اجرای‬ ،‫یک‬‫کوئری‬‫است‬)‫الزم‬ ‫حافظه‬ ‫میزان‬‫مشخص‬ ‫رو‬ ‫کوئری‬ ‫شدن‬ ‫اجرا‬ ‫برای‬
‫میکنه‬.
‫یک‬ ‫که‬ ‫زمانی‬Plan‫نام‬ ‫به‬ ‫حافظه‬ ‫از‬ ‫محلی‬ ‫در‬ ‫میشود‬ ‫ایجاد‬PlanCatch‫تا‬ ،‫میشوند‬ ‫ذخیره‬
‫مراحل‬ ‫دوباره‬ ‫شد‬ ‫اجرا‬ ‫کوئری‬ ‫که‬ ‫بعد‬ ‫ی‬ ‫دفعه‬ExcecutePlan‫نشود‬ ‫اجرا‬ ‫مرتبه‬ ‫دو‬.‫هر‬
‫کد‬ ‫یک‬ ‫کوئری‬Hash‫نام‬ ‫به‬ ‫محلی‬ ‫در‬ ‫که‬ ‫دارد‬PlanCatch‫میگیرد‬ ‫قرار‬.
‫شود‬ ‫زده‬ ‫صدا‬ ‫کوئری‬ ‫آن‬ ‫مرتبه‬ ‫دو‬ ‫که‬ ‫زمانی‬ ‫پس‬Optimizer‫کد‬Hash‫جستجو‬ ‫را‬ ‫آن‬
‫همان‬ ‫از‬ ‫داشت‬ ‫وجود‬ ‫اگر‬ ‫و‬ ‫میکند‬Plan‫میکند‬ ‫استفاده‬.
‫اهداف‬
‫منزل‬ ‫به‬ ‫سرکار‬ ‫از‬ ‫شما‬ ‫رفتن‬ ‫برای‬ ‫راه‬ ‫ده‬ ‫است‬ ‫ممکن‬‫وجود‬‫باشد‬ ‫داشته‬
‫مسلما‬‫سریعترین‬ ‫خواهان‬ ‫ما‬ ‫ی‬ ‫همه‬‫مسیر‬‫ممکن‬‫میباشیم‬.
Sql Tuning‫میکند‬ ‫کمک‬‫بتوانید‬‫سریعترین‬‫مسیر‬ ‫و‬ ‫حل‬ ‫راه‬‫ممکن‬‫را‬‫انتخاب‬
،‫کنید‬‫حتی‬‫مستقیم‬ ‫مسیر‬ ‫این‬ ‫اگر‬‫نباشد‬!!
‫مساله‬ ‫بیان‬
‫موضوع‬ ‫معرفی‬
‫اهداف‬
‫کار‬ ‫روش‬
‫کوئری‬ ‫منطق‬
‫کار‬ ‫راه‬
‫اجرا‬ ‫ترتیب‬
‫صحیح‬ ‫نویسی‬ ‫کوئری‬(‫راهکارها‬ ‫ترین‬ ‫ازمهم‬ ‫یکی‬)
‫عملیات‬ ‫نویسی‬ ‫کوئری‬ ‫در‬ ‫عملیات‬ ‫ترین‬ ‫مهم‬ ‫از‬ ‫یکی‬Join‫متاسفانه‬ ‫که‬ ‫باشد‬‫می‬
‫انگاری‬ ‫ساده‬ ‫علت‬ ‫به‬ ‫نویسان‬ ‫برنامه‬ ‫از‬ ‫بسیاری‬join‫های‬ ‫کوئری‬ ‫روی‬ ‫ناصحیح‬ ‫های‬
‫است‬ ‫ممکن‬ ‫آن‬ ‫ودراثر‬ ‫میزنند‬ ‫سنگین‬‫بار‬ ‫و‬ ‫هزینه‬ ‫ناخواسته‬‫تحمیل‬ ‫برنامه‬ ‫به‬ ‫را‬ ‫زیادی‬
‫نباشند‬ ‫متوجه‬ ‫هم‬ ‫نهایت‬ ‫در‬ ‫حتی‬ ‫و‬ ‫کنند‬‫چرا‬‫آمده‬ ‫پیش‬ ‫مشکلی‬ ‫چنین‬!
‫است‬ ‫بهتر‬ ‫منظور‬ ‫این‬ ‫برای‬‫تر‬ ‫عقب‬ ‫گام‬ ‫یک‬‫کنیم‬ ‫پیگیری‬ ‫را‬ ‫داستان‬ ‫و‬ ‫رفته‬( .‫برای‬
‫ی‬ ‫برنامه‬ ،‫میکنیم‬ ‫نظر‬ ‫صرفه‬ ‫اولیه‬ ‫مباحث‬ ‫توضیح‬ ‫از‬ ‫وقت‬ ‫در‬ ‫جویی‬ ‫صرفه‬
DataMartist‫انواع‬ ‫اولیه‬ ‫یادگیری‬ ‫جهت‬join‫میشود‬ ‫معرفی‬)
‫متخصص‬ ‫یک‬ ‫بتوانیم‬ ‫اینکه‬ ‫برای‬ ‫پس‬SqtTuning‫چه‬ ‫کدها‬ ‫دل‬ ‫در‬ ‫بدانیم‬ ‫باید‬ ‫شویم‬
‫میگذرد‬ ‫چه‬ ‫و‬ ‫افتد‬ ‫می‬ ‫اتفاقی‬.
‫مساله‬ ‫بیان‬
‫موضوع‬ ‫معرفی‬
‫اهداف‬
‫بر‬ ‫مروری‬Sql
‫کوئری‬ ‫منطق‬
‫راهکار‬
‫پیشنهادی‬ ‫روش‬
‫ای‬ ‫رابطه‬ ‫مدل‬ ‫بر‬ ‫مروری‬Sql (Structerd Query Language)
‫زمانی‬‫که‬‫یک‬‫کوئری‬‫اجرا‬‫میشود‬‫برای‬‫اوراکل‬
(‫یا‬‫هردیتابیسی‬)،‫مراحل‬‫روبرو‬‫اتفاق‬‫می‬‫افتند‬.
-EstimateExecution:‫قبل‬‫از‬‫اینکه‬‫کوئری‬‫به‬
‫مرحله‬‫اجرابرسداین‬‫ابزار‬‫بهترین‬‫و‬‫سریعترین‬‫نقشه‬
‫را‬‫برای‬‫اجرا‬‫طراحی‬‫میکند‬‫و‬‫در‬‫اینجا‬‫تا‬‫حدودی‬
‫کوئری‬‫مارا‬Optimize‫میکند‬)‫از‬‫زمان‬‫زدن‬F5
‫یا‬Ctrl+Enter‫تا‬‫زمان‬(Result
‫بر‬ ‫مروری‬Sql
‫منطق‬‫کوئری‬
‫اجرا‬ ‫ترتیب‬
‫مساله‬ ‫بیان‬
‫موضوع‬ ‫معرفی‬
‫اهداف‬
‫راهکار‬
‫ساختار‬SQL(‫خودکوئری‬‫شده‬ ‫تشکیل‬ ‫چه‬ ‫از‬)
SQL(Structerd Query Language)
SEQUEL(Structerd English Query Language)
‫کوئری‬ ‫منطق‬
‫اجرا‬ ‫ترتیب‬
‫بر‬ ‫مروری‬Sql
‫مساله‬ ‫بیان‬
‫موضوع‬ ‫معرفی‬
‫اهداف‬
‫راهکار‬
SEQUEL(Structerd English Query Language)
‫کتاب‬SqlQuery(3)‫ی‬ ‫قفسه‬ ‫از‬ ‫را‬(2)‫دفترم‬(1)‫دهید‬ ‫من‬ ‫به‬ ‫و‬ ‫بیاورید‬ ‫بیرون‬(4)
‫پس‬‫اعمال‬ ‫ها‬ ‫کوئری‬ ‫روی‬ ‫بر‬ ‫ما‬ ‫که‬ ‫منطقی‬ ‫دیدیم‬‫میکنیم‬(‫خودمان‬ ‫منطق‬)‫با‬‫ترتیب‬‫عملیات‬
‫توسط‬ ‫که‬ ‫فیزیکی‬Sql‫باشد‬ ‫می‬ ‫متفاوت‬ ‫شود‬ ‫می‬ ‫اجرا‬
‫ضرورت‬ ‫و‬ ‫اهمیت‬
‫موضوع‬ ‫معرفی‬
‫اهداف‬
‫اجرا‬ ‫ترتیب‬
‫کوئری‬ ‫منطق‬
‫مساله‬ ‫بیان‬
‫بر‬ ‫مروری‬Sql
‫مثال‬
‫چون‬‫اول‬From،‫بعد‬Where‫ودر‬‫آخر‬Select‫اجرا‬‫میشود‬‫پس‬e‫رانمیشناسد‬
‫بر‬ ‫مروری‬Sql
‫فرضیات‬
‫اجرا‬ ‫ترتیب‬
‫جدول‬ ‫کل‬ ‫جدولی‬ ‫سطراز‬ ‫یک‬ ‫ازای‬ ‫به‬ ‫بخواهیم‬ ‫که‬ ‫زمانی‬
‫کنیم‬ ‫ارزیابی‬ ‫را‬ ‫دیگر‬-----<CrossApply(‫عنوان‬ ‫به‬
‫واسط‬-‫محدودیت‬ ‫رفع‬ ‫برای‬(‫وجود‬ ‫هم‬ ‫دیگری‬ ‫راههای‬ ‫البته‬
‫دارد‬))
‫مساله‬ ‫بیان‬
‫موضوع‬ ‫معرفی‬
‫اهداف‬
‫راهکار‬
-‫قوانین‬ ‫اگر‬Sql‫ه‬ ‫اسکریپت‬ ،‫شود‬ ‫اعمال‬ ‫کامل‬ ‫ای‬ ‫رابطه‬ ‫مدل‬ ‫قوانین‬ ‫و‬ ‫شود‬ ‫رعایت‬‫ا‬
‫است‬ ‫حمل‬ ‫قابل‬(pl-sql,T-sql‫و‬)...‫چون‬‫پایه‬SQL‫است‬
1)‫همه‬‫باشند‬ ‫داشته‬ ‫اسم‬ ‫ها‬ ‫ستون‬—‫از‬ ‫استفاده‬Alias‫خود‬ ‫چند‬ ‫هر‬Sql‫از‬
NoColumnName‫استفاده‬‫مثال‬ ‫میکند‬:
Select Name+’’+LastNAme As FullName From Employee
2)Syntax‫کند‬ ‫کار‬ ‫کد‬ ‫هرچند‬ ،‫بنویسید‬ ‫درست‬ ‫و‬ ‫کامل‬ ‫را‬.‫در‬Order By‫به‬ ‫مجاز‬
‫میباشیم‬ ‫ستون‬ ‫شماره‬ ‫نوشتن‬.‫مثال‬Order By 1‫از‬Id‫بهتر‬ ‫ولی‬ ‫میکند‬ ‫مرتب‬ ‫اول‬
‫شود‬ ‫آورده‬ ‫ستون‬ ‫نام‬ ‫است‬OrderBy Id Desc
3)‫ندارد‬ ‫ضرورت‬ ‫چند‬ ‫هر‬ ‫شود‬ ‫گذاشته‬ ‫کلید‬ ‫ها‬ ‫جدول‬ ‫تمام‬ ‫برای‬
Delete Employee Where Name=‘Ali’
‫دوتا‬ ‫اگر‬Ali‫از‬ ‫استفاده‬ ‫با‬ ‫ولی‬ ‫میشوند‬ ‫هردوپاک‬ ‫باشیم‬ ‫داشته‬Id‫را‬ ‫نظر‬ ‫مورد‬ ‫رکورد‬
‫میکنیم‬ ‫حذف‬
5)‫به‬ ‫چند‬ ‫هر‬;‫اگر‬ ‫ولی‬ ‫نیست‬ ‫نیاز‬ ‫مواقع‬ ‫خیلی‬‫دستورات‬ ‫انتهای‬‫از‬;‫به‬ ‫شود‬ ‫استفاده‬
‫است‬ ‫بهتر‬ ‫مراتب‬
16
dfgd
‫کنید‬ ‫ای‬ ‫رابطه‬ ‫مدل‬ ‫را‬ ‫خود‬ ‫دید‬-‫ای‬ ‫رابطه‬ ‫مدل‬ ‫قوانین‬
DBMSOriented
5)‫از‬‫همه‬‫مهم‬‫تر‬‫زمانی‬‫که‬‫کدهای‬Sql‫می‬‫نویسید‬‫منطق‬‫خود‬‫را‬‫بر‬
‫پایه‬‫ی‬‫منطق‬‫فیزیکی‬‫بنا‬‫بگذارید‬
‫مثالما،دربرنامه‬‫نویسی‬‫یک‬‫وقتی‬DataTable‫ومیخواهیم‬‫از‬‫آن‬‫استفاده‬
‫کنیم‬،‫از‬‫حلقه‬‫تکرار‬‫استفاده‬،‫میکنیم‬‫یک‬Foreach‫روی‬Dt‫میگذاریم‬
‫ویک‬‫شرط‬‫هم‬‫میگذاریم‬‫که‬‫از‬‫رکورد‬‫اول‬‫شروع‬‫کن‬(‫رکورد‬‫به‬‫رکورد‬)‫به‬
‫خواندن‬‫و‬‫این‬‫عملیات‬‫را‬‫اعمال‬‫کن‬(‫کرسر‬)‫ولی‬‫این‬‫که‬‫در‬‫مدل‬‫رابطه‬‫ا‬‫ی‬
‫هر‬‫لحظه‬‫با‬‫یک‬‫ردیف‬‫کار‬‫کنیم‬‫صحیح‬‫نمی‬‫باشد‬‫و‬‫باید‬‫با‬‫مجمو‬‫عه‬‫ای‬
‫از‬‫ردیف‬‫ها‬‫و‬‫به‬‫صورت‬‫گروهی‬(‫مجموعه‬‫ای‬)‫کار‬‫شود‬(‫این‬‫سرعت‬‫را‬
‫بسیار‬‫باال‬‫میبرد‬)
17
‫قوانین‬ ‫ادامه‬‫ای‬ ‫رابطه‬ ‫مدل‬
DBMSOriented
18
‫منطقی‬ ‫و‬ ‫فیزیکی‬ ‫عملیات‬Join‫در‬SQL
OperationInJoin
‫زمانی‬‫کم‬ ‫ما‬ ‫رکوردهای‬ ‫تعداد‬ ‫که‬‫باش‬‫د‬
‫ایندکس‬‫داشته‬ ‫وجود‬ ‫جدول‬ ‫روی‬ ‫مناسب‬‫باش‬‫د‬،‫الگوریتم‬
Nested Loops‫انجام‬ ‫برای‬ ‫گزینه‬ ‫بهترین‬‫عملی‬‫ا‬‫ت‬‫جوین‬
‫هست‬
•Cpu‫استفاده‬ ‫کم‬ ‫بسیار‬‫میکند‬
•‫نیاز‬‫فرض‬ ‫پیش‬ ‫عملگر‬ ،‫ندارد‬ ‫اضافی‬ ‫ی‬ ‫حافظه‬ ‫به‬Sql
‫ودرزمان‬‫ساده‬ ‫عملیات‬ ‫انجام‬Join‫میشود‬ ‫استفاده‬
19
Nested loops (‫تودرتو‬ ‫های‬ ‫حلقه‬)
Hash Match
Nestedloops
Merge-Sort
‫یک‬ ‫الگوریتم‬ ‫این‬‫ای‬ ‫مرحله‬ ‫دو‬ ‫الگوریتم‬‫است‬‫عملیاتش‬ ‫یک‬Sort‫یک‬ ‫و‬
‫عملیاتش‬Merge‫جوین‬ ‫هم‬ ‫با‬ ‫میخواهند‬ ‫که‬ ‫زمانی‬ ‫ها‬ ‫ورودی‬ ‫واقع‬ ‫در‬ ،‫باشد‬ ‫می‬
‫باید‬ ‫شوند‬Sort‫این‬ ‫که‬ ‫باشند‬Sort‫صحی‬ ‫گزاری‬ ‫ایندکس‬ ‫مثال‬ ‫براساس‬ ‫تواند‬ ‫می‬‫ح‬
‫یا‬Orderby‫خورده‬‫باشند‬(‫خروجی‬ ‫میخواهیم‬Sort‫باشد‬)
20
NestedLoop
Merge-Sort(‫ادغام‬-‫مرتب‬‫سازی‬)
Merge-Sort
Hash Match
‫اگر‬Optimizer‫حالت‬ ‫ترین‬ ‫بهینه‬ ‫و‬ ‫بهترین‬ ‫حالت‬ ‫این‬ ‫کرد‬ ‫انتخاب‬ ‫را‬ ‫حالت‬ ‫این‬
‫و‬ ‫حافظه‬ ‫مصرف‬ ‫کمترین‬ ‫و‬ ‫است‬ ‫ممکن‬Cpu‫از‬ ‫بعد‬ ‫و‬ ‫میدهد‬ ‫اختصاص‬ ‫خود‬ ‫به‬ ‫را‬
‫صورت‬ ‫به‬ ‫قطعا‬ ‫خروجی‬ ‫عملیات‬ ‫اتمام‬Sort‫باشد‬ ‫می‬.
21
‫الگوریتم‬Merge-Sort
NestedLoop
Merge-Sort
Hash Match
22
NestedLoop
Merge-Sort
Hash Match
23
24
NestedLoop
Hash Match
Merge-Sort
‫که‬ ‫زمانی‬‫رکوردها‬ ‫تعداد‬‫زیاد‬ ‫خیلی‬ ‫جوین‬ ‫در‬ ‫کننده‬ ‫شرکت‬ ‫ی‬‫باش‬‫د‬‫جداول‬ ‫و‬
‫هم‬ ‫مربوطه‬‫نداشته‬ ‫مناسب‬ ‫ایندکس‬‫جوی‬ ‫انجام‬ ‫برای‬ ‫گزینه‬ ‫بهترین‬ ،‫باشند‬،‫ن‬Hash
Match‫هست‬.‫اشاره‬ ‫زیر‬ ‫موارد‬ ‫به‬ ‫میتوان‬ ‫الگوریتم‬ ‫نوع‬ ‫این‬ ‫های‬ ‫ویژگی‬ ‫از‬
‫کرد‬:
‫کلیه‬‫الگوریتم‬ ‫این‬ ‫توسط‬ ‫منطقی‬ ‫های‬ ‫جوین‬ ‫ی‬‫انجام‬‫پذیر‬‫است‬
‫ترین‬ ‫مناسب‬‫الگوریتم‬‫ایندکس‬ ‫فاقد‬ ‫و‬ ‫بزرگ‬ ‫جداول‬ ‫برای‬‫مناسب‬‫است‬
‫قابل‬ ‫هزینه‬ ‫بودن‬ ‫دارا‬‫توجه‬
‫پیچیده‬‫الگوریتم‬ ‫بودن‬
‫مصرف‬‫و‬ ‫حافظه‬Cpu‫می‬ ‫باال‬ ‫بسیار‬‫باشد‬
Hash Match
‫زمانی‬‫که‬‫ورودی‬‫خروجی‬‫کم‬‫است‬‫و‬‫ایندکس‬‫گذاری‬‫مناسبی‬‫انتخاب‬‫شده‬(‫تعداد‬
‫رکورد‬‫کم‬‫و‬‫ایندکس‬‫مناسب‬)
-‫زمانی‬‫که‬‫ورودی‬‫ها‬‫سرت‬‫شده‬‫و‬‫نیاز‬‫باشد‬‫خروجی‬‫ها‬‫هم‬‫سورت‬‫باشند‬
-‫زمانیکه‬‫ورودی‬‫ها‬‫ورکوردها‬‫زیاد‬‫و‬‫ایندکس‬‫مناسبی‬‫روی‬‫جدول‬‫وجود‬‫نداشته‬‫باش‬‫د‬
Excluding-->‫به‬‫جز‬
25
‫مقایسه‬
Compare
26
‫منطقی‬‫عملیات‬
‫بسی‬ ‫تاثیر‬ ‫کوئری‬ ‫یک‬ ‫ی‬ ‫هزینه‬ ‫در‬ ‫جوین‬ ‫ترتیب‬ ‫کردن‬ ‫مشخص‬‫موثری‬ ‫ار‬
‫که‬ ‫آنجا‬ ‫از‬ ‫و‬ ‫دارد‬Optimizer‫در‬ ‫را‬ ‫مختلفی‬ ‫های‬ ‫جایگشت‬ ‫باید‬
‫داخل‬ ‫جداول‬Join‫برای‬ ‫مرحله‬ ‫این‬ ‫کند‬ ‫بررسی‬ ‫باید‬Optimizer
‫است‬ ‫مراحل‬ ‫ترین‬ ‫سخت‬ ‫جز‬
‫دارد‬ ‫وجود‬ ‫مدل‬ ‫دو‬ ‫ترتیب‬ ‫تعیین‬ ‫برای‬:
Left-Deep Tree
Tree(LinearTrees):join(join(join(A,B),C),D)
Bushy Tree : join (join (A,B),join(C,D));
‫معموال‬Bushy Tree(‫انبوه‬ ‫درخت‬)‫و‬ ‫میطلبد‬ ‫زیادی‬ ‫ی‬ ‫حافظه‬
Optimizer‫میره‬ ‫روش‬ ‫این‬ ‫سراغ‬ ‫کمتر‬.‫دورش‬ ‫این‬ ‫از‬ ‫ما‬ ‫هم‬ ‫واقع‬ ‫در‬
‫هم‬ ‫و‬ ‫میکنیم‬ ‫استفاده‬Optimizer
‫انواع‬Join‫منطقی‬ ‫دیدگاه‬ ‫از‬
‫عملگر‬‫جوین‬‫هر‬‫لحظه‬‫دو‬‫تا‬‫جدول‬‫نیاز‬‫داره‬‫و‬‫خروجی‬‫دو‬‫جدول‬‫ورودی‬‫بعدی‬‫می‬
‫باشد‬
27
Left Deep Tree
Left Deep Tree
Bushy Tree
‫چهار‬‫جدول‬‫در‬‫مرحله‬‫ی‬‫اول‬‫باهم‬‫جوین‬‫می‬‫شوند‬‫و‬‫نتایج‬‫آنها‬‫با‬‫جداول‬‫بعدی‬‫جوین‬
‫میشود‬‫و‬‫چون‬‫این‬‫روش‬‫بسیارهزینه‬‫بر‬‫است‬‫به‬‫ندرت‬‫از‬‫این‬‫روش‬‫استفاده‬‫می‬‫ش‬‫ود‬
28
Bushy Tree
Bushy Tree
Left Deep Tree
‫عملیات‬ ‫در‬ ‫جداول‬ ‫ممکن‬ ‫های‬ ‫تعدادترتیب‬Join
29
Compare
‫که‬ ‫آید‬ ‫پیش‬ ‫سوال‬ ‫این‬ ‫است‬ ‫ممکن‬Optimizer‫تخمینی‬ ‫های‬ ‫پلن‬ ‫میاد‬ ‫چطور‬
‫میکنه‬ ‫حساب‬ ‫را‬!‫اینکه‬ ‫یا‬ ‫؟‬‫می‬ ‫اجرا‬ ‫زمان‬ ‫از‬ ‫بیشتر‬ ‫که‬ ‫ما‬ ‫تخمین‬ ‫زمان‬ ‫اصال‬‫شود‬!!
‫نیست‬ ‫صرفه‬ ‫به‬ ‫مقرون‬ ‫سازی‬ ‫بهینه‬ ‫و‬!
‫جواب‬:Optimizer‫مثال‬ ،‫دارد‬ ‫هزینه‬ ‫و‬ ‫زمان‬ ‫آستانه‬ ‫حد‬ ‫یک‬ ‫سازی‬ ‫بهینه‬ ‫برای‬
‫میشود‬ ‫بیشتر‬ ‫حدی‬ ‫از‬ ‫جداول‬ ‫تعداد‬ ‫وقتی‬Optimizer‫حل‬ ‫راه‬ ‫سری‬ ‫یک‬ ‫از‬
‫ها‬‫مثال‬ ‫و‬ ‫میکند‬ ‫استفاده‬BushyTree‫برای‬ ‫الگوریتمی‬ ‫یک‬ ‫از‬ ‫میگذاردیا‬ ‫کنار‬ ‫را‬
‫میکند‬ ‫استفاده‬ ‫جدول‬‫منطقی‬ ‫آن‬ ‫ی‬ ‫هزینه‬ ‫که‬‫باشد‬
(n‫هاست‬ ‫جدول‬ ‫تعداد‬)
30
‫اند‬‫داشته‬‫سفارش‬‫که‬‫مشتریانی‬‫تعداد‬
RowCount =121000
‫نکته‬:‫مراتب‬ ‫به‬ ‫ما‬ ‫کد‬ ‫کنیم‬ ‫گزاری‬ ‫پرانتز‬ ‫اگر‬‫تر‬ ‫خوانا‬‫آن‬ ‫فهم‬ ‫و‬ ‫شد‬ ‫خواهد‬‫هم‬
‫دیگران‬ ‫برای‬ ‫هم‬ ‫و‬ ‫بعدی‬ ‫مراجعات‬ ‫برای‬‫ک‬ ‫همانطور‬ ‫و‬ ‫شد‬ ‫خواهد‬ ‫تر‬ ‫ساده‬ ‫بسیار‬‫ه‬
‫میشود‬ ‫مشاهده‬Plan‫هستند‬ ‫هم‬ ‫به‬ ‫شبیه‬ ‫کوئری‬ ‫با‬ ‫دقیقا‬
31
‫اند‬‫داشته‬‫سفارش‬‫که‬‫مشتریانی‬‫تعداد‬
RowCount =121000
‫وجود‬ ‫صورت‬ ‫در‬ ‫آنها‬ ‫سفارشات‬ ‫همراه‬ ‫به‬ ‫مشتریان‬ ‫ی‬ ‫کلیه‬ ‫لیست‬
(‫آ‬ ‫سفارشات‬ ‫همراه‬ ‫به‬ ‫باشند‬ ‫نداده‬ ‫چه‬ ‫و‬ ‫باشند‬ ‫داده‬ ‫سفارش‬ ‫چه‬ ،‫مشتریان‬ ‫ی‬ ‫همه‬‫نها‬
‫وجود‬ ‫صورت‬ ‫در‬)
32
33
RowCount =121000!
34
‫وقتی‬Plan‫همه‬ ‫که‬ ‫میبینیم‬ ‫میکنیم‬ ‫مشاهده‬ ‫هم‬ ‫را‬InnerJoin‫از‬ ‫آثاری‬ ‫و‬ ‫اند‬ ‫خورده‬Left‫نیست‬
‫وقتی‬ ‫و‬ ‫ایم‬ ‫کرده‬ ‫اعمال‬ ‫کوئری‬ ‫روی‬ ‫ما‬ ‫که‬ ‫است‬ ‫اشتباهی‬ ‫منطق‬ ‫آن‬ ‫دلیل‬Optimizer
‫این‬ ‫که‬ ‫شد‬ ‫متوجه‬Left‫و‬ ‫داد‬ ‫انجام‬ ‫بازنویسی‬ ‫یک‬ ‫نمیشود‬ ‫اعمال‬Left‫به‬ ‫را‬Inner
‫و‬ ‫کرد‬ ‫تبدیل‬Outer‫جریان‬ ‫این‬ ‫به‬ ‫که‬ ‫میشود‬ ‫گرفته‬ ‫نادیده‬Nullify‫شدن‬(‫نادیده‬
‫گرفتن‬)‫میگویند‬
35
Reason
‫پس‬‫اگر‬‫بعد‬‫از‬‫اجرا‬‫شدن‬Left(Right)Join‫شرطی‬‫داشته‬‫باشیم‬‫روی‬‫جدولی‬‫که‬
‫نمیخواهیم‬‫رکوردهاش‬‫رزرو‬‫بشه‬(‫ما‬‫میخواهیم‬‫رکوردهای‬Customer
‫رزروباشه‬)،‫پس‬Outer‫تبدیل‬‫میشود‬‫به‬Inner.(‫دلیل‬‫را‬‫متوجه‬‫شدیم‬‫پس‬
70‫درصد‬‫راه‬‫رو‬،‫رفتیم‬‫حاال‬‫باید‬‫چه‬‫کاری‬‫انجام‬‫بدیم‬!‫؟‬)
‫بهترین‬‫راه‬‫حل‬‫؟‬
36
‫دید‬‫خود‬‫را‬‫مدل‬‫رابطه‬‫ای‬‫کنید‬‫و‬‫هنگام‬‫نوشتن‬‫کد‬‫غرق‬‫در‬‫قوانین‬‫مدل‬‫رابطه‬‫ای‬
،‫باشید‬‫تا‬‫چنین‬‫مسائلی‬‫پیش‬‫نیاید‬.
37
‫خواندن‬ ‫ی‬ ‫قاعده‬ExcecutionPlan‫است‬ ‫پایین‬ ‫به‬ ‫باال‬ ‫و‬ ‫چپ‬ ‫به‬ ‫راست‬ ‫از‬
‫بهبود‬‫را‬‫خود‬‫کد‬‫توانستیم‬‫بخشیم‬
RowCount =156000
‫اگر‬‫به‬‫هر‬‫دلیلی‬‫به‬‫خصوص‬‫موقع‬trouble shooting(‫اشکال‬‫زدایی‬-
‫مثالکوئری‬‫شماکند‬‫است‬)‫فکر‬‫میکنید‬‫که‬‫منطق‬‫کوئری‬‫شما‬‫ب‬‫ه‬‫هر‬
‫دلیلی‬‫باید‬‫به‬‫همان‬‫شکلی‬‫که‬‫شما‬‫نوشته‬‫اید‬‫اجرا‬‫شود‬‫میتوانی‬‫د‬‫کوئری‬
‫خود‬‫را‬Force،‫کنید‬‫به‬‫این‬‫شکل‬‫که‬‫انتهای‬‫کوئری‬‫خود‬
Option(Force Order)
‫میکنیم‬ ‫اضافه‬ ‫را‬.‫تن‬ ‫و‬ ‫نمیشود‬ ‫توصیه‬ ‫عنوان‬ ‫هیچ‬ ‫به‬ ‫حل‬ ‫راه‬ ‫این‬‫به‬ ‫ها‬
‫و‬ ‫در‬ ‫ترتیب‬ ‫چون‬ ،‫کرد‬ ‫استفاده‬ ‫آن‬ ‫از‬ ‫میتوان‬ ‫موقت‬ ‫حل‬ ‫راه‬ ‫یک‬ ‫عنوان‬‫اقع‬
‫توسط‬ ‫باید‬Optimizer‫شود‬ ‫انجام‬
38
Force‫منطقی‬ ‫باترتیب‬ ‫مطابق‬ ‫فیزیکی‬ ‫اجرای‬ ‫ترتیب‬ ‫کردن‬
Force
‫بندی‬‫جمع‬(‫مباحث‬‫برآخرین‬) ‫توسط‬ ‫جوین‬ ‫انجام‬ ‫ترتیب‬
Optimizer‫و‬ ‫کوئری‬ ‫نه‬ ‫میشود‬ ‫تعیین‬
‫شما‬ ‫منطق‬
‫تاثیر‬ ‫عامل‬ ‫یک‬ ‫جوین‬ ‫انجام‬ ‫ترتیب‬
‫است‬ ‫کوئری‬ ‫کارایی‬ ‫و‬ ‫هزینه‬ ‫گذاردر‬
‫شدن‬ ‫اجرا‬ ‫از‬ ‫بعد‬ ‫اگر‬Left(Right)Join
‫که‬ ‫جدولی‬ ‫روی‬ ‫باشیم‬ ‫داشته‬ ‫شرطی‬
‫شود‬ ‫رزرو‬ ‫رکوردهاش‬ ‫نمیخواهیم‬Outer
‫به‬ ‫میشود‬ ‫تبدیل‬Inner
Force‫هم‬ ‫آن‬ ‫و‬ ‫خاص‬ ‫مواقع‬ ‫در‬ ‫فقط‬ ‫کردن‬
‫موقت‬ ‫حل‬ ‫راه‬ ‫عنوان‬ ‫به‬
27
‫پیشنهادات‬
1)ORDER BY‫و‬DISTINCT‫نکنید‬ ‫خرج‬ ، ‫دستی‬ ‫گشاده‬ ‫با‬ ‫را‬.
‫است‬ ‫کارایی‬ ‫کاهش‬ ‫باعث‬ ‫که‬ ‫شوند‬ ‫میانی‬ ‫جداول‬ ‫ساخت‬ ‫باعث‬ ‫است‬ ‫ممکن‬ ‫آنها‬.
2)‫برای‬‫ندرت‬ ‫به‬ ‫که‬ ‫گزارشاتی‬‫نکنید‬ ‫ذخیره‬ ‫ایندکسی‬ ، ‫دارید‬ ‫نیاز‬ ‫آنها‬ ‫تولید‬ ‫به‬.
‫هروقت‬‫بعد‬ ‫و‬ ‫کنید‬ ‫درستش‬ ، ‫داشتین‬ ‫الزم‬‫هم‬DROP‫کنید‬ ‫ش‬
3)‫کرسرها‬‫گداصفتی‬ ‫اوج‬ ‫در‬ ‫را‬!‫احتیاج‬ ‫واقعا‬ ‫که‬ ‫مواقعی‬ ‫و‬ ‫ببرید‬ ‫بکار‬‫هستند‬
‫همیشه‬‫بدون‬ ‫حلی‬ ‫راه‬ ‫کنید‬ ‫سعی‬‫کرسر‬‫پیدا‬ ‫مسائل‬ ‫برای‬ ،‫کنید‬
4)‫از‬ ‫المقدور‬ ‫حتی‬Cross Joins‫کنید‬ ‫اجتناب‬.
‫خسیس‬ ‫موارد‬ ‫این‬ ‫در‬‫باشید‬!
1)‫استفاده‬‫از‬TOP n،‫ها‬ ‫کوئری‬ ‫در‬‫است‬ ‫مناسب‬ ‫شدن‬ ‫بهینه‬ ‫و‬ ‫سرعت‬ ‫برای‬
2)‫از‬ ‫المقدور‬ ‫حتی‬UNION ALL‫بجای‬UNION‫کنید‬ ‫استفاده‬.UNION‫قبل‬‫از‬
‫برگرداندن‬‫است‬ ‫گذار‬ ‫تاثیر‬ ‫کارایی‬ ‫بر‬ ‫که‬ ‫کند‬ ‫هش‬ ‫یا‬ ‫سورت‬ ‫را‬ ‫آنها‬ ‫که‬ ‫بایستی‬ ، ‫نتایج‬.
3)‫از‬ ‫شود‬ ‫سعی‬ ‫امکان‬ ‫صورت‬ ‫در‬Inner‫جای‬ ‫به‬Outer‫شود‬ ‫استفاده‬
4)‫ایندکس‬‫غیر‬ ‫های‬،‫کالستر‬‫برای‬select‫تکی‬ ‫های‬‫به‬ ‫جستجو‬ ‫و‬‫دنبال‬‫رکورد‬ ‫یک‬
،‫خاص‬‫هستند‬ ‫مناسبتر‬.
‫دهید‬ ‫گرایش‬ ‫سمت‬ ‫این‬ ‫به‬ ‫را‬ ‫خود‬ ‫های‬ ‫کوئری‬
43
‫و‬ ‫شاداب‬ ‫کوهرنگ‬ ‫همچون‬‫پرانرژی‬‫باشید‬!
‫عتههعقدعدقعد‬44
‫ام‬ ‫زندگی‬ ‫آموزگار‬ ‫دو‬ ‫به‬ ‫تقدیم‬
‫عزیزم‬ ‫مادر‬ ‫و‬ ‫پدر‬
Sql tuning

More Related Content

Similar to Sql tuning

سی پلاس پلاس به عنوان زبان دومی برای یادگیری شی گرایی
سی پلاس پلاس به عنوان زبان دومی  برای یادگیری شی گراییسی پلاس پلاس به عنوان زبان دومی  برای یادگیری شی گرایی
سی پلاس پلاس به عنوان زبان دومی برای یادگیری شی گراییmrm_196
 
Flb Introduce In Persian بالانس خط تولید
Flb Introduce In Persian بالانس خط تولیدFlb Introduce In Persian بالانس خط تولید
Flb Introduce In Persian بالانس خط تولیدkiapour4
 
چارچوب متن باز جهت توسعه سیستم های نرم افزاری
چارچوب متن باز جهت توسعه سیستم های نرم افزاریچارچوب متن باز جهت توسعه سیستم های نرم افزاری
چارچوب متن باز جهت توسعه سیستم های نرم افزاریعباس بني اسدي مقدم
 
Java programming languages
Java programming languagesJava programming languages
Java programming languagesjavadib
 
طرح چارچوب متن باز تولید نرم افزار
طرح چارچوب  متن باز تولید نرم افزار طرح چارچوب  متن باز تولید نرم افزار
طرح چارچوب متن باز تولید نرم افزار عباس بني اسدي مقدم
 
راهنمای کامل راه اندازی الاستیک سرچ و استفاده آن در شرکت گارتکس
راهنمای کامل راه اندازی الاستیک سرچ و استفاده آن در شرکت گارتکسراهنمای کامل راه اندازی الاستیک سرچ و استفاده آن در شرکت گارتکس
راهنمای کامل راه اندازی الاستیک سرچ و استفاده آن در شرکت گارتکسSeied Mahdi Sadat Hosseini
 
Data Management System- Haseb System Co
Data Management System- Haseb System CoData Management System- Haseb System Co
Data Management System- Haseb System CoHamed Ghazanfari
 
Introduction to oracle
Introduction to oracleIntroduction to oracle
Introduction to oracleEhsan Hamzei
 
Machine learning and big-data-in-physics 13970711-Dr. Amin Nezarat
Machine learning and big-data-in-physics 13970711-Dr. Amin NezaratMachine learning and big-data-in-physics 13970711-Dr. Amin Nezarat
Machine learning and big-data-in-physics 13970711-Dr. Amin Nezarataminnezarat
 
Introduction to matlab
Introduction to matlabIntroduction to matlab
Introduction to matlabAbbas Shomali
 
Repository pattern
Repository patternRepository pattern
Repository patternMahdi Fa
 
Bi and data mining with Oracle
Bi and data mining with OracleBi and data mining with Oracle
Bi and data mining with Oracleghanadbashi
 

Similar to Sql tuning (20)

سی پلاس پلاس به عنوان زبان دومی برای یادگیری شی گرایی
سی پلاس پلاس به عنوان زبان دومی  برای یادگیری شی گراییسی پلاس پلاس به عنوان زبان دومی  برای یادگیری شی گرایی
سی پلاس پلاس به عنوان زبان دومی برای یادگیری شی گرایی
 
Rbdmap ceph realease 0.2
Rbdmap ceph realease 0.2Rbdmap ceph realease 0.2
Rbdmap ceph realease 0.2
 
Flb Introduce In Persian بالانس خط تولید
Flb Introduce In Persian بالانس خط تولیدFlb Introduce In Persian بالانس خط تولید
Flb Introduce In Persian بالانس خط تولید
 
Microsoft BI Sumery
Microsoft BI SumeryMicrosoft BI Sumery
Microsoft BI Sumery
 
چارچوب متن باز جهت توسعه سیستم های نرم افزاری
چارچوب متن باز جهت توسعه سیستم های نرم افزاریچارچوب متن باز جهت توسعه سیستم های نرم افزاری
چارچوب متن باز جهت توسعه سیستم های نرم افزاری
 
Amjadi - Ebook 5 - Function - v1
Amjadi - Ebook 5 - Function - v1Amjadi - Ebook 5 - Function - v1
Amjadi - Ebook 5 - Function - v1
 
Pg autoscaling in ceph
Pg autoscaling in  cephPg autoscaling in  ceph
Pg autoscaling in ceph
 
Java programming languages
Java programming languagesJava programming languages
Java programming languages
 
Docker
DockerDocker
Docker
 
طرح چارچوب متن باز تولید نرم افزار
طرح چارچوب  متن باز تولید نرم افزار طرح چارچوب  متن باز تولید نرم افزار
طرح چارچوب متن باز تولید نرم افزار
 
how enable ceph dashboard
how enable  ceph dashboardhow enable  ceph dashboard
how enable ceph dashboard
 
راهنمای کامل راه اندازی الاستیک سرچ و استفاده آن در شرکت گارتکس
راهنمای کامل راه اندازی الاستیک سرچ و استفاده آن در شرکت گارتکسراهنمای کامل راه اندازی الاستیک سرچ و استفاده آن در شرکت گارتکس
راهنمای کامل راه اندازی الاستیک سرچ و استفاده آن در شرکت گارتکس
 
Data Management System- Haseb System Co
Data Management System- Haseb System CoData Management System- Haseb System Co
Data Management System- Haseb System Co
 
Scrum doc
Scrum docScrum doc
Scrum doc
 
مدل رانده
مدل راندهمدل رانده
مدل رانده
 
Introduction to oracle
Introduction to oracleIntroduction to oracle
Introduction to oracle
 
Machine learning and big-data-in-physics 13970711-Dr. Amin Nezarat
Machine learning and big-data-in-physics 13970711-Dr. Amin NezaratMachine learning and big-data-in-physics 13970711-Dr. Amin Nezarat
Machine learning and big-data-in-physics 13970711-Dr. Amin Nezarat
 
Introduction to matlab
Introduction to matlabIntroduction to matlab
Introduction to matlab
 
Repository pattern
Repository patternRepository pattern
Repository pattern
 
Bi and data mining with Oracle
Bi and data mining with OracleBi and data mining with Oracle
Bi and data mining with Oracle
 

Sql tuning