16 पॉइंट द्वारा xguru 2024-04-15 | 3 टिप्पणियां | WhatsApp पर शेयर करें
  • क्वेरी परफ़ॉर्मेंस बेहतर करने के लिए इंडेक्स सुझाने वाला PostgreSQL एक्सटेंशन, Supabase द्वारा
  • index_advisor() फ़ंक्शन में क्वेरी देने पर startup/total के लिए पहले/बाद की लागत और इंडेक्स बनाने के लिए SQL DDL लौटाता है
    • चलाना: select * from index_advisor('select book.id from book where title = $1');
    • रिटर्न: {"CREATE INDEX ON public.book USING btree (title)"}
  • जटिल क्वेरी के लिए कई इंडेक्स creation statements भी लौटा सकता है
  • generic parameters का समर्थन ($1, $2, ..)
  • Materialized View का समर्थन
  • view के पीछे छिपी tables/columns की पहचान कर सकता है

3 टिप्पणियां

 
savvykang 2024-04-15

फ़िलहाल यह सिर्फ़ एकल-column btree index की सिफारिश करता है। अगर query conditions ज़्यादा जटिल हों या आप full text search कर रहे हों, तो इसका उपयोग नहीं किया जा सकता https://supabase.com/docs/guides/…

 
savvykang 2024-04-16

कहा जाता है कि जब query conditions जटिल हों, तो multi-column index की जगह कई single-column indexes इस्तेमाल किए जाते हैं, लेकिन लगता है कि वे बिल्कुल वही तरीके से काम नहीं करते। या फिर ऐसी स्थिति भी हो सकती है जहाँ multi-column index और कई single-column indexes को एक साथ इस्तेमाल करना सबसे अच्छा हो

https://www.postgresql.org/docs/current/indexes-bitmap-scans.html

 
xguru 2024-04-15

Hacker News प्रतिक्रियाएँ

  • अगर टेबल में वास्तव में स्टोर किए गए डेटा के आधार पर अधिक कुशल data type सुझाने वाली सुविधा हो तो अच्छा होगा
  • ऐसा database हो जो slow query को अपने आप detect करे और ज़रूरी index बना दे
    • अगर application में load test चलाएँ, database को कॉल करें और queries इकट्ठी करें, फिर database खुद को अपने आप tune कर ले
  • यह नहीं पता था कि HypoPG, RDS में एक साल से ज़्यादा समय से उपलब्ध था
  • 3 या उससे ज़्यादा join में चाहेंगे कि किसी relation पर index इस्तेमाल हो, लेकिन अगर CTE पर limit न लगाएँ तो Postgres हर join को parallel में चलाने की कोशिश करता है और बहुत सारी rows को join करने लगता है
    • आजकल query planner से जूझते-जूझते लग रहा है कि pg से रिश्ता टूट जाएगा
  • CockroachDB में ऐसा मिलता-जुलता feature built-in है
    • यह मौजूदा slow queries को लेकर बेहतर query plan के लिए virtual index का विश्लेषण करता है और सुझाव देता है
    • इसे console UI में एक क्लिक से जोड़ा जा सकता है
  • Presto या Spark जैसे distributed query engine, index की जगह partition और bucket का इस्तेमाल करके इसी तरह का काम करते हैं
    • इससे compute, समय और लागत कम हो सकती है
  • यह vanilla Pl/PgSQL में लिखा गया है, इसलिए सुविधाजनक है
    • index_advisor(text) function को session में कॉपी करके hard-coding और heuristics शुरू कर देने का मन होता है
    • ज़्यादातर meaningful extensions के लिए compile, install, create और drop करना पड़ता है
  • यह TiDB के TiAdvisor जैसा है और virtual approach का इस्तेमाल करता है
  • pghero इस्तेमाल कर रहा हूँ, और यह यह सुविधा GUI के रूप में देता है
  • लगता नहीं कि यह जुड़े हुए trade-off पर कोई विचार या insight देता है
    • base extension HypoPG शायद उस डेटा के बारे में statistics इकट्ठा नहीं करता जो query planner को प्रभावित करता है
  • जिज्ञासा है कि क्या यह inherited parent और child tables को पहचानता है