885 subscribers
44 photos
3 videos
1 file
1.41K links
🕸 Database Academy

حمایت مالی:
https://www.coffeete.ir/mrbardia72

ادمین:
@mrbardia72
Download Telegram
این سایت نتیجه تحلیلی که از طریق postgresql planner با دستور explain گرفتید رو بصورت تصویری و قابل فهمتر نشون میده تا بتونید سرعت query هاتون رو بهتر کنید.

#postgresql #explain #query #planner #deep #optimizer #optiimize #database

https://www.pgexplain.dev
👏1
🔵 عنوان مقاله
A SQL Heuristic: ORs Are Expensive (10 minute read)

🟢 خلاصه مقاله:
OR در SQL اغلب باعث کندی می‌شود، چون بسیاری از query plannerها برای OR بین ستون‌های مختلف به sequential scan یا index merge/bitmap OR متوسل می‌شوند، در حالی‌که AND به‌طور طبیعی با compound indexها جور است. یک راه مؤثر، بازنویسی OR به چند کوئریِ ایندکس‌پسند و ترکیب آن‌ها با UNION/UNION ALL است تا هر شاخه از ایندکس مناسب خود استفاده کند و زمان اجرا گاهی تا ۱۰۰ برابر کاهش یابد. راه‌حل پایدارتر، بازطراحی schema با extension tables است تا به‌جای OR روی چند خاصیتِ پراکنده، با JOIN به جدول‌های باریک و ایندکس‌شده دسترسی پیدا کنید. همیشه با EXPLAIN/EXPLAIN ANALYZE اندازه‌گیری کنید؛ در جداول کوچک یا OR روی یک ستون (مشابه IN) شاید مشکل نداشته باشید، اما به‌طور کلی: AND را با compound index هماهنگ کنید، از OR بین ستون‌ها بپرهیزید، در صورت لزوم از UNION بهره ببرید و برای مسیرهای پرتردد، بازطراحی schema را در نظر بگیرید.

#SQL #DatabasePerformance #QueryOptimization #Indexes #PostgreSQL #MySQL #DataModeling #EXPLAIN

🟣لینک مقاله:
https://ethanseal.com/articles/ors-are-expensive?utm_source=tldrdata


👑 @Database_Academy
🔵 عنوان مقاله
date and timestamp versions of random(min, max)

🟢 خلاصه مقاله:
این مقاله به دو به‌روزرسانی کاربردی اشاره می‌کند: افزوده‌شدن نسخه‌های مبتنی‌بر نوع‌های date و timestamp برای تابع random(min, max) و نمایش برآوردهای برنامه‌ریز برای گره Memoize در خروجی EXPLAIN. با پشتیبانی جدید random(min, max)، می‌توان مقادیر تصادفی از نوع تاریخ یا زمان را مستقیماً در یک بازه مشخص تولید کرد؛ کاری مفید برای تولید داده‌ی آزمایشی، شبیه‌سازی بار کاری و ناشناس‌سازی داده‌های زمانی بدون نیاز به تبدیل‌های اضافی. همچنین، EXPLAIN اکنون برآوردهای مربوط به Memoize را نشان می‌دهد تا روشن‌تر شود چرا برنامه‌ریز از این گره استفاده کرده و تأثیر تخمینی کش و هزینه‌ها چیست؛ موضوعی که به عیب‌یابی و بهینه‌سازی پرس‌وجوها کمک می‌کند.

#Databases #SQL #EXPLAIN #Memoize #Random #Date #Timestamp #Performance

🟣لینک مقاله:
https://postgresweekly.com/link/175090/web


👑 @Database_Academy
👍1
🔵 عنوان مقاله
memoize planner estimates in EXPLAIN.

🟢 خلاصه مقاله:
**
این مطلب که در شماره اخیر Golang Weekly معرفی شده، درباره memoize کردن برآوردهای planner در EXPLAIN است تا تحلیل پرس‌وجوها سریع‌تر و قابل‌اتکاتر شود. ایده اصلی این است که تخمین‌های میانی (مثل cardinality و هزینه‌ها) بر اساس نسخه نرمال‌شده‌ی بخش‌های پرس‌وجو و ورودی‌های اثرگذار (آمار جداول، وضعیت schema، و تنظیمات planner) ذخیره شوند و در اجرای‌های بعدی EXPLAIN دوباره استفاده شوند. نتیجه: کاهش هزینه محاسبات تکراری، ثبات بیشتر خروجی‌ها، و مقایسه آسان‌تر تغییرات.

در پیاده‌سازی با Go می‌توان با cacheهای سبک، هش‌کردن پرس‌وجوی نرمال‌شده و وضعیت کاتالوگ، و قلاب‌های ابطال (invalidation) قابل‌تنظیم به این هدف رسید؛ این رویکرد برای ابزارهای توسعه، CI و بنچمارک‌ها سودمند است. البته چالش‌ها هم مهم‌اند: کهنگی داده‌های cache با تغییر آمار یا تنظیمات، ضرورت سیاست‌های ابطال شفاف، ترجیحاً cache کردن فقط برآوردها (نه کل plan)، ارائه نشانگرهای hit/miss در خروجی EXPLAIN، و تعیین دامنه و سقف اندازه cache (مثلاً در سطح session).

به طور خلاصه، memoize کردن برآوردهای planner در EXPLAIN چرخه‌های تحلیل را تسریع و نتایج را پایدارتر می‌کند، به شرط آنکه مرزهای cache و سیاست‌های ابطال به‌خوبی مدیریت شوند.

#Golang #Go #EXPLAIN #Database #QueryPlanner #Memoization #Performance #Optimization

🟣لینک مقاله:
https://postgresweekly.com/link/175091/web


👑 @Database_Academy
🔵 عنوان مقاله
EXPLAIN Prettier (or Post-Processing Query Plans)

🟢 خلاصه مقاله:
توضیحات مربوط به EXPLAIN، چه در زمان‌های عادی و چه در موارد خاص، همیشه ممکن است کمی چالش‌برانگیز و پیچیده باشد. این خروجی می‌تواند برای کاربران چالش‌هایی ایجاد کند، به ویژه زمانی که به مبانی و جزئیات آن نیاز دارند. علاوه بر این، وضعیت‌هایی وجود دارد که نتیجه‌های EXPLAIN در دستگاه‌ها و نسخه‌های مختلف پایگاه داده تغییرات ظریفی را نشان می‌دهند، که ممکن است باعث سردرگمی شود.

در این زمینه، آندری به معرفی ابزار «explain_prettier» می‌پردازد، که با هدف ساده‌سازی و تمیز کردن خروجی EXPLAIN طراحی شده است. این ابزار با حذف اطلاعات غیرضروری و بخش‌های اضافی، نتیجه‌های قابل فهم‌تر و واضح‌تری را ارائه می‌دهد و خوانایی آن‌ها را به شکل قابل توجهی افزایش می‌دهد. به این صورت، کاربران می‌توانند به راحتی تحلیل‌های مورد نیاز خود را انجام دهند و تفاوت‌های ظریف در خروجی‌ها را بهتر درک کنند.

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

#پایگاه_داده #تحلیل_پایگاه_داده #EXPLAIN #برنامه‌نویسی

🟣لینک مقاله:
https://www.pgedge.com/blog/explain-prettier-or-post-processing-query-plans-in-postgres


👑 @Database_Academy
🔥1