በእኔ አስተያየት፣ ካለፉት ልቀቶች በተለየ፣ PostgreSQL 12 አንድ ወይም ሁለት አብዮታዊ ባህሪያትን አልያዘም (እንደ ክፍፍል ወይም የመጠይቅ ትይዩነት)። የ PostgreSQL 12 ዋና ባህሪ የበለጠ መረጋጋት ነው ብዬ አንድ ጊዜ ቀልጄ ነበር። የንግድዎን ወሳኝ ውሂብ ሲያስተዳድሩ የሚፈልጉት ያ አይደለም?
ግን PostgreSQL 12 በዚህ ብቻ የተገደበ አይደለም፡ በአዲስ ባህሪያት እና ማሻሻያዎች አማካኝነት አፕሊኬሽኖች በተሻለ ሁኔታ ይሰራሉ ማድረግ ያለብዎት ነገር ማሻሻል ብቻ ነው!
(እሺ፣ ምናልባት ኢንዴክሶችን እንደገና ገንባ፣ ግን በዚህ ልቀት ላይ እንደለመድነው አስፈሪ አይደለም።)
PostgreSQLን ማሻሻል እና አላስፈላጊ ምልክቶች ሳይኖር ወዲያውኑ ጉልህ የሆኑ ማሻሻያዎችን መዝናናት ጥሩ ነው። ከበርካታ አመታት በፊት፣ ከPostgreSQL 9.4 ወደ PostgreSQL 10 ማሻሻያውን ተንትኜ አፕሊኬሽኑ ምን ያህል ፈጣን እንደሆነ በ PostgreSQL 10 ውስጥ በተሻሻለው የጥያቄ ትይዩ ምክንያት አየሁ። እና ከሁሉም በላይ፣ ምንም ማለት ይቻላል ከእኔ የሚፈለግ ነገር አልነበረም (የውቅረት መለኪያውን ብቻ ያዘጋጁ) max_parallel_workers
).
እስማማለሁ፣ አፕሊኬሽኖች ከተሻሻሉ በኋላ ወዲያውኑ በተሻለ ሁኔታ ሲሰሩ ምቹ ነው። እና ተጠቃሚዎችን ለማስደሰት በጣም ጠንክረን እንሞክራለን፣ ምክንያቱም PostgreSQL ብዙ እና ብዙ አላቸው።
እና ወደ PostgreSQL 12 ቀላል ማሻሻል እንዴት ደስተኛ ያደርገዎታል? አሁን እነግራችኋለሁ።
ዋና የመረጃ ጠቋሚ ማሻሻያዎች
መረጃ ጠቋሚ ከሌለ የመረጃ ቋቱ ሩቅ አይሄድም። ሌላ እንዴት በፍጥነት መረጃ ማግኘት ይችላሉ? መሰረታዊ የ PostgreSQL መረጃ ጠቋሚ ስርዓት ይባላል
ኦፕሬተሩን ብቻ እንጠቀማለን CREATE INDEX ON some_table (some_column)
, እና PostgreSQL ያለማቋረጥ እሴቶችን እያስገባን፣ እያዘመንን እና እየሰረዝን መረጃ ጠቋሚውን ወቅታዊ ለማድረግ ጥሩ ስራ ይሰራል። ሁሉም ነገር በራሱ ልክ እንደ አስማት ይሠራል.
ግን የ PostgreSQL ኢንዴክሶች አንድ ችግር አለባቸው - እነሱ
PostgreSQL 12 የቢ-ዛፍ ኢንዴክሶችን አፈፃፀም በእጅጉ ያሻሽላል እና እንደ TPC-C ባሉ ሙከራዎች የተደረጉ ሙከራዎች እንደሚያሳዩት ቦታ አሁን ጥቅም ላይ ይውላል ፣በአማካኝ 40% ያነሰ። አሁን ያነሰ ጊዜ የምናጠፋው የቢ-ዛፍ ኢንዴክሶችን (ይህም የመጻፍ ስራዎችን) ብቻ ሳይሆን መረጃን በማውጣት ላይ ነው, ምክንያቱም ኢንዴክሶች በጣም ትንሽ ስለሆኑ.
ሠንጠረኞቻቸውን በንቃት የሚያዘምኑ መተግበሪያዎች በተለምዶ OLTP መተግበሪያዎች ናቸው (
አንዳንድ የማሻሻያ ስልቶች እነዚህን ጥቅሞች ለመጠቀም የቢ-ዛፍ ኢንዴክሶችን እንደገና እንዲገነቡ ይፈልጋሉ (ለምሳሌ፡-
PostgreSQL 12 በጠቋሚ መሠረተ ልማት ላይ ሌሎች ማሻሻያዎች አሉት። አንዳንድ አስማት የነበረበት ሌላ ነገር -
PostgreSQL 12 መረጃ ጠቋሚ በሚገነባበት ጊዜ በGIST፣ GIN እና SP-GiST ኢንዴክሶች የሚፈጠሩትን የWAL መዛግብት ቀንሷል። ይህ በርካታ ተጨባጭ ጥቅሞች አሉት፡ የWAL መዛግብት ትንሽ የዲስክ ቦታ ይይዛሉ፣ እና ውሂቡ በፍጥነት ይጫወታሉ፣ ለምሳሌ ውድቀት በሚከሰትበት ጊዜ ወይም በጊዜ ማግኛ። በመተግበሪያዎችዎ ውስጥ እንደዚህ ያሉ ኢንዴክሶችን የሚጠቀሙ ከሆነ (ለምሳሌ በፖስትጂአይኤስ ላይ የተመሰረቱ ጂኦስፓሻል አፕሊኬሽኖች የጂኤስቲ ኢንዴክስን በብዛት ይጠቀማሉ) ይህ በእርስዎ በኩል ያለ ምንም ጥረት አፈጻጸምን በእጅጉ የሚያሻሽል ባህሪ ነው።
መከፋፈል - ትልቅ ፣ የተሻለ ፣ ፈጣን
PostgreSQL 10 አስተዋወቀ
በ PostgreSQL 12 ውስጥ, የመከፋፈያ ስርዓቱ አፈፃፀም በከፍተኛ ሁኔታ ተሻሽሏል, በተለይም በሺዎች የሚቆጠሩ ክፍሎች በሠንጠረዥ ውስጥ ካሉ. ለምሳሌ፣ መጠይቁ በሺዎች ከሚቆጠሩት ጋር በሰንጠረዥ ውስጥ ጥቂት ክፍሎችን ብቻ የሚነካ ከሆነ፣ በጣም በፍጥነት ይሰራል። የአፈጻጸም ማሻሻያዎች በእነዚህ አይነት መጠይቆች ብቻ የተገደቡ አይደሉም። እንዲሁም ብዙ ክፍልፋዮች ባሉት ጠረጴዛዎች ላይ የ INSERT ስራዎች ምን ያህል ፈጣን እንደሆኑ ያስተውላሉ።
በመጠቀም ውሂብ መጻፍ
እነዚህ ጥቅማጥቅሞች ለ PostgreSQL ትላልቅ የውሂብ ስብስቦችን እንዲያከማች እና እነሱን ለማምጣት ቀላል ያደርጉታል። እና በእርስዎ በኩል ምንም ጥረት የለም. አፕሊኬሽኑ ብዙ ክፍሎች ካሉት ለምሳሌ የጊዜ ተከታታይ መረጃዎችን ይጽፋል ቀላል ማሻሻያ ስራውን በእጅጉ ያሻሽላል።
እና ይህ በትክክል የማሻሻያ እና የደስታ ማሻሻያ ባይሆንም በ PostgreSQL 12 ውስጥ ከመከፋፈል ጋር መስራት አስደሳች እንዲሆን የተከፋፈሉ ጠረጴዛዎችን የሚያመለክቱ የውጭ ቁልፎችን መፍጠር ይችላሉ።
ከጥያቄዎች ጋር በጣም ተሻሽሏል።
መቼ
ብዙውን ጊዜ የ SQL ጀማሪዎች CTEsን መጠቀም እንደሚወዱ አስተውያለሁ፡ በተወሰነ መንገድ ከፃፏቸው የግድ አስፈላጊ ፕሮግራም እየፃፉ እንደሆነ ይሰማዎታል። በግሌ፣ ለመዞር እነዚህን ጥያቄዎች እንደገና መጻፍ ወደድኩ። ያለ CTE እና ምርታማነትን ይጨምሩ. አሁን ሁሉም ነገር የተለየ ነው።
PostgreSQL 12 ያለ የጎንዮሽ ጉዳቶች አንድን የተወሰነ የ CTE አይነት መስመር ውስጥ እንዲያስገቡ ይፈቅድልዎታል (SELECT
) በጥያቄው መጨረሻ አካባቢ አንድ ጊዜ ብቻ ጥቅም ላይ ይውላል። እንደገና የጻፍኳቸውን የCTE መጠይቆች ከተከታተልኩ፣ አብዛኛዎቹ በዚህ ምድብ ውስጥ ይወድቃሉ። ይህ ገንቢዎች አሁን ፈጣን የሆነ ግልጽ ኮድ እንዲጽፉ ያግዛቸዋል።
ከዚህም በላይ PostgreSQL 12 የ SQL አፈፃፀምን በራሱ ያመቻቻል, ምንም ነገር ማድረግ የለብዎትም. ምናልባት እንደዚህ አይነት መጠይቆችን አሁን ማመቻቸት ባላስፈልገኝም፣ PostgreSQL በጥያቄ ማመቻቸት ላይ መስራቱን መቀጠሉ በጣም ጥሩ ነው።
ልክ-በ-ጊዜ (JIT) - አሁን ነባሪው
በ PostgreSQL 12 ስርዓቶች ከድጋፍ ጋር
JIT በነባሪነት በ PostgreSQL 12 ውስጥ የነቃ በመሆኑ አፈፃፀሙ በራሱ ይሻሻላል፣ ነገር ግን አፕሊኬሽኑን በ PostgreSQL 11 ውስጥ ለመፈተሽ ሀሳብ አቀርባለሁ፣ JIT በተጀመረበት፣ የጥያቄ አፈጻጸምን ለመለካት እና የሆነ ነገር ማስተካከል የሚያስፈልገው ከሆነ ለማየት።
ግን ስለ ቀሪዎቹ የ PostgreSQL 12 አዲስ ባህሪያትስ?
PostgreSQL 12 መደበኛ የSQL/JSON መስመር አገላለጾችን በመጠቀም የJSON መረጃን ከመፈተሽ ጀምሮ እስከ ባለ ብዙ ደረጃ ማረጋገጫ ድረስ ብዙ አዳዲስ ባህሪያት አሉት። clientcert=verify-full
፣ የተፈጠሩ አምዶች እና ሌሎችም። ለተለየ ልጥፍ በቂ ነው።
ልክ እንደ PostgreSQL 10፣ PostgreSQL 12 ከማሻሻያው በኋላ አጠቃላይ አፈፃፀሙን ያሻሽላል። እርግጥ ነው፣ የራስህ መንገድ ሊኖርህ ይችላል - ማሻሻያዎችን ከማስቻልህ በፊት ማመልከቻውን በተመሳሳይ ሁኔታ በአምራችነት ፈትነዉ፣ በ PostgreSQL 10 እንዳደረግኩት። PostgreSQL 12 ከጠበቅኩት በላይ የተረጋጋ ቢሆንም እንኳን አፕሊኬሽኑን ለመፈተሽ ሰነፍ አትሁን። በደንብ, ወደ ምርት ከመልቀቃቸው በፊት.
ምንጭ: hab.com