በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

እ.ኤ.አ. በ 2016 መጀመሪያ ላይ የሪፖርቱን ግልባጭ ለማንበብ ሀሳብ አቀርባለሁ በአንድሬ ሳልኒኮቭ “በድህረ-ግሬስክ ውስጥ እብጠትን የሚያስከትሉ መተግበሪያዎች ውስጥ የተለመዱ ስህተቶች”

በዚህ ዘገባ ውስጥ የአፕሊኬሽን ኮድን በመንደፍ እና በመፃፍ ደረጃ ላይ በሚከሰቱ አፕሊኬሽኖች ውስጥ ዋና ዋና ስህተቶችን እመረምራለሁ ። እና በ Postgresql ውስጥ ወደ እብጠት የሚወስዱትን ስህተቶች ብቻ እወስዳለሁ። እንደ ደንቡ ፣ ይህ በአጠቃላይ የስርዓትዎ አፈፃፀም መጨረሻ መጀመሪያ ነው ፣ ምንም እንኳን መጀመሪያ ላይ ለዚህ ምንም ቅድመ ሁኔታ አልታየም።

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

ሁሉንም ሰው እንኳን ደህና መጣችሁ ደስ ብሎኛል! ይህ ዘገባ ከባልደረባዬ እንደቀደመው ቴክኒካል አይደለም። ይህ ንግግር ያነጣጠረው ከኋላ-መጨረሻ የስርዓት ገንቢዎች ላይ ነው በዋነኛነት ብዙ ቁጥር ያላቸው ደንበኞች ስላለን። እና ሁሉም ተመሳሳይ ስህተቶችን ያደርጋሉ. ስለእነሱ እነግራችኋለሁ. እነዚህ ስህተቶች ወደ ምን ገዳይ እና መጥፎ እንደሚመሩ እገልጻለሁ.

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

ለምንድነው ስህተቶች የሚደረጉት? በሁለት ምክንያቶች ይከናወናሉ-በነሲብ, ምናልባት በመሠረቱ እና በመተግበሪያው መካከል ባለው ደረጃ እንዲሁም በመሠረቱ እራሱ ውስጥ የሚከሰቱ አንዳንድ ስልቶችን ካለማወቅ ሊሰራ ይችላል.

ነገሮች እንዴት እንደተበላሹ የሚያሳዩ አስፈሪ ምስሎችን የያዘ ሶስት ምሳሌዎችን እሰጥዎታለሁ። እዚያ የሚከሰተውን ዘዴ በአጭሩ እገልጻለሁ. እና እንዴት እነሱን መቋቋም እንደሚቻል, በተከሰቱበት ጊዜ እና ስህተቶችን ለመከላከል ምን ዓይነት የመከላከያ ዘዴዎችን መጠቀም እንደሚቻል. ስለ ረዳት መሳሪያዎች እነግራችኋለሁ እና ጠቃሚ አገናኞችን እሰጣለሁ.

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

ሁለት ጠረጴዛዎች ያሉኝን የሙከራ ዳታቤዝ ተጠቀምኩ። አንድ ሳህን ከደንበኛ መለያዎች ጋር፣ ሌላኛው በእነዚህ መለያዎች ላይ ኦፕሬሽኖች ያሉት። እና ከተወሰነ ጊዜ ጋር፣ በእነዚህ ሂሳቦች ላይ ያሉትን ቀሪ ሂሳቦች እናዘምነዋለን።

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

የጠፍጣፋው የመጀመሪያ መረጃ: በጣም ትንሽ ነው, 2 ሜባ. ለዳታቤዝ እና በተለይም ለጠፍጣፋው የምላሽ ጊዜ እንዲሁ በጣም ጥሩ ነው። እና በትክክል ጥሩ ጭነት - በሰከንድ 2 ክዋኔዎች በጠፍጣፋው ላይ።

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

እና በዚህ ዘገባ በኩል ምን እየሆነ እንዳለ ግልጽ እንዲሆን ግራፎችን አሳይሃለሁ። ሁልጊዜ ከግራፎች ጋር 2 ስላይዶች ይኖራሉ። የመጀመሪያው ስላይድ በአጠቃላይ በአገልጋዩ ላይ የሚከሰተው ነው.

እና በዚህ ሁኔታ, እኛ በእርግጥ ትንሽ ሳህን እንዳለን እናያለን. መረጃ ጠቋሚው በ 2 ሜባ ትንሽ ነው. ይህ በግራ በኩል ያለው የመጀመሪያው ሰንጠረዥ ነው.

በአገልጋዩ ላይ ያለው አማካይ የምላሽ ጊዜ እንዲሁ የተረጋጋ፣ ትንሽ ነው። ይህ የላይኛው ቀኝ ግራፍ ነው.

የታችኛው ግራ ግራፍ ረጅሙ ግብይቶች ነው። ግብይቶች በፍጥነት እየተጠናቀቁ መሆናቸውን ማየት እንችላለን። እና አውቶቫክዩም እስካሁን እዚህ አይሰራም, ምክንያቱም - የጅምር-ሙከራ ነበር. ያኔ ይጠቅመናል እና ይጠቅመናል።

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

ሁለተኛው ስላይድ ምንጊዜም ለሙከራ ሳህን ይወሰናል. በዚህ ሁኔታ የደንበኛውን የሂሳብ ሒሳብ ያለማቋረጥ እናዘምነዋለን። እና ለዝማኔ ክዋኔው አማካኝ የምላሽ ጊዜ በጣም ጥሩ እንደሆነ እናያለን ከአንድ ሚሊሰከንድ ያነሰ። የማቀነባበሪያው ሃብቶች (ይህ የላይኛው ቀኝ ግራፍ ነው) እንዲሁ በእኩል እና በጣም ትንሽ ሲበሉ እናያለን።

የታችኛው ቀኝ ግራፍ ከማዘመንዎ በፊት የምንፈልገውን መስመር ለመፈለግ ምን ያህል ኦፕሬቲንግ እና ዲስክ ማህደረ ትውስታ እንዳለፍን ያሳያል። እና መጀመሪያ ላይ እንዳልኩት በጠፍጣፋው ላይ ያለው የኦፕሬሽኖች ብዛት በሴኮንድ 2 ነው።

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

እና አሁን አሳዛኝ ነገር አለን። በሆነ ምክንያት, ረዥም የተረሳ ግብይት ይከሰታል. ምክንያቶቹ ብዙውን ጊዜ ሁሉም እገዳዎች ናቸው-

  • በጣም ከተለመዱት ውስጥ አንዱ በመተግበሪያ ኮድ ውስጥ የውጭ አገልግሎት ማግኘት መጀመራችን ነው። እና ይህ አገልግሎት መልስ አይሰጠንም. ማለትም ግብይቱን ከፍተን በመረጃ ቋቱ ላይ ለውጥ አደረግን እና ከማመልከቻው ላይ ደብዳቤ ለማንበብ ወይም በመሠረተ ልማት ውስጥ ወደ ሌላ አገልግሎት ሄድን እና በሆነ ምክንያት መልስ አይሰጠንም ። እናም የእኛ ክፍለ ጊዜ በግዛት ውስጥ ተንጠልጥሏል - መቼ እንደሚፈታ አይታወቅም.
  • ሁለተኛው ሁኔታ በሆነ ምክንያት በእኛ ኮድ ውስጥ ልዩ ሁኔታ ሲከሰት ነው። እና የግብይቱን መዝጊያ በቀር አላስኬድነውም። እና ከተከፈተ ግብይት ጋር የተንጠለጠለበት ክፍለ ጊዜ አግኝተናል።
  • እና የመጨረሻው ደግሞ በጣም የተለመደ ነው. ይህ ደካማ ጥራት ኮድ ነው. አንዳንድ ማዕቀፎች ግብይት ይከፍታሉ። ተንጠልጥሏል፣ እና እርስዎ እንዲሰቅሉት በማመልከቻው ላይ ላያውቁ ይችላሉ።

እንዲህ ያሉት ነገሮች ወዴት ያመራሉ?

የእኛ ጠረጴዛዎች እና ጠቋሚዎች በአስደናቂ ሁኔታ ማበጥ መጀመራቸውን እውነታ. ይህ በትክክል ተመሳሳይ የሆድ እብጠት ውጤት ነው። ለመረጃ ቋቱ ይህ በመረጃ ቋቱ ምላሽ ጊዜ ውስጥ በጣም ስለታም ጭማሪ ስለሚኖረን በመረጃ ቋቱ አገልጋይ ላይ ያለው ጭነት ይጨምራል። እናም በዚህ ምክንያት የእኛ መተግበሪያ ይጎዳል. ምክንያቱም በኮድዎ ውስጥ ለዳታቤዝ ጥያቄ 10 ሚሊ ሰከንድ፣ በሎጂክዎ ላይ 10 ሚሊ ሰከንድ ካሳለፉ፣ የእርስዎ ተግባር 20 ሚሊ ሰከንድ ሰርቷል። እና አሁን የእርስዎ ሁኔታ በጣም ያሳዝናል.

እና የሚሆነውን እንይ። የታችኛው ግራ ግራፍ ረጅም ረጅም ግብይት እንዳለን ያሳያል። እና በላይኛው ግራ ግራፍ ላይ ከተመለከትን, የጠረጴዛው መጠን ከሁለት ሜጋባይት ወደ 300 ሜጋ ባይት እንደዘለለ እናያለን. በተመሳሳይ ጊዜ, በሰንጠረዡ ውስጥ ያለው የውሂብ መጠን አልተቀየረም, ማለትም, በቂ መጠን ያለው ቆሻሻ አለ.

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

ከአማካይ የአገልጋይ ምላሽ ጊዜ አንፃር ያለው አጠቃላይ ሁኔታ እንዲሁ በብዙ ትዕዛዞች ተለውጧል። ማለትም፣ በአገልጋዩ ላይ ያሉ ሁሉም ጥያቄዎች ሙሉ በሙሉ ማሽቆልቆል ጀመሩ። እና በተመሳሳይ ጊዜ ፣ ​​አንድ ነገር ለማድረግ እና ሀብቶችን ለመመገብ የሚሞክሩ በአውቶቫክዩም ፊት ውስጥ የውስጥ የ Postgres ሂደቶች ተጀመሩ።

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

የእኛ ሳህን ምን ይሆናል? ተመሳሳይ. በጡባዊው ላይ ያለው አማካይ የምላሽ ጊዜ በርካታ የክብደት ትዕዛዞችን ዘሎ። በተለይ ከተበላሹ ሀብቶች አንፃር ፣ ከዚያ በማቀነባበሪያው ላይ ያለው ጭነት በከፍተኛ ሁኔታ እንደጨመረ እናያለን። ይህ የላይኛው ቀኝ ግራፍ ነው. እና ጨምሯል። ይህ የታችኛው ቀኝ ግራፍ ነው. እናም በውጤቱም ፣ በሴኮንድ የሚደረጉ ጥሪዎች በጣም መውደቅ ጀመሩ ፣ ምክንያቱም የመረጃ ቋቱ ተመሳሳይ የጥያቄዎችን ብዛት ለማስኬድ ጊዜ የለውም።

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

ወደ ሕይወት መመለስ አለብን። ወደ ኢንተርኔት እንወጣለን እና ረጅም ግብይቶች ወደ ችግር እንደሚመሩ እንረዳለን። ይህንን ግብይት አግኝተን እንገድላለን። እና ሁሉም ነገር ጥሩ እየሆነልን ነው። ሁሉም ነገር እንደ ሁኔታው ​​ይሠራል.

ተረጋጋን, ነገር ግን ከጥቂት ጊዜ በኋላ ማመልከቻው ከድንገተኛ አደጋ በፊት እንደነበረው አይሰራም. ጥያቄዎች በዝግታ እና በጣም በዝግታ በተመሳሳይ መልኩ ይከናወናሉ። በተለይ በእኔ ምሳሌ ከአንድ ተኩል እስከ ሁለት ጊዜ ቀርፋፋ። በአገልጋዩ ላይ ያለው ሸክም ከአደጋው በፊት ከነበረው ከፍ ያለ ነው።

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

እና ጥያቄው: "በዚህ ጊዜ በመሠረቱ ላይ ምን ይሆናል?". እና ከመሠረቱ ጋር የሚከተለው ሁኔታ አለ. በግብይቱ ገበታ ላይ፣ እንደቆመ እና በእርግጥ የረጅም ጊዜ ግብይቶች እንደሌሉ ማየት ይችላሉ። ነገር ግን በአደጋው ​​ወቅት የጠፍጣፋው ስፋት በከፍተኛ ሁኔታ አድጓል። እና ከዚያ ጊዜ ጀምሮ አልቀነሰም. በመሠረቱ ላይ ያለው አማካይ ጊዜ ተረጋግቷል. እና መልሶች ለእኛ ተቀባይነት ካለው ፍጥነት ጋር በበቂ ሁኔታ የሚሄዱ ይመስላሉ። አውቶቫክዩም የበለጠ ንቁ ሆነ እና በጡባዊው አንድ ነገር ማድረግ ጀመረ ፣ ምክንያቱም ተጨማሪ መረጃን አካፋ ማድረግ አለበት።

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

በተለይም፣ በፈተናው የውጤት ሰሌዳ ላይ፣ ሚዛኖቹን በምንቀይርበት፡ የጥያቄው ምላሽ ጊዜ ወደ መደበኛው የተመለሰ ይመስላል። ግን በእውነቱ አንድ ጊዜ ተኩል ከፍ ያለ ነው.

እና በማቀነባበሪያው ላይ ባለው ጭነት ፣ በአቀነባባሪው ላይ ያለው ጭነት ከብልሽቱ በፊት ወደሚፈለገው እሴት እንዳልተመለሰ እናያለን። እና እዚያ ያሉት ምክንያቶች ከታች በቀኝ ግራፍ ላይ ይገኛሉ. የተወሰነ መጠን ያለው ማህደረ ትውስታ ፍለጋ እንዳለ ማየት ይቻላል. ማለትም፣ የሚፈለገውን መስመር ለመፈለግ፣ በማይጠቅም ውሂብ ስንለይ የመረጃ ቋቱን አገልጋዩን እናጠፋለን። የግብይቶች ብዛት በሰከንድ ተረጋግቷል።

በአጠቃላይ, ጥሩ, ግን ሁኔታው ​​ከነበረው የከፋ ነው. ከዚህ ዳታቤዝ ጋር አብሮ በሚሰራው መተግበሪያችን የተነሳ የመረጃ ቋቱን በግልፅ ማበላሸት ነው።

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

እና እዚያ ምን እየተፈጠረ እንዳለ ለመረዳት, በቀድሞው ዘገባ ላይ ካልነበሩ, አሁን ትንሽ ጽንሰ-ሐሳብ. ስለ ውስጣዊ ሂደት ጽንሰ-ሐሳብ. ለምን autovacuum እና ምን ያደርጋል?

ለግንዛቤ በጥሬው በአጭሩ። በተወሰነ ጊዜ ጠረጴዛ አለን. በጠረጴዛው ውስጥ ረድፎች አሉን. እነዚህ መስመሮች ንቁ, ቀጥታ ሊሆኑ ይችላሉ, አሁን እንፈልጋለን. በሥዕሉ ላይ በአረንጓዴ ምልክት ይደረግባቸዋል. እና ቀደም ብለው የተሰሩ, የተሻሻሉ, አዲስ ግቤቶች በእነሱ ላይ የታዩ የመጨረሻ መስመሮች አሉ. እና ለዳታቤዝ ምንም ሳቢ እንዳልሆኑ ምልክት ተደርጎባቸዋል። ነገር ግን በፖስትግሬስ ባህሪያት ምክንያት በጠረጴዛው ውስጥ ይተኛሉ.

አውቶቫክዩም ለምን አስፈለገ? አውቶቫክዩም የሆነ ጊዜ ይመጣል፣ ዳታቤዙን ደውሎ "እባክዎ አሁን በመረጃ ቋቱ ውስጥ የተከፈተውን በጣም ጥንታዊ ግብይት መታወቂያ ስጡኝ" ሲል ይጠይቃል። የመረጃ ቋቱ ይህንን መታወቂያ ይመልሳል። እና አውቶቫክዩም በእሱ ላይ ተመርኩዞ በጠረጴዛው ውስጥ ባሉት መስመሮች ውስጥ ያልፋል. እና አንዳንድ መስመሮች በጣም በቆዩ ግብይቶች እንደተቀየሩ ካየ፣ አዲስ መረጃን እዚያ በመፃፍ ወደፊት ልንጠቀምባቸው የምንችላቸው መስመሮች እንደሆኑ ምልክት የማድረግ መብት አለው። ይህ የጀርባ ሂደት ነው።

በዚህ ጊዜ ከመረጃ ቋቱ ጋር መስራታችንን እንቀጥላለን, በሰንጠረዡ ውስጥ አንዳንድ ለውጦችን እንቀጥላለን. እና እንደገና ልንጠቀምባቸው በሚችሉት በእነዚህ መስመሮች ላይ, አዲስ ውሂብ እንጽፋለን. እናም በዚህ መንገድ ዑደት እናገኛለን ፣ ማለትም ፣ አንዳንድ የሞቱ አሮጌ መስመሮች ሁል ጊዜ እዚያ ይታያሉ ፣ በእነሱ ፋንታ እኛ የምንፈልገውን አዲስ መስመሮችን እንጽፋለን። እና ይሄ ለ PostgreSQL መደበኛ ሁኔታ ነው።

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

በአደጋው ​​ወቅት ምን ተፈጠረ? ይህ ሂደት እንዴት ተከናወነ?

እኛ በሆነ ሁኔታ ላይ አንድ ሳህን ነበረን, አንዳንዶች ሕያው, አንዳንድ የሞተ መስመሮች. አውቶቫክዩም ደርሷል። የእኛ ጥንታዊ ግብይት ምን እንደሆነ፣ መታወቂያው ምን እንደሆነ የመረጃ ቋቱን ጠየቀ። ይህን መታወቂያ አገኘሁ፣ ብዙ ሰአታት፣ ምናልባትም አስር ደቂቃ ሊሆን ይችላል። በመረጃ ቋቱ ላይ ምን ያህል ክብደት እንዳለዎት ይወሰናል. እና እንደገና ጥቅም ላይ እንደዋለ ምልክት ሊያደርግባቸው የሚችሉ መስመሮችን ለመፈለግ ሄዷል. እና እንደዚህ አይነት መስመሮችን በጠረጴዛችን ውስጥ አላገኘሁም.

ግን በዚህ ጊዜ ከጠረጴዛው ጋር መስራታችንን እንቀጥላለን. በውስጡ አንድ ነገር እናደርጋለን, አዘምን, ውሂቡን እንለውጣለን. የመረጃ ቋቱ በዚህ ጊዜ ምን ማድረግ አለበት? አሁን ባለው ጠረጴዛ መጨረሻ ላይ አዳዲስ መስመሮችን ከመጨመር ውጪ ሌላ አማራጭ የላትም። እና ስለዚህ በእኛ ውስጥ የጠረጴዛው መጠን መጨመር ይጀምራል.

ለመሥራት በእርግጥ አረንጓዴ መስመሮች ያስፈልጉናል. ነገር ግን በእንደዚህ አይነት ችግር ወቅት የአረንጓዴ መስመሮች መቶኛ በጠቅላላው የጠረጴዛው መጠን እጅግ በጣም ዝቅተኛ ነው.

እና ጥያቄን ስናስፈጽም ዳታቤዙ ትክክለኛውን መስመር ለማግኘት በቀይ እና በአረንጓዴው ሁሉንም መስመሮች ውስጥ ማለፍ አለበት። እና ጠረጴዛውን በማይጠቅም መረጃ የመንፋት ውጤት "ብሎት" ይባላል, ይህም የዲስክ ቦታችንንም ይበላል. ያስታውሱ፣ 2 ሜባ ነበር፣ አሁን 300 ሜባ ነው? አሁን ሜጋባይት ወደ ጊጋባይት ቀይር እና ሁሉንም የዲስክ ሃብቶችህን በፍጥነት ታጣለህ።

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

በእኛ ላይ ያለው አንድምታ ምንድን ነው?

  • በእኔ ምሳሌ, ጠረጴዛው እና ጠቋሚው 150 እጥፍ አድጓል. የዲስክ ቦታ በቀላሉ ማለቅ ሲጀምር አንዳንድ ደንበኞቻችን የበለጠ ገዳይ ጉዳዮች አጋጥሟቸዋል።
  • ጠረጴዛዎች በራሳቸው አይቀንሱም. ኦቶቫክዩም በአንዳንድ ሁኔታዎች የሞቱ መስመሮች ብቻ ካሉ የጠረጴዛውን ጭራ ሊቆርጥ ይችላል. ነገር ግን የማያቋርጥ ሽክርክሪት ስላለ አንድ አረንጓዴ መሾመር መጨረሻ ላይ ሊሰቀል ይችላል እና አይዘመንም, እና ሁሉም የቀረው በጠፍጣፋው መጀመሪያ ላይ የሆነ ቦታ ላይ ይመዘገባል. ግን ይህ በጣም የማይታሰብ ክስተት ነው ፣ ጠረጴዛዎ ልሹ መጠኑ ይቀንሳል ፣ ስለዚህ እሱን ተስፋ ማድረግ የለብዎትም።
  • የመረጃ ቋቱ በአጠቃላይ የማይጠቅሙ መስመሮችን መደርደር አለበት። እና እኛ የዲስክ ሀብቶችን እያባከንን ነው ፣የፕሮሰሰር ሀብቶችን እና ኤሌክትሪክን እናባክናለን።
  • እና ይሄ በቀጥታ ማመልከቻችንን ይነካዋል, ምክንያቱም መጀመሪያ ላይ 10 ሚሊሰከንዶችን በጥያቄ, 10 ሚሊሰከንድ በኮዳችን ላይ ካሳለፍን, በአደጋው ​​ጊዜ በጥያቄ ላይ አንድ ሰከንድ እና በኮድ 10 ሚሊሰከንዶች ማሳለፍ ጀመርን, ማለትም, ትዕዛዝ. የመተግበሪያው መጠን ቀንሷል። እናም አደጋው ሲፈታ፣ በጥያቄ 20 ሚሊሰከንድ፣ በአንድ ኮድ 10 ሚሊሰከንድ ማውጣት ጀመርን። ይህ ማለት በአፈጻጸም ረገድ አሁንም አንድ ጊዜ ተኩል ሰጠምን ማለት ነው። እና ይሄ ሁሉም በተሰቀለው አንድ ግብይት ምክንያት ነው, እና ምናልባትም, በእኛ ጥፋት.
  • እና ጥያቄው: "ሁሉንም ነገር እንዴት ማግኘት እችላለሁ?" ስለዚህ ሁሉም ነገር ከእኛ ጋር ጥሩ እንዲሆን እና ጥያቄዎች ከአደጋው በፊት በፍጥነት ይሮጣሉ.

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

ለዚህም, እየተካሄደ ያለው የተወሰነ የሥራ ዑደት አለ.

በመጀመሪያ የተበሳጨውን ችግር ያለባቸውን ጠረጴዛዎች ማግኘት አለብን. አንዳንድ ሠንጠረዦች የበለጠ በንቃት እንደሚመዘግቡ እንረዳለን፣ አንዳንዶቹ ደግሞ ያነሰ ንቁ ናቸው። እና ለዚህ ቅጥያውን እንጠቀማለን pgstattuple. ይህን ቅጥያ በመጫን፣ በቂ እብጠት ያላቸውን ጠረጴዛዎች ለማግኘት እንዲረዳዎ መጠይቆችን መጻፍ ይችላሉ።

አንዴ እነዚህን ጠረጴዛዎች ካገኙ በኋላ መጨናነቅ አለባቸው. ለዚህ ቀድሞውኑ መሳሪያዎች አሉ. በእኛ ኩባንያ ውስጥ ሶስት መሳሪያዎችን እንጠቀማለን. የመጀመሪያው አብሮ የተሰራው VACUUM FULL ነው። እሱ ጨካኝ ፣ ጨካኝ እና ምህረት የለሽ ነው ፣ ግን አንዳንድ ጊዜ እሱ በጣም ጠቃሚ ነው። pg_repack и pgcompacttable ጠረጴዛዎችን ለመጨመቅ የሶስተኛ ወገን መገልገያዎች ናቸው. እና ስለ ዳታቤዝ የበለጠ ጥንቃቄ ያደርጋሉ።

ለእርስዎ ይበልጥ አመቺ በሆነው ላይ በመመስረት ጥቅም ላይ ይውላሉ. ግን ስለዚህ ጉዳይ በመጨረሻ እናገራለሁ. ዋናው ነገር ሶስት መሳሪያዎች አሉ. ብዙ የሚመረጡት አሉ።

ሁሉንም ነገር ካስተካከልን በኋላ, ሁሉም ነገር ጥሩ መሆኑን በማረጋገጥ, ይህንን ሁኔታ ለወደፊቱ እንዴት መከላከል እንደሚቻል ማወቅ አለብን.

  • ለመከላከል በጣም ቀላል ነው. በማስተር አገልጋዩ ላይ የክፍለ ጊዜዎችን ቆይታ መከታተል ያስፈልግዎታል። በተለይ አደገኛ ክፍለ-ጊዜዎች በሥራ ፈት በግብይት ሁኔታ ውስጥ. እነዚህ ገና ግብይት የከፈቱ፣ አንድ ነገር የሰሩ እና ትተው ወይም በቀላሉ የሰቀሉት፣ በኮዱ ውስጥ የጠፉ ናቸው።
  • እና ለእርስዎ, እንደ ገንቢዎች, እነዚህ ሁኔታዎች በሚፈጠሩበት ጊዜ ኮዱን መሞከር አስፈላጊ ነው. ማድረግ ከባድ አይደለም. ይህ ጠቃሚ ቼክ ይሆናል. ከረጅም ግብይቶች ጋር የተያያዙ ብዙ "የልጆች" ችግሮችን ያስወግዳሉ.

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

በእነዚህ ግራፎች ላይ, በዚህ ጉዳይ ላይ VACUUM FULLን በጠረጴዛው ላይ ካሳለፍኩ በኋላ ሰንጠረዡ እና የውሂብ ጎታው ባህሪ እንዴት እንደተቀየረ ላሳይዎት እፈልጋለሁ. ይህ የእኔ ምርት አይደለም.

የሠንጠረዡ መጠን ወዲያውኑ ወደ መደበኛው የሥራ ሁኔታ ሁለት ሜጋባይት ተመለሰ። ይህ በአገልጋዩ ላይ ያለውን አማካይ የምላሽ ጊዜ በእጅጉ አልነካም።

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

ነገር ግን በተለይ በእኛ የፈተና ሠንጠረዥ ውስጥ የሂሳብ ቀሪ ሒሳቦችን ባዘመንንበት፣ በጡባዊው ውስጥ ያለውን መረጃ ለማዘመን ለቀረበው ጥያቄ አማካይ የምላሽ ጊዜ ወደ ቅድመ-ብልሽት ደረጃዎች ቀንሷል። ይህንን ጥያቄ ለማስፈጸም በአቀነባባሪው የሚፈጀው ሃብትም ወደ ቅድመ-ብልሽት ደረጃ ወርዷል። እና የታችኛው የቀኝ ግራፍ እንደሚያሳየው ጠረጴዛው ከመጨመቁ በፊት የነበሩትን የሞቱ መስመሮችን ሳናልፍ በትክክል የምንፈልገውን መስመር በትክክል እናገኛለን። እና አማካይ የመጠይቅ ጊዜ በተመሳሳይ ደረጃ በግምት ቀርቷል። እዚህ ግን የሃርድዌር ስህተት አለብኝ።

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

የመጀመሪያው ታሪክ የሚያበቃው እዚህ ላይ ነው። እሷ በጣም የተለመደ ነች። እና የደንበኛው ልምድ ምንም ይሁን ምን, ብቁ ፕሮግራመሮች እንዳሉ በሁሉም ሰው ላይ ይከሰታል. ይዋል ይደር እንጂ ይከሰታል።

ጭነቱን የምናከፋፍልበት እና የአገልጋይ ሃብቶችን የምናመቻችበት ሁለተኛው ታሪክ

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

  • አድገናል ቁም ነገረኛ ሆነናል። እና ቅጂ እንዳለን ተረድተናል እና ሸክሙን ማመጣጠን ለእኛ ጥሩ ይሆናል፡ ለመምህር ይፃፉ እና ከገለባው ያንብቡ። እና ብዙውን ጊዜ ይህ ሁኔታ አንዳንድ ዓይነት ሪፖርቶችን ወይም ኢቲኤልን ለማዘጋጀት ስንፈልግ ነው. እና ንግድ በዚህ በጣም ደስተኛ ነው. እሱ በእርግጥ የተለያዩ ሪፖርቶችን ከብዙ ውስብስብ ትንታኔዎች ይፈልጋል።
  • ሪፖርቶች ለብዙ ሰዓታት ይቆያሉ, ምክንያቱም ውስብስብ ትንታኔዎች በሚሊሰከንዶች ውስጥ ሊሰሉ አይችሉም. እኛ እንደ ደፋር ሰዎች ኮድ እንጽፋለን። በመምህሩ ላይ የምንቀዳውን የማስገባት አፕሊኬሽን እንሰራለን፣ ሪፖርቶችን እንሰራለን።
  • ጭነቱን እናሰራጫለን.
  • ሁሉም ነገር በትክክል ይሰራል. ምርጥ ነን።

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

እና ይህ ሁኔታ ምን ይመስላል? በተለይ፣ በእነዚህ ገበታዎች ላይ፣ የግብይቱን ቆይታ ከቅጂው ላይ ለግብይቱ ጊዜ ጨምሪያለሁ። ሁሉም ሌሎች ግራፎች ማስተር አገልጋዩን ብቻ ያመለክታሉ።

በዚህ ጊዜ፣ የእኔ ሪፖርት ሰሌዳ አድጓል። ከእነሱ የበለጠ አሉ. አማካይ የአገልጋይ ምላሽ ጊዜ የተረጋጋ መሆኑን ማየት እንችላለን። ለ 2 ሰአታት በሚሰራው ቅጂ ላይ ረጅም የሩጫ ግብይት እንዳለን ማየት እንችላለን። የሞተ መስመሮችን የሚያስኬድ የአውቶቫኪዩም ጸጥ ያለ ስራን እናያለን. እና ሁላችንም ጥሩ ነን።

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

በተለይም በሙከራ ጡባዊው መሰረት, እዚያ ባሉ ሂሳቦች ላይ ያለውን ቀሪ ሂሳብ ማዘመን እንቀጥላለን. እና በተጠየቀ ጊዜ የተረጋጋ የምላሽ ጊዜ አለን ፣ የተረጋጋ የንብረት ፍጆታ። ሁሉም ነገር ከእኛ ጋር ጥሩ ነው።

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

እነዚህ ሪፖርቶች ከማባዛት ጋር ባለን ግጭት ወደ እኛ መመለስ እስከሚጀምሩበት ጊዜ ድረስ ሁሉም ነገር ጥሩ ነው። እና በየጊዜው ይተኩሳሉ።

መስመር ላይ ገብተን ይህ ለምን እየሆነ እንደሆነ ማንበብ እንጀምራለን። እና መፍትሄ እናገኛለን.

የመጀመሪያው መፍትሄ የማባዛት መዘግየት መጨመር ነው. ሪፖርታችን ለ 3 ሰዓታት እንደሚቆይ እናውቃለን። የማባዛት መዘግየቱን ወደ 3 ሰዓታት ያዘጋጁ። ሁሉንም ነገር እንጀምራለን, ነገር ግን አሁንም አንዳንድ ጊዜ ሪፖርቶች ወደ ኋላ መተኮሳቸው ችግር እንዳለብን እንቀጥላለን.

ሁሉም ነገር ፍጹም እንዲሆን እንፈልጋለን። ወደ ፊት እንሂድ። እና በበይነመረብ ላይ ጥሩ መቼት እናገኛለን - hot_standby_feedback። እናበራለን. ትኩስ_ተጠባባቂ_ግብረመልስ በማስተር ላይ የሚሰራውን አውቶቫኩም እንድንይዝ ያስችለናል። ስለዚህ, የማባዛት ግጭቶችን ሙሉ በሙሉ እናስወግዳለን. እና ሁላችንም ከሪፖርቶች ጋር በደንብ እንሰራለን.

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

እና በዚህ ጊዜ ማስተር አገልጋይ ምን እየሆነ ነው? እና ከማስተር አገልጋዩ ጋር፣ አጠቃላይ አደጋ አለን። አሁን ሁለቱም እነዚህ ቅንብሮች የበሩባቸውን ገበታዎች እያየን ነው። እናም በቅጂው ላይ ያለው ክፍለ ጊዜ በሆነ መንገድ በማስተር አገልጋይ ላይ ባለው ሁኔታ ላይ ተጽዕኖ ማሳደር እንደጀመረ እናያለን። የሞቱትን መስመሮች የሚያጸዳውን አውቶቫክዩም ስለታገደ ተጽእኖ ይፈጥራል። የጠረጴዛችን መጠን እንደገና ጨምሯል። በመላው የውሂብ ጎታ ላይ ያለው አማካይ የጥያቄ ማስፈጸሚያ ጊዜ እንዲሁ ጨምሯል። አውቶቫኪዩምዎቹ ትንሽ ጠበበ።

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

በተለይም፣ በእኛ ሳህን ላይ፣ በእሱ ላይ ያለው የውሂብ ማሻሻያ ወደ ሰማይም እንደዘለለ እናያለን። የማቀነባበሪያ ሃብቶች ፍጆታ በተመሳሳይ ሁኔታ በጣም ጨምሯል. እንደገና ብዙ ቁጥር ያላቸውን የሞቱ ከንቱ መስመሮች ላይ ደጋግመናል። እና በዚህ ጡባዊ ላይ ያለው የምላሽ ጊዜ, የግብይቶች ብዛት ቀንሷል.

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

ከዚህ በፊት የማወራውን ካላወቅን ምን ይመስላል?

  • ችግሮችን መፈለግ እንጀምራለን. በመጀመሪያው ክፍል ላይ ችግሮች ካጋጠሙን, ይህ ለረጅም ጊዜ ግብይት ምክንያት ሊሆን እንደሚችል እናውቃለን እና ወደ ማስተር እንወጣለን. ችግሩ ያለው ከመምህሩ ጋር ነው። ቋሊማ እሱን። እሱ እየሞቀ ነው, እሱ የመጫኛ አማካይ ከመቶ በታች ነው.
  • ጥያቄዎች እዚያ ይቀንሳሉ፣ ነገር ግን እዚያ ምንም አይነት የረጅም ጊዜ ግብይቶችን አናይም። እና ምን እየሆነ እንዳለ አልገባንም። የት እንደምንፈልግ አናውቅም።
  • የአገልጋይ ሃርድዌርን በመፈተሽ ላይ። ምናልባት የእኛ ወረራ ፈርሷል። ምናልባት የማስታወሻ አሞሌውን አቃጠልነው። አዎ, ማንኛውም ነገር ሊሆን ይችላል. ግን አይሆንም, አገልጋዮቹ አዲስ ናቸው, ሁሉም ነገር በትክክል ይሰራል.
  • ሁሉም ሰው ይሮጣል: አስተዳዳሪዎች, ገንቢዎች እና ዳይሬክተር. ምንም አይረዳም።
  • እና በአንድ ወቅት, ሁሉም ነገር በድንገት እራሱን ማረም ይጀምራል.

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

ቅጂው ላይ፣ በዚያን ጊዜ ጥያቄው ተሠርቶ ወጣ። ሪፖርት ደርሶናል። ንግዱ አሁንም ደስተኛ ነው። እንደሚመለከቱት, የእኛ ጠረጴዛ እንደገና አድጓል እና አይቀንስም. ከክፍለ-ጊዜዎች ጋር ባለው ገበታ ላይ፣ ሁኔታው ​​እስኪረጋጋ ድረስ ምን ያህል ጊዜ እንደሚወስድ መገምገም እንዲችሉ የዚህን ረጅም ግብይት ቁራጭ ከቅጅቱ ትቼዋለሁ።

ክፍለ ጊዜው ጠፍቷል። እና ከተወሰነ ጊዜ በኋላ አገልጋዩ ብዙ ወይም ያነሰ በቅደም ተከተል ይመጣል። እና በማስተር አገልጋዩ ላይ ለጥያቄዎች አማካይ የምላሽ ጊዜ ወደ መደበኛው ይመለሳል። ምክንያቱም, በመጨረሻም, autovacuum ውጭ ለማጽዳት እድል አግኝቷል, እነዚህን የሞተ መስመሮች ምልክት. ሥራውንም መሥራት ጀመረ። እና እንዴት በፍጥነት እንደሚሰራ, በፍጥነት እኛ በቅደም ተከተል እንሆናለን.

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

በፈተናው ጠረጴዛ ላይ, የሂሳብ ሒሳቦችን የምናዘምንበት, በትክክል ተመሳሳይ ምስል እናያለን. አማካይ የመለያ ማሻሻያ ጊዜ እንዲሁ ቀስ በቀስ እየተለመደ ነው። በማቀነባበሪያው የሚበላው ሃብትም ይቀንሳል። እና በሰከንድ የግብይቶች ብዛት ወደ መደበኛው ይመለሳል። ግን እንደገና, ወደ መደበኛው, ከአደጋው በፊት እንደነበረው አይደለም.

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

በማንኛውም ሁኔታ ፣ እንደ መጀመሪያው ሁኔታ ፣ ከአንድ ተኩል እስከ ሁለት ጊዜ ፣ ​​እና አንዳንዴም የበለጠ በአፈፃፀም ውስጥ ውድቀት እናገኛለን።

ሁሉንም ነገር በትክክል ያደረግን ይመስለናል። ጭነቱን ያሰራጩ. መሳሪያዎቹ ስራ ፈት አይደሉም. እንደ አእምሮው, ጥያቄዎቹን አፍርሰዋል, ነገር ግን አሁንም ሁሉም ነገር መጥፎ ሆነ.

  • ትኩስ_ተጠባባቂ_ግብረመልስ አታነቁም? አዎ, ያለ ልዩ ጠንካራ ምክንያቶች ማብራት አይመከርም. ምክንያቱም ይህ ጠመዝማዛ ማስተር አገልጋዩን በቀጥታ ስለሚነካ እና የአውቶቫክዩም ስራውን እዚያ ያቆማል። አንዳንድ ቅጂዎችን በማብራት እና እሱን በመርሳት, ጌታውን መግደል እና በማመልከቻው ላይ ትልቅ ችግር ሊያጋጥምዎት ይችላል.
  • ከፍተኛ_በተጠባባቂ_ዥረት_መዘግየት ይጨምር? አዎ፣ ለሪፖርቶች ነው። የሶስት ሰአት ሪፖርት ካሎት እና በማባዛት ግጭቶች ምክንያት እንዲበላሽ ካልፈለጉ በቀላሉ መዘግየቱን ይጨምሩ። ረጅም ሪፖርት አሁን ወደ ዳታቤዝ የገባ ውሂብ በጭራሽ አያስፈልገውም። ለሶስት ሰአታት ካለህ ለአንዳንድ የድሮ የውሂብ ጊዜ እያሄድክ ነው። እና እርስዎ ፣ ያ የሶስት ሰዓታት መዘግየት ፣ ያ ስድስት ሰዓት መዘግየት - ምንም አይነት ሚና አይጫወቱም ፣ ግን በተከታታይ ሪፖርቶችን ይቀበላሉ እና በውድቀታቸው ላይ ያሉትን ችግሮች አታውቁም።
  • በተፈጥሮ፣ በቅጂዎች ላይ ረጅም ክፍለ ጊዜዎችን መቆጣጠር አለብህ፣በተለይም ትኩስ_ተጠባባቂ_ግብረመልስን በብዜት ለማንቃት ከወሰንክ። ምክንያቱም ማንኛውም ሊሆን ይችላል. ይህንን አስተያየት ለገንቢው የሰጠነው ጥያቄዎቹን እንዲፈትሽ ነው። እብድ ጥያቄ ጻፈ። ጀምሯል እና ሻይ ሊጠጣ ሄደ, እና የተቋቋመውን መምህር አገኘን. ወይም እዚያ የተሳሳተ መተግበሪያ አስጀመርን. ሁኔታዎቹ የተለያዩ ናቸው። በቅጅዎች ላይ ያሉ ክፍለ-ጊዜዎች እንደ ጌታው በጥንቃቄ መቆጣጠር አለባቸው።
  • እና በቅጂዎች ላይ ፈጣን እና ረጅም ጥያቄዎች ካሉዎት, በዚህ ሁኔታ ውስጥ ሸክሙን ለማሰራጨት መከፋፈል የተሻለ ነው. ይህ የዥረት_መዘግየት አገናኝ ነው። በትንሽ የማባዛት መዘግየት አንድ ቅጂ እንዲኖርዎት በፍጥነት። ለረጅም ጊዜ ለሚያሄዱ የሪፖርት ማቅረቢያ ጥያቄዎች፣ በቀን በ6 ሰአታት ወደ ኋላ ሊቀር የሚችል ቅጂ ይኑርዎት። ይህ ሙሉ በሙሉ የተለመደ ሁኔታ ነው.

ውጤቱን በተመሳሳይ መንገድ እናስወግዳለን-

  • የታጠቁ ጠረጴዛዎችን እናገኛለን.
  • እና እኛ በሚስማማን በጣም ምቹ መሣሪያ እንጨምቀዋለን።

ሁለተኛው ታሪክ እዚህ ያበቃል። ወደ ሦስተኛው ታሪክ እንሂድ።

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

ስደትን የምንሰራበት ለእኛም የተለመደ ነው።

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

  • ማንኛውም የሶፍትዌር ምርት ያድጋል. መስፈርቶች እየተቀየሩ ነው። በማንኛውም ሁኔታ ማዳበር እንፈልጋለን. እና በሠንጠረዡ ውስጥ ያለውን መረጃ ማዘመን ያስፈልገናል, ማለትም ማሻሻያውን ለማስኬድ ከኛ ፍልሰት አንጻር ወደ አዲሱ ተግባራዊነት የእድገታችን አካል ነው.
  • የድሮው የውሂብ ቅርጸት አይስማማም። አሁን ወደ ሁለተኛው ጠረጴዛ እንዞራለን እንበል፣ በእነዚህ ሂሳቦች ላይ ክዋኔዎች አሉኝ። እና, እነሱ ሩብልስ ውስጥ ነበሩ እንበል, እና እኛ ትክክለኛነት ለመጨመር እና kopecks ውስጥ ለማድረግ ወሰንን. እና ለዚህ ማሻሻያ ማድረግ አለብን-ሜዳውን ከቀዶ ጥገናው መጠን ጋር በአንድ መቶ ማባዛት።
  • በዘመናዊው ዓለም አውቶሜትድ ዳታቤዝ ቨርሽን መሳሪያዎችን እንጠቀማለን። እንበል Liquibase. ስደትን እዚያ እንመዘግባለን። በፈተና መሰረታችን ላይ እንፈትነዋለን. ሁሉ ነገር ጥሩ ነው. ዝመናው እየሰራ ነው። እገዳዎች ለተወሰነ ጊዜ ይሰራሉ, ነገር ግን የተዘመነ ውሂብ እናገኛለን. እና በዚህ ላይ አዲስ ተግባር መጀመር እንችላለን. ሁሉም ተፈትኗል እና ተረጋግጧል። ሁሉም ተረጋግጧል።
  • የታቀዱ ስራዎችን አከናውነዋል, ስደትን አደረጉ.

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

ከፊትህ የቀረበው ዝመና ያለው ፍልሰት እነሆ። በሂሳቦች ላይ ክዋኔዎች ስላለኝ, ሳህኑ 15 ጂቢ ነበር. እና እያንዳንዱን መስመር ስለምናዘምን ፣ እያንዳንዱን መስመር ስለፃፍን ሳህኑን ከዝማኔው ጋር እጥፍ አድርገነዋል።

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

በስደት ጊዜ፣ በዚህ መለያ ምንም ነገር ማድረግ አልቻልንም፣ ምክንያቱም ሁሉም የጥያቄዎቹ ወረፋ ተጠብቀው ይህ ዝመና እስኪጠናቀቅ ድረስ ይጠብቁ ነበር። እዚህ ግን ትኩረታችሁን በቋሚ ዘንግ ላይ ወደሚገኙ ቁጥሮች መሳል እፈልጋለሁ. ማለትም በ 5 ሚሊሰከንዶች ክልል ውስጥ ከመሰደዱ በፊት አማካኝ የጥያቄ ጊዜ አለን እና በአቀነባባሪው ላይ ያለው ጭነት ፣ የዲስክ ማህደረ ትውስታን ለማንበብ የማገጃ ስራዎች ብዛት ከ 7,5 በታች ነው።

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

ተሰደድን እንደገና ችግር ገጠመን።

ፍልሰቱ የተሳካ ነበር ግን፡-

  • የድሮው ተግባር ረዘም ያለ ጊዜ መሮጥ ጀመረ።
  • ጠረጴዛው መጠኑ እንደገና አድጓል።
  • በአገልጋዩ ላይ ያለው ጭነት እንደገና ከነበረው በላይ ሆኗል.
  • እና በእርግጥ ፣ አሁንም በጥሩ ሁኔታ በተሰራው ተግባራዊነት ላይ እንጣጣራለን ፣ ትንሽ አሻሽለነዋል።

እና ይሄ እንደገና እብጠት ነው, ይህም እንደገና ህይወታችንን ያበላሻል.

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

እዚህ ላይ ሠንጠረዡ፣ ልክ እንደ ቀደሙት ሁለት ጉዳዮች፣ ወደ ቀደሙት መጠኖች እንደማይመለስ አሳያለሁ። በአገልጋዩ ላይ ያለው አማካይ ጭነት በቂ ይመስላል።

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

እና በመለያዎች ወደ ጠረጴዛው ከተዞርን, ለዚህ ሰንጠረዥ አማካኝ የጥያቄ ጊዜ በእጥፍ እንደጨመረ እናያለን. በአቀነባባሪው ላይ ያለው ጭነት እና በማህደረ ትውስታ ውስጥ የሚደረደሩት የመስመሮች ብዛት ከ 7,5 በላይ ዘለለ, ግን ዝቅተኛ ነበር. እና በአቀነባባሪዎች ሁኔታ በ 2 ጊዜ ፣ ​​በብሎክ ኦፕሬሽኖች በ 1,5 ጊዜ ፣ ​​ማለትም በአገልጋይ አፈፃፀም ላይ ውድቀት አግኝተናል። እና በውጤቱም - የመተግበሪያችን አፈፃፀም መበስበስ. በተመሳሳይ ጊዜ የጥሪዎች ብዛት በግምት በተመሳሳይ ደረጃ ቀርቷል።

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

እና እዚህ ዋናው ነገር እንደዚህ አይነት ስደትን እንዴት በትክክል ማከናወን እንደሚቻል መረዳት ነው. እና እነሱ መደረግ አለባቸው. በመደበኛነት እነዚህን ፍልሰት እናደርጋለን።

  • እንዲህ ዓይነቱ ትልቅ ፍልሰት በራስ-ሰር አይከናወንም. ሁልጊዜ ቁጥጥር ሊደረግባቸው ይገባል.
  • እውቀት ካለው ሰው ክትትል ያስፈልገዋል። በቡድኑ ውስጥ DBA ካለዎት፣ DBA እንዲያደርገው ይፍቀዱለት። ስራው ነው። ካልሆነ ታዲያ ከመረጃ ቋቶች ጋር እንዴት እንደሚሰራ የሚያውቅ በጣም ልምድ ያለው ሰው ያድርግ።
  • አዲሱ የውሂብ ጎታ ንድፍ፣ አንድ አምድ ብናዘምንም፣ ሁልጊዜም በየደረጃው እንዘጋጃለን፣ ማለትም አዲሱ የመተግበሪያው እትም ከመውጣቱ በፊት፡-
  • የተሻሻለውን መረጃ የምንጽፍባቸው አዳዲስ መስኮች ተጨምረዋል።
  • መረጃን ከአሮጌው መስክ ወደ አዲሱ መስክ በትንሽ ክፍሎች እናስተላልፋለን. ለምን ይህን እያደረግን ነው? በመጀመሪያ, የዚህን ሂደት ሂደት ሁልጊዜ እንቆጣጠራለን. ብዙ ባች እንዳስተላለፍን እና ብዙ እንደቀረን እናውቃለን።
  • እና ሁለተኛው አወንታዊ ውጤት በእያንዳንዱ በእንደዚህ ዓይነት ቡድን መካከል ግብይትን እንዘጋለን ፣ አዲስ እንከፍታለን ፣ እና ይህ አውቶቫኪዩም በጠፍጣፋው መሠረት እንዲሠራ ፣ ለድጋሚ ጥቅም ላይ የሚውሉ የሞቱ መስመሮችን ለመለየት ያስችላል ።
  • በመተግበሪያው ሾል ላይ ለሚታዩ መስመሮች (አሁንም የድሮው መተግበሪያ አለን) አዲስ እሴቶችን ወደ አዲስ መስኮች የሚጽፍ ቀስቅሴ እንጨምራለን. በእኛ ሁኔታ, ይህ በአሮጌው እሴት መቶ ማባዛት ነው.
  • እኛ ሙሉ በሙሉ ግትር ከሆንን እና ተመሳሳይ መስክ ከፈለግን ፣ ሁሉንም ፍልሰቶች እንደጨረስን እና አዲሱን የመተግበሪያውን ስሪት ከማንከባለል በፊት ፣ በቀላሉ መስኮችን እንደገና እንሰይማለን። አሮጌዎቹ ወደ አንዳንድ ፈለሰፉ ስሞች፣ እና አዲሶቹን መስኮች ወደ አሮጌዎቹ እንለውጣቸዋለን።
  • እና ከዚያ በኋላ ብቻ የመተግበሪያውን አዲስ ስሪት እንጀምራለን.

እና በተመሳሳይ ጊዜ እብጠት አናገኝም እና በአፈፃፀም ውስጥ አንዘገይም።

ይህ የሦስተኛው ታሪክ መጨረሻ ነው።

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

https://github.com/dataegret/pg-utils/blob/master/sql/table_bloat.sql

https://github.com/dataegret/pg-utils/blob/master/sql/table_bloat_approx.sql

እና አሁን በመጀመሪያው ታሪክ ውስጥ ስለጠቀስኳቸው መሳሪያዎች ትንሽ ተጨማሪ።

እብጠትን ከመፈለግዎ በፊት ቅጥያውን መጫን አለብዎት pgstattuple.

ጥያቄዎችን ላለመፍጠር, እነዚህን ጥያቄዎች በስራችን ውስጥ አስቀድመን ጽፈናል. እነሱን መጠቀም ይችላሉ. እዚህ ሁለት ጥያቄዎች አሉ።

  • የመጀመሪያው በጣም ረጅም ጊዜ ይወስዳል, ነገር ግን በጠረጴዛው መሰረት የሆድ እብጠት ትክክለኛ ዋጋዎችን ያሳየዎታል.
  • ሁለተኛው በፍጥነት ይሠራል እና በጠረጴዛው ውስጥ እብጠት መኖሩን ወይም አለመኖሩን በፍጥነት መገምገም ሲያስፈልግ በጣም ውጤታማ ነው. እና በፖስትግሬስ ጠረጴዛ ውስጥ ሁል ጊዜ እብጠት እንዳለ መረዳት አለብዎት። ይህ የእሱ የ MVCC ሞዴል ባህሪ ነው።
  • እና 20% እብጠት በአብዛኛው ለጠረጴዛዎች ጥሩ ነው. ማለትም, መጨነቅ እና ይህን ሰንጠረዥ መጨናነቅ የለብዎትም.

ከእኛ ጋር ያበጡ ሠንጠረዦችን እንዴት መለየት እንደምንችል አውቀናል, በተጨማሪም, በማይረባ መረጃ ሲያበጡ.

አሁን እብጠትን እንዴት ማስተካከል እንደሚቻል:

  • ትንሽ ሳህን እና ጥሩ ዲስኮች ካሉን ማለትም እስከ አንድ ጊጋባይት ባለው ሳህን ላይ VACUUM FULLን መጠቀም በጣም ይቻላል። ለጥቂት ሰኮንዶች ልዩ የሆነ መቆለፊያ ከእርስዎ ይወስዳል፣ እና እሺ፣ ግን ሁሉንም ነገር በፍጥነት እና በጭካኔ ያደርጋል። VACUUM FULL ምን ያደርጋል? በጠረጴዛው ላይ ልዩ የሆነ መቆለፊያ ይወስዳል እና የቀጥታ ረድፎችን ከአሮጌው ጠረጴዛዎች ወደ አዲሱ ጠረጴዛ ይጽፋል። እና በመጨረሻ ይተካቸዋል. የድሮ ፋይሎችን ይሰርዛል፣ አዲሶቹን በአሮጌው ይተካል። ግን ለሥራው ጊዜ, በጠረጴዛው ላይ ልዩ መቆለፊያን ይወስዳል. ይህ ማለት በዚህ ሠንጠረዥ ምንም ነገር ማድረግ አይችሉም: ወደ እሱ መጻፍ, ማንበብም ሆነ ማሻሻል አይችሉም. እና VACUUM FULL ውሂብ ለመፃፍ ተጨማሪ የዲስክ ቦታ ይፈልጋል።
  • ቀጣይ መሣሪያ pg_repack. በመርህ ደረጃ, ከ VACUUM FULL ጋር በጣም ተመሳሳይ ነው, ምክንያቱም እንዲሁም ከአሮጌ ፋይሎች ወደ አዲስ ፋይሎች ስለሚጽፍ እና በሰንጠረዡ ውስጥ ይተካቸዋል. ግን በተመሳሳይ ጊዜ ፣ ​​በስራው መጀመሪያ ላይ በጠረጴዛው ላይ ልዩ መቆለፊያን አይወስድም ፣ ግን ፋይሎቹን ለመተካት ዝግጁ-የተሰራ መረጃ በሚኖርበት ጊዜ ብቻ ይወስዳል። እንደ VACUUM FULL ተመሳሳይ የዲስክ መገልገያ መስፈርቶች አሉት። ተጨማሪ የዲስክ ቦታ ያስፈልገዎታል, እና ይህ አንዳንድ ጊዜ ቴራባይት ጠረጴዛዎች ካሉዎት ወሳኝ ነው. እና እሱ በአቀነባባሪው ረገድ ሆዳም ነው ፣ ምክንያቱም እሱ ከ I / O ጋር በንቃት እየሰራ ነው።
  • ሦስተኛው መገልገያ ነው pgcompacttable. ሾለ ሀብቶች የበለጠ ጠንቃቃ ነው, ምክንያቱም በትንሽ የተለያዩ መርሆዎች ላይ ይሰራል. የ pgcompacttable ዋናው ይዘት ሁሉንም የቀጥታ ረድፎችን ወደ ሰንጠረዡ መጀመሪያ ከዝማኔዎች ጋር ማንቀሳቀስ ነው። እና ከዚያም በዚህ ጠረጴዛ ላይ ያለውን ክፍተት ይጀምራል, ምክንያቱም በመጀመሪያ ቀጥታ ረድፎች እና በመጨረሻው ላይ የሞቱ ረድፎች እንዳሉን እናውቃለን. እና ቫክዩም እራሱ ይህንን ጅራት ይቆርጣል, ማለትም, ብዙ ተጨማሪ የዲስክ ቦታ አያስፈልገውም. እና በተመሳሳይ ጊዜ, አሁንም በንብረቶች ሊጨመቅ ይችላል.

ሁሉም ነገር ከመሳሪያዎች ጋር።

በ postgresql ውስጥ ወደ እብጠት የሚያመሩ የተለመዱ የመተግበሪያ ስህተቶች። አንድሬ ሳልኒኮቭ

ተጨማሪ ወደ ውስጥ ከመቆፈር አንፃር የሆድ እብጠት ርዕስ አስደሳች ሆኖ ካገኙት ፣ ከዚያ ለእርስዎ አንዳንድ ጠቃሚ አገናኞች እዚህ አሉ

  • https://www.slideshare.net/alexius2Mb/where-is-the-space-postgres የሥራ ባልደረባዬ ዘገባ ነው። የፖስትግሬስ ቦታ በስራው እና በህይወቱ የት እንደሚሄድ አጠቃላይ ነው። እና ለዲቢኤዎች ሾለ እብጠት በጣም ትልቅ እና ዝርዝር ቴክኒካዊ ቁራጭ አለ።
  • https://github.com/dataegret/pg-utils የውሂብ ጎታውን ሁኔታ ለመፈተሽ ብዙ ጠቃሚ ስክሪፕቶችን የምናከማችበት ወደ ማከማቻችን የሚያገናኝ ነው። እዚያም እብጠት የፍለጋ ስክሪፕቶችን ማግኘት ይችላሉ።
  • ሦስተኛው и አራተኛው ሳህኖቹን ለመጭመቅ የሚረዱ መሳሪያዎችን ማገናኘት.
  • http://blog.dataegret.com/2Mb018/03/postgresql-bloatbusters.html ይህ ከባልደረባዬ የተላከ ጽሑፍ ነው። እዚያ ለአስተዳዳሪዎች ቅርብ በሆነ ደረጃ ላይ እብጠትን በቁም ነገር እና በቴክኒካዊ ሁኔታ ይተነትናል ።

እዚህ ለገንቢዎች አስፈሪ ታሪክን ለማሳየት ሞክሬ ነበር፣ ምክንያቱም እነሱ የመረጃ ቋቶች ቀጥተኛ ደንበኞቻችን ስለሆኑ እና ምን እና ምን እርምጃዎች እንደሚመሩ መረዳት አለባቸው። እንደተሳካልኝ ተስፋ አደርጋለሁ። ለሰጠህው አትኩሮት እናመሰግናለን!

ጥያቄዎች

ለሪፖርቱ እናመሰግናለን! ችግሮችን እንዴት መለየት እንደሚቻል ተናግረሃል። እንዴት ማስጠንቀቂያ ሊሰጣቸው ይችላል? ማለትም፣ ጥያቄዎቹ ወደ አንዳንድ የውጭ አገልግሎቶች ስለዞሩ ብቻ ሳይሆን የተንጠለጠሉበት ሁኔታ አጋጥሞኝ ነበር። አንዳንድ የዱር መጋጠሚያዎች ብቻ ነበሩ. ለአንድ ቀን ያህል የተንጠለጠሉ ጥቃቅን፣ ምንም ጉዳት የሌላቸው ጥያቄዎች ነበሩ፣ እና ከዚያ የሆነ የማይረባ ነገር ማድረግ ጀመሩ። ማለትም፣ እርስዎ ከሚገልጹት ጋር በጣም ተመሳሳይ ነው። እንዴት መከታተል ይቻላል? ተቀመጡ እና ያለማቋረጥ ይመልከቱ፣ የትኛው ጥያቄ ተጣብቋል? ይህን እንዴት መከላከል ይቻላል?

በዚህ አጋጣሚ ይህ ለድርጅትዎ አስተዳዳሪዎች እንጂ ለዲቢኤ የግድ አይደለም።

አስተዳዳሪ ነኝ።

PostgreSQL በመጠባበቅ ላይ ያሉ ጥያቄዎችን የሚያሳይ pg_stat_activity የሚባል እይታ አለው። እና እዚያ ለምን ያህል ጊዜ እንደሚንጠለጠል ማየት ይችላሉ.

በየ 5 ደቂቃው መጥቼ ማየት አለብኝ?

ክሮን ያዘጋጁ እና ያረጋግጡ። ረጅም ጥያቄ ካሎት ደብዳቤ ይጻፉ እና ያ ነው። ማለትም፣ በዓይንዎ መመልከት አያስፈልግም፣ ይህ በራስ-ሰር ሊሆን ይችላል። ደብዳቤ ይደርስዎታል, ለእሱ ምላሽ ይሰጣሉ. ወይም በራስ-ሰር መተኮስ ይችላሉ።

ይህ ለምን እየሆነ እንደሆነ ግልጽ ምክንያቶች አሉ?

የተወሰኑትን ዘርዝሬአለሁ። ሌሎች ተጨማሪ ውስብስብ ምሳሌዎች. እና ረጅም ውይይት ሊኖር ይችላል.

ለሪፖርቱ እናመሰግናለን! ስለ pg_repack መገልገያ ግልጽ ማድረግ ፈልጌ ነበር። ልዩ መቆለፊያ ካልወሰደ፣ ከዚያ...

ብቸኛ መቆለፊያ ትሰራለች።

... ከዚያ ውሂብ ላጣ እችላለሁ። የእኔ መተግበሪያ በዚህ ጊዜ ምንም ነገር መቅዳት የለበትም?

አይ፣ ከጠረጴዛው ጋር በጸጥታ ይሰራል፣ ማለትም pg_repack በመጀመሪያ እዚያ ያሉትን ሁሉንም የቀጥታ መስመሮች ያስተላልፋል። በተፈጥሮ, በሰንጠረዡ ውስጥ አንድ ዓይነት መዝገብ አለ. እሱ ይህንን ጅራት ብቻ ይጥላል።

ያም ማለት, አሁንም መጨረሻ ላይ ያደርገዋል?

በመጨረሻ፣ እነዚህን ፋይሎች ለመለዋወጥ ልዩ መቆለፊያ ያስፈልጋል።

ከ VACUUM FULL የበለጠ ፈጣን ይሆናል?

ቫኩም ሙሉ፣ እንደጀመረ፣ ወዲያውኑ ልዩ የሆነ መቆለፊያ ወሰደ። እና ሁሉንም ነገር እስካላደረገ ድረስ, እንድትሄድ አይፈቅድም. እና pg_repack ልዩ ቁልፍ የሚወስደው ፋይሎች በሚተኩበት ጊዜ ብቻ ነው። በዚህ ጊዜ, እዚያ አይጻፉም, ነገር ግን ውሂቡ አይጠፋም, ሁሉም ነገር በሥርዓት ይሆናል.

ሀሎ! ስለ autovacuum ሥራ ተናግረሃል። የመዝገቡ ቀይ፣ ቢጫ እና አረንጓዴ ህዋሶች ያሉት ግራፍ ነበር። ማለትም ቢጫዎች - እንደተሰረዙ ምልክት አድርጎባቸዋል. እና በውጤቱም, በውስጣቸው አዲስ ነገር መጻፍ ይችላሉ?

አዎ. Postgres ረድፎችን አያስወግድም. እሱ እንደዚህ አይነት ልዩ ባህሪ አለው. መስመሩን ካዘመንነው፣ አሮጌው እንደተሰረዘ ምልክት አድርገናል። ይህንን መስመር የለወጠው የግብይት መታወቂያ ወደዚያ ይወጣል እና አዲስ መስመር እንጽፋለን። እና እነሱን ማንበብ የሚችሉ ክፍለ ጊዜዎች አሉን። በአንድ ወቅት, በጣም ያረጁ ይሆናሉ. እና የአውቶቫክዩም ይዘት በነዚህ መስመሮች ውስጥ የሚሄድ እና እንደማያስፈልጉ የሚያመለክት መሆኑ ነው። እና እዚያ ውሂቡን እንደገና መፃፍ ይችላሉ።

ገባኝ. ግን ጥያቄው ስለዚህ ጉዳይ አይደለም. አልተስማማሁም። ጠረጴዛ አለን እንበል። ተለዋዋጭ መጠን መስኮች አሉት. እና አዲስ ነገር ለማስገባት ከሞከርኩ፣ በቀላሉ ከአሮጌው ሕዋስ ጋር ላይስማማ ይችላል።

የለም፣ በማንኛውም ሁኔታ መላው መስመር ተዘምኗል። Postgres ሁለት የማከማቻ ሞዴሎች አሉት። ከመረጃው ዓይነት ይመርጣል. በሠንጠረዡ ውስጥ በቀጥታ የተከማቸ ውሂብ አለ, እና ቶስ ውሂብም አለ. እነዚህ ከፍተኛ መጠን ያላቸው መረጃዎች ናቸው፡ ጽሑፍ፣ json። በተለየ ጽላቶች ውስጥ ይቀመጣሉ. እና በእነዚህ ጽላቶች መሠረት ፣ ከ እብጠት ጋር ተመሳሳይ ታሪክ ይከሰታል ፣ ማለትም ፣ ሁሉም ነገር አንድ ነው። እነሱ ተለይተው ብቻ ተዘርዝረዋል.

ለሪፖርቱ እናመሰግናለን! የቆይታ ጊዜን ለመገደብ የመግለጫ ጊዜ ማብቂያ ጥያቄዎችን መጠቀም ምን ያህል ተቀባይነት አለው?

በጣም ተቀባይነት ያለው. በሁሉም ቦታ እንጠቀማለን. እና የራሳችን አገልግሎቶች ስለሌለን የርቀት ድጋፍ እንሰጣለን ፣ ብዙ አይነት ደንበኞች አሉ። እና ሁሉም በዚህ በጣም ረክተዋል. ማለትም፣ በቼክ ክሮን ውስጥ ስራዎች አሉን። የክፍለ ጊዜው ቆይታ ከደንበኛው ጋር መደራደር ብቻ ነው, ከዚያ በፊት እኛ አንቸነከርንም. አንድ ደቂቃ ሊሆን ይችላል, 10 ደቂቃ ሊሆን ይችላል. በመሠረቱ ላይ ባለው ጭነት እና በዓላማው ላይ የተመሰረተ ነው. ግን ሁላችንም pg_stat_activity እንጠቀማለን።

ለሪፖርቱ እናመሰግናለን! ለመተግበሪያዎቼ የእርስዎን ሪፖርት ለመሞከር እየሞከርኩ ነው። እና በየቦታው ግብይት የጀመርን ይመስላል፣ እና በሁሉም ቦታ በግልፅ እንጨርሰዋለን። የተለየ ከሆነ ፣ ሁሉም ተመሳሳይ መልሶ ማገገሚያ ይከሰታል። እና ከዚያ አሰብኩ. ከሁሉም በላይ, ግብይቱ በግልጽ ሊጀምር አይችልም. ይህ ለሴት ልጅ ፍንጭ ነው, እንደማስበው. የመዝገብ ማሻሻያ ካደረግሁ፣ ግብይቱ በ PostgreSQL ይጀምር እና ግንኙነቱ ሲቋረጥ ብቻ ያበቃል?

አሁን ስለ አፕሊኬሽኑ ደረጃ እየተናገሩ ከሆነ፣ በሚጠቀሙት ሾፌር ላይ፣ ጥቅም ላይ በሚውለው ORM ላይ ይወሰናል። እዚያ ብዙ ቅንጅቶች አሉ። የነቃ አውቶማቲካሊ ከሆንክ ግብይት እዛ ይጀምርና ወዲያው ይዘጋል።

ማለትም ከዝማኔው በኋላ ወዲያውኑ ይዘጋል?

በቅንብሮች ላይ የተመሰረተ ነው. አንዱን መቼት ሰይሜዋለሁ። ይህ በራስ-ሰር መሰጠት ነው። እሷ በጣም የተለመደ ነች። ከነቃ፣ ግብይቱ ተከፍቶ ተዘግቷል። በግልጽ "ግብይት ጀምር" እና "ግብይቱን ጨርሰህ" እስካልተናገርክ፣ ነገር ግን በቀላሉ ወደ ክፍለ-ጊዜው ጥያቄ እስካልጀመርክ ድረስ።

ሀሎ! ለሪፖርቱ እናመሰግናለን! አስቡት ዳታ ቤዝ አለን እያበጠ እና እያበጠ ከዚያም አገልጋዩ ቦታ አለቀ። ይህንን ሁኔታ ለማስተካከል መሳሪያዎች አሉ?

በአገልጋዩ ላይ ያለው ቦታ በጥሩ ሁኔታ ክትትል ሊደረግበት ይገባል.

ለምሳሌ, DBA ሻይ ለመጠጣት ሄዷል, ሪዞርት ላይ ነበር, ወዘተ.

የፋይል ስርዓት ሲፈጠር, ቢያንስ የተወሰነ መረጃ ያልተፃፈበት የመጠባበቂያ ቦታ ይፈጠራል.

ሙሉ በሙሉ ዜሮ ቢሆንስ?

እዚያም የተያዘ ቦታ ተብሎ ይጠራል, ማለትም, ነፃ ሊሆን ይችላል, እና ምን ያህል እንደተፈጠረ እንደ ትልቅ መጠን, ነፃ ቦታ አግኝተዋል. በነባሪ፣ ስንት እንደሆኑ አላውቅም። እና በሌላ አጋጣሚ የመልሶ ማግኛ ክዋኔን ለማካሄድ ቦታ እንዲኖርዎ ዲስኮችን ያቅርቡ። እንደማያስፈልጋቸው ዋስትና የተሰጠዎትን አንዳንድ ሠንጠረዥ መሰረዝ ይችላሉ።

ሌሎች መሳሪያዎች የሉም?

ሁልጊዜ በእጅ የተሰራ ነው. እና በቦታው ላይ እዚያ ምን ማድረግ የተሻለ እንደሆነ ይገለጣል, ምክንያቱም ወሳኝ መረጃ አለ, ወሳኝ ያልሆነ. እና ለእያንዳንዱ የውሂብ ጎታ እና ከእሱ ጋር አብሮ የሚሰራ መተግበሪያ, በንግዱ ላይ የተመሰረተ ነው. ሁልጊዜ የሚወሰነው በቦታው ላይ ነው.

ለሪፖርቱ እናመሰግናለን! ሁለት ጥያቄዎች አሉኝ። በመጀመሪያ ፣ በተሰቀሉ ግብይቶች ላይ ሁለቱም የጠረጴዛ ቦታ እና የመረጃ ጠቋሚው መጠን እንደሚያድግ በሚታይበት ቦታ ላይ ስላይዶች አሳይተዋል። እና በተጨማሪ በሪፖርቱ ላይ ጡባዊውን የሚያሽጉ ብዙ መገልገያዎች ነበሩ። እና ስለ ኢንዴክስስ?

እነሱንም ያሸጉላቸዋል።

ግን ቫክዩም መረጃ ጠቋሚውን አይጎዳውም?

አንዳንዶቹ በመረጃ ጠቋሚ ይሰራሉ. ለምሳሌ pg_rapack፣ pgcompacttable። ቫክዩም ኢንዴክሶችን እንደገና ይፈጥራል, ይነካል. VACUUM FULL ሁሉንም ነገር እንደገና መጻፍ ዋናው ነገር አለው፣ ማለትም ከሁሉም ጋር ይሰራል።

እና ሁለተኛው ጥያቄ. ቅጂዎች ላይ የሚቀርቡ ዘገባዎች በራሱ በመድገም ላይ ለምን እንደሚመኩ አልገባኝም። ሪፖርቶች የሚያነቡ መሰለኝ፣ መባዛት ደግሞ መፃፍ ነው።

የመባዛት ግጭት መንስኤው ምንድን ነው? ሂደቶች የሚከናወኑበት መምህር አለን። አውቶቫክዩም አለን። Autovacuum በእውነቱ፣ ምን ያደርጋል? አንዳንድ የቆዩ መስመሮችን ይቆርጣል. በዚህ ጊዜ እነዚህን አሮጌ መስመሮች በሚያነቡ ቅጂዎች ላይ ጥያቄ ካለን እና በመምህሩ ላይ አውቶቫክዩም እነዚህን መስመሮች እንደገና ለመፃፍ በተቻለ መጠን ምልክት ያደረጉበት ሁኔታ ነበር ፣ ከዚያ እኛ እንፅፋቸዋለን ። እና የውሂብ ፓኬት ተቀብለናል, ጥያቄው የሚፈልገውን መስመሮች በብዜቱ ላይ እንደገና መጻፍ ሲኖርብን, የማባዛቱ ሂደት እርስዎ ያዋቀሩትን ጊዜ እስኪያልቅ ድረስ ይጠብቃል. እና ከዚያ PostgreSQL ለእሱ የበለጠ አስፈላጊ የሆነውን ይወስናል። እና ማባዛት ለእሱ ከጥያቄ የበለጠ አስፈላጊ ነው, እና እነዚህን ለውጦች ቅጂው ላይ ለማድረግ ጥያቄውን ይተኩሳል.

አንድሪው አንድ ጥያቄ አለኝ። በአቀራረብ ወቅት ያሳዩዋቸው እነዚህ ድንቅ ግራፊክስ፣ ይህ የእርስዎ የፍጆታ አንዳንድ ስራ ውጤት ነው? ሰንጠረዦቹ እንዴት ተሠሩ?

ይህ አገልግሎት ነው። ኦክሜትር.

ይህ የንግድ ምርት ነው?

አዎ. ይህ የንግድ ምርት ነው.

ምንጭ: hab.com

አስተያየት ያክሉ