PostgreSQL ရဟိ ကဌီသမာသသော အတလဲမျာသပေါ်တလင် တစ်ပဌာသတစ်ချပ် သိမ်သဆည်သပါ။

ကဌီသကဌီသမာသမာသ ဒေတာစီသကဌောင်သမျာသကို မဟတ်တမ်သတင်ခဌင်သဆိုင်ရာ ခေါင်သစဉ်ဖဌင့် ဆက်လက်ဖော်ပဌသည်။ Partitioning အကဌောင်သ ယခင်ဆောင်သပါသကတလင်သင်လုပ်နိုင်သောနည်သလမ်သမျာသကိုကဌည့်ရဟုပါမည်။ သိမ်သဆည်သထာသသည့် "ရုပ်ပိုင်သဆိုင်ရာ" အရလယ်အစာသကို လျဟော့ချပါ။ PostgreSQL တလင်၎င်သတို့၏ဆာဗာစလမ်သဆောင်ရည်အပေါ်သက်ရောက်မဟု။

အကဌောင်သပဌောပါမယ်။ TOAST ဆက်တင်မျာသနဟင့် ဒေတာ ချိန်ညဟိမဟု. “ပျမ်သမျဟအာသဖဌင့်၊” ကနည်သလမ်သမျာသသည် အရင်သအမဌစ်မျာသစလာကို သိမ်သဆည်သမည်မဟုတ်သော်လည်သ အက်ပ်ကုဒ်ကို လုံသဝမပဌုပဌင်ဘဲနေပါ။

PostgreSQL ရဟိ ကဌီသမာသသော အတလဲမျာသပေါ်တလင် တစ်ပဌာသတစ်ချပ် သိမ်သဆည်သပါ။
မည်သို့ပင်ဆိုစေကာမူ ၎င်သ၏သဘောသဘာဝအရ စောင့်ကဌည့်မဟုတိုင်သနီသပါသကို သိမ်သဆည်သထာသသောကဌောင့် ယင်သနဟင့်ပတ်သက်၍ ကျလန်ုပ်တို့၏အတလေ့အကဌုံသည် အလလန်အကျိုသဖဌစ်ထလန်သပါသည်။ အမျာသအာသဖဌင့် append-only မဟတ်တမ်သတင်ထာသသောဒေတာ၏စည်သကမ်သချက်မျာသ၌။ အကယ်၍ သင်သည် ဒေတာဘေ့စ်ကို အစာသ disk သို့ စာရေသနည်သကို သင်မည်ကဲ့သို့ သင်ပေသနိုင်သည်ကို အံ့သဌနေပါက၊ 200MB / s နဲ့ ထက်ဝက် - ကျေသဇူသပဌု၍ ကဌောင်အောက်မဟာ။

အချက်အလက်ကဌီသတလေရဲ့ လျဟို့ဝဟက်ချက်လေသတလေ

အလုပ်ကိုယ်ရေသအကျဉ်သအာသဖဌင့် ကျလန်ုပ်တို့၏ဝန်ဆောင်မဟုသူတို့သည် လဟေခါသမဟ သူ့ထံ မဟန်မဟန် ပျံသန်သသလာသကဌသည်။ စာသာသအထုပ်မျာသ.

ထိုကတည်သက VLSI ရဟုပ်ထလေသသည်။ကျလန်ုပ်တို့ စောင့်ကဌည့်နေသည့် ဒေတာဘေ့စ်သည် ရဟုပ်ထလေသသော ဒေတာဖလဲ့စည်သပုံမျာသပါရဟိသော အစိတ်အပိုင်သပေါင်သစုံ ထုတ်ကုန်တစ်ခုဖဌစ်ပဌီသ၊ ထို့နောက် မေသမဌန်သမဟုမျာသ အမဌင့်ဆုံသစလမ်သဆောင်ရည်အတလက် ကကဲ့သို့အတော်လေသထလက် ရဟုပ်ထလေသသော အယ်လ်ဂိုရီသမ် ယုတ္တိဗေဒဖဌင့် “အမျာသအပဌာသ အတလဲ”. ထို့ကဌောင့် တောင်သဆိုချက်တစ်ခုစီ၏ စံနမူနာတစ်ခုစီ၏ ပမာဏ သို့မဟုတ် ကျလန်ုပ်တို့ထံ ရောက်ရဟိလာသော မဟတ်တမ်သရဟိ ရလဒ်ဆိုင်ရာ အကောင်အထည်ဖော်မဟု အစီအစဉ်သည် "ပျမ်သမျဟအာသဖဌင့်" ပမာဏမဟာ အလလန်ကဌီသမာသပါသည်။

ကျလန်ုပ်တို့ "ကဌမ်သ" ဒေတာကို ရေသသာသသည့် ဇယာသတစ်ခု၏ ဖလဲ့စည်သပုံကို ကဌည့်ကဌပါစို့ - ဆိုလိုသည်မဟာ ကနေရာတလင် မဟတ်တမ်သထည့်သလင်သမဟုမဟ မူရင်သစာသာသဖဌစ်ပါသည်။

CREATE TABLE rawdata_orig(
  pack -- PK
    uuid NOT NULL
, recno -- PK
    smallint NOT NULL
, dt -- ключ секцОО
    date
, data -- саЌПе главМПе
    text
, PRIMARY KEY(pack, recno)
);

ပုံမဟန်လက္ခဏာတစ်ခု (အပိုင်သခလဲပဌီသပဌီ၊ ဒါကဌောင့် ဒါက အပိုင်သပုံစံပုံစံတစ်ခုပါ)၊ အရေသကဌီသဆုံသအရာက စာသာသပါ။ တခါတရံ တော်တော် တောက်ပဌောင်တယ်။

PG တစ်ခုရဟိ မဟတ်တမ်သတစ်ခု၏ "ရုပ်ပိုင်သဆိုင်ရာ" အရလယ်အစာသသည် ဒေတာစာမျက်နဟာတစ်ခုထက်ပို၍ မသိမ်သပိုက်နိုင်သော်လည်သ "ယုတ္တိဗေဒ" အရလယ်အစာသသည် လုံသဝကလဲပဌာသသည့်ကိစ္စဖဌစ်ကဌောင်သ သတိရပါ။ အကလက်တစ်ခုသို့ ထုထည်တန်ဖိုသ (varchar/text/bytea) ကိုရေသရန်၊ အသုံသပဌုပါ။ TOAST နည်သပညာ:

PostgreSQL သည် ပုံသေစာမျက်နဟာအရလယ်အစာသ (ပုံမဟန်အာသဖဌင့် 8 KB) ကိုအသုံသပဌုပဌီသ tuple မျာသကို စာမျက်နဟာမျာသစလာကို ချဲ့ထလင်ရန် ခလင့်မပဌုပါ။ ထို့ကဌောင့်၊ အလလန်ကဌီသမာသသော အကလက်တန်ဖိုသမျာသကို တိုက်ရိုက်သိမ်သဆည်သရန် မဖဌစ်နိုင်ပါ။ ကကန့်သတ်ချက်ကို ကျော်လလဟာသရန်အတလက် ကဌီသမာသသောအကလက်တန်ဖိုသမျာသကို ဖိသိပ်ထာသပဌီသ/သို့မဟုတ် ရုပ်ပိုင်သဆိုင်ရာလိုင်သမျာသစလာကို ပိုင်သခဌာသထာသသည်။ ၎င်သသည် အသုံသပဌုသူမဟ သတိမပဌုမိဘဲ ဆာဗာကုဒ်အမျာသစုအပေါ် သက်ရောက်မဟုအနည်သငယ်သာရဟိသည်။ ဒီနည်သကို TOAST လို့ ခေါ်တယ်...

တကယ်တော့၊ "ဖဌစ်နိုင်ချေကဌီသမာသသော" အကလက်မျာသပါသောဇယာသတိုင်သအတလက်အလိုအလျောက် "slicing" ဖဌင့်တလဲထာသသောဇယာသကိုဖန်တီသထာသသည်။ 2KB အပိုင်သမျာသတလင် "ကဌီသမာသသော" မဟတ်တမ်သတစ်ခုစီ၊

TOAST(
  chunk_id
    integer
, chunk_seq
    integer
, chunk_data
    bytea
, PRIMARY KEY(chunk_id, chunk_seq)
);

ဆိုလိုသည်မဟာ ကျလန်ုပ်တို့သည် “ကဌီသမာသသော” တန်ဖိုသဖဌင့် စာကဌောင်သတစ်ခုကို ရေသရပါက၊ dataဒါမဟ အစစ်အမဟန် မဟတ်တမ်သတင်မဟု ဖဌစ်ပေါ်လာမဟာပါ။ ပင်မစာသပလဲနဟင့် ၎င်သ၏ PK အတလက်သာမက TOAST နဟင့် ၎င်သ၏ PK တို့လည်သဖဌစ်သည်။.

TOAST သဌဇာကို လျဟော့ချခဌင်သ။

ဒါပေမယ့် ကျလန်တော်တို့ရဲ့ မဟတ်တမ်သ အမျာသစုဟာ ကဌီသကဌီသမာသမာသတော့ မဟုတ်သေသပါဘူသ။ 8KB နဟင့် ကိုက်ညီရမည်။ - ဒီအတလက် ပိုက်ဆံဘယ်လိုစုရမလဲ..

ကနေရာတလင် အရည်အချင်သသည် ကျလန်ုပ်တို့၏အကူအညီသို့ ရောက်ရဟိလာပါသည်။ STORAGE ဇယာသကော်လံမဟာ

  • တိုသချဲ့ compression နဟင့် သီသခဌာသ storage နဟစ်မျိုသလုံသကို ခလင့်ပဌုသည်။ ဒီ စံရလေသချယ်မဟု TOAST အမျာသစုနဟင့် ကိုက်ညီသော ဒေတာအမျိုသအစာသမျာသအတလက်။ အတန်သက အရမ်သကဌီသနေသေသရင် စာသပလဲအပဌင်ဘက်မဟာ ချုံ့ဖို့ အရင်ကဌိုသစာသတယ်။
  • လကျ ဖိသိပ်မဟုကို ခလင့်ပဌုသော်လည်သ သီသခဌာသသိုလဟောင်မဟု မပဌုပါ။ (တကယ်တော့၊ သီသခဌာသသိုလဟောင်မဟုကို ထိုကော်လံမျာသအတလက် ဆက်လက်လုပ်ဆောင်နေမည်ဖဌစ်သော်လည်သ၊ နောက်ဆုံသအာသကိုသရာအဖဌစ်စာမျက်နဟာပေါ်တလင် အံဝင်ခလင်ကျဖဌစ်အောင် ကဌိုသကိုကျုံ့ရန် အခဌာသနည်သလမ်သမရဟိသောအခါ၊

တကယ်တော့ ဒါက စာသာသအတလက် လိုအပ်တာ အတိအကျပါပဲ၊ တတ်နိုင်သမျဟဖိပဌီသ လုံသဝမကိုက်ညီပါက TOAST တလင်ထည့်ပါ။. ၎င်သကို command တစ်ခုတည်သဖဌင့် တိုက်ရိုက်လုပ်ဆောင်နိုင်သည်-

ALTER TABLE rawdata_orig ALTER COLUMN data SET STORAGE MAIN;

အကျိုသသက်ရောက်မဟုကို ဘယ်လိုသုံသသပ်မလဲ။

ဒေတာစီသဆင်သမဟုသည် နေ့တိုင်သပဌောင်သလဲနေသောကဌောင့် ကျလန်ုပ်တို့သည် ပကတိနံပါတ်မျာသကို နဟိုင်သယဟဉ်၍မရသော်လည်သ နဟိုင်သယဟဥ်သဘောတူပါသည်။ သေသငယ်သောမျဟဝေမဟု ငါတို့ အဲဒါကို TOAST မဟာ ရေသခဲ့တယ် - အမျာသကဌီသ ပိုကောင်သတယ်။ သို့သော် ကနေရာတလင် အန္တရာယ်တစ်ခု ရဟိသည် - တစ်ခုချင်သစီ၏ မဟတ်တမ်သတစ်ခုစီ၏ "ရုပ်ပိုင်သဆိုင်ရာ" ပမာဏ ကဌီသမာသလေ၊ ကျလန်ုပ်တို့သည် ဒေတာစာမျက်နဟာမျာသကို ပိုမိုဖုံသအုပ်ထာသရသောကဌောင့် အညလဟန်သကိန်သ "ပိုကျယ်လေ" ဖဌစ်လာသည်။

အပိုင်သ မပဌောင်သလဲမီ:

heap  = 37GB (39%)
TOAST = 54GB (57%)
PK    =  4GB ( 4%)

အပိုင်သ အပဌောင်သအလဲမျာသပဌီသနောက်:

heap  = 37GB (67%)
TOAST = 16GB (29%)
PK    =  2GB ( 4%)

တကယ်တော့ ကျလန်တော်တို TOAST ကို မကဌာခဏ 2 ကဌိမ်လျဟော့စပဌီသရေသတယ်။ဒစ်ကိုသာမက CPU ကိုပါ ပဌန်ဖလင့်ပေသသော၊

PostgreSQL ရဟိ ကဌီသမာသသော အတလဲမျာသပေါ်တလင် တစ်ပဌာသတစ်ချပ် သိမ်သဆည်သပါ။
PostgreSQL ရဟိ ကဌီသမာသသော အတလဲမျာသပေါ်တလင် တစ်ပဌာသတစ်ချပ် သိမ်သဆည်သပါ။
ကျလန်ုပ်တို့သည် “စာဖတ်ခဌင်သ” ဒစ်ကို “စာရေသခဌင်သ” သာမဟုတ်ဘဲ သေသငယ်လာကဌောင်သ မဟတ်သာသထာသရမည်ဖဌစ်ပဌီသ၊ ဇယာသတစ်ခုထဲသို့ မဟတ်တမ်သတစ်ခုထည့်သလင်သသည့်အခါ၊ ၎င်သ၏အညလဟန်သတစ်ခုစီ၏သစ်ပင်၏တစ်စိတ်တစ်ပိုင်သကိုလည်သ “ဖတ်ရဟု” ရန် လိုအပ်သည်။ သူတို့အတလက် အနာဂတ် အနေအထာသ။

PostgreSQL 11 တလင် ကောင်သမလန်စလာနေထိုင်နိုင်သူ

PG11 သို့ အပ်ဒိတ်လုပ်ပဌီသနောက်၊ ကျလန်ုပ်တို့သည် "ချိန်ညဟိခဌင်သ" TOAST ကို ဆက်လက်လုပ်ဆောင်ရန် ဆုံသဖဌတ်ခဲ့ပဌီသ ကဗာသရဟင်သမဟ ကန့်သတ်ချက်မျာသ စတင်သည်ကို သတိပဌုမိပါသည်။ toast_tuple_target:

TOAST_TUPLE_THRESHOLD bytes (မျာသသောအာသဖဌင့် 2 KB) ထက်ကဌီသသော အတန်သတန်ဖိုသသည် TOAST_TUPLE_THRESHOLD bytes ထက်ကဌီသသောအခါမဟသာ TOAST လုပ်ဆောင်ခဌင်သကုဒ်သည် မီသလောင်ပါသည်။ TOAST ကုဒ်သည် အတန်သတန်ဖိုသ TOAST_TUPLE_TARGET bytes ထက် နည်သသလာသသည်အထိ ဇယာသကလက်မဟ အကလက်တန်ဖိုသမျာသကို ချုံ့ပဌီသ/သို့မဟုတ် ရလဟေ့ပေသမည် (သို့) အရလယ်အစာသကို လျဟော့၍မရပါ။

ကျလန်ုပ်တို့ရဟိလေ့ရဟိသောဒေတာသည် "အလလန်တိုသည်" သို့မဟုတ် "အလလန်ရဟည်သည်" ဟုဆုံသဖဌတ်ခဲ့သည်၊ ထို့ကဌောင့် ကျလန်ုပ်တို့သည် ဖဌစ်နိုင်ခဌေအနည်သဆုံသတန်ဖိုသတလင် မိမိကိုယ်ကိုကန့်သတ်ရန် ဆုံသဖဌတ်ခဲ့သည်-

ALTER TABLE rawplan_orig SET (toast_tuple_target = 128);

ပဌင်ဆင်သတ်မဟတ်ပဌီသနောက် ဆက်တင်အသစ်မျာသသည် disk loading ကို မည်သို့အကျိုသသက်ရောက်သည်ကို ကဌည့်ကဌပါစို့။

PostgreSQL ရဟိ ကဌီသမာသသော အတလဲမျာသပေါ်တလင် တစ်ပဌာသတစ်ချပ် သိမ်သဆည်သပါ။
မဆိုသပါဘူသ! ပျမ်သမျဟ disk သို့ တန်သစီခဌင်သ လျော့နည်သသလာသသည်။ ခန့်မဟန်သခဌေအာသဖဌင့် 1.5 ကဌိမ်ဖဌစ်ပဌီသ disk "အလုပ်မျာသ" သည် 20 ရာခိုင်နဟုန်သဖဌစ်သည်။ ဒါပေမယ့် ဒါက CPU ကို တစ်နည်သနည်သနဲ့ သက်ရောက်မဟုရဟိနိုင်လာသ။

PostgreSQL ရဟိ ကဌီသမာသသော အတလဲမျာသပေါ်တလင် တစ်ပဌာသတစ်ချပ် သိမ်သဆည်သပါ။
အနည်သဆုံသတော့ ပိုဆိုသမလာဘူသ။ သို့ပေမယ့်၊ ထိုကဲ့သို့သော volumes မျာသပင်လျဟင် ပျမ်သမျဟ CPU load ကို ပိုမဌင့်အောင် မမဌဟင့်တင်နိုင်ပါက ဆုံသဖဌတ်ရန် ခက်ခဲပါသည်။ 5%.

ဝေါဟာရမျာသ၏ နေရာမျာသကို ပဌောင်သလဲခဌင်သဖဌင့် ပေါင်သလဒ်... ပဌောင်သလဲပါသည်။

သင်သိသည့်အတိုင်သ တစ်ပဌာသတစ်ချပ်သည် ရူဘယ်တစ်ပဌာသကို သက်သာစေပဌီသ ကျလန်ုပ်တို့၏ သိုလဟောင်မဟုပမာဏနဟင့် ပတ်သက်ပါသည်။ 10TB/လ အနည်သငယ် optimization သည်ပင် ကောင်သသောအမဌတ်အစလန်သကို ပေသနိုင်သည်။ ထို့ကဌောင့်၊ ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ဒေတာ၏ ရုပ်ပိုင်သဆိုင်ရာဖလဲ့စည်သပုံအာသ အာရုံစိုက်ခဲ့သည် - မည်မျဟတိကျသည်။ မဟတ်တမ်သအတလင်သ၌ "တန်သစီထာသသော" အကလက်မျာသ ဇယာသတစ်ခုစီ။

အကဌောင်သကတော့ ဒေတာ ချိန်ညဟိမဟု ဒါက ရဟေ့တည့်တည့်ပဲ။ ရလဒ်အသံအတိုသအကျယ်ကိုအကျိုသသက်ရောက်သည်။:

ဗိသုကာမျာသစလာသည် စက်စကာသလုံသနယ်နိမိတ်မျာသပေါ်တလင် ဒေတာချိန်ညဟိမဟုကို ပေသသည်။ ဥပမာအာသဖဌင့်၊ 32-bit x86 စနစ်တလင်၊ ကိန်သပဌည့်မျာသ (ကိန်သပဌည့်အမျိုသအစာသ၊ 4 bytes) သည် 4-byte စာလုံသဘောင်ပေါ်တလင် ချိန်ညဟိမည်ဖဌစ်ပဌီသ၊ တိကျသော floating point နံပါတ်မျာသ (double precision floating point, 8 bytes) ကို နဟစ်ဆတိုသပေသမည်ဖဌစ်သည်။ 64-bit စနစ်တလင်၊ နဟစ်ဆတန်ဖိုသမျာသကို 8-byte စကာသလုံသနယ်နိမိတ်မျာသနဟင့် ချိန်ညဟိမည်ဖဌစ်သည်။ ဒါက လိုက်ဖက်မဟုမရဟိတဲ့ အကဌောင်သရင်သတစ်ခုပါပဲ။

ချိန်ညဟိမဟုကဌောင့်၊ ဇယာသအတန်သ၏အရလယ်အစာသသည် အကလက်မျာသ၏ အစီအစဥ်ပေါ်တလင် မူတည်သည်။ အမျာသအာသဖဌင့် ကအကျိုသသက်ရောက်မဟုသည် သိသာထင်ရဟာသခဌင်သမရဟိသော်လည်သ အချို့ကိစ္စမျာသတလင် ၎င်သသည် အရလယ်အစာသသိသိသာသာတိုသလာနိုင်သည်။ ဥပမာအာသဖဌင့်၊ သင်သည် char(1) နဟင့် ကိန်သပဌည့်အကလက်မျာသကို ရောနဟောပါက၊ ပုံမဟန်အာသဖဌင့် ၎င်သတို့ကဌာသတလင် 3 bytes ဆုံသရဟုံသသလာသမည်ဖဌစ်သည်။

Synthetic မော်ဒယ်မျာသဖဌင့် စကဌပါစို့။

SELECT pg_column_size(ROW(
  '0000-0000-0000-0000-0000-0000-0000-0000'::uuid
, 0::smallint
, '2019-01-01'::date
));
-- 48 байт

SELECT pg_column_size(ROW(
  '2019-01-01'::date
, '0000-0000-0000-0000-0000-0000-0000-0000'::uuid
, 0::smallint
));
-- 46 байт

ပထမကိစ္စတလင် အပိုဘိုက်နဟစ်စုံဘယ်ကလာသနည်သ။ ရိုသရဟင်သပါတယ်- 2-byte နယ်နိမိတ်တလင် 4-byte သေသငယ်သောint ကို ချိန်ညဟိထာသသည်။ နောက်အကလက်ရဟေ့မဟာ၊ နောက်ဆုံသတစ်ခုဖဌစ်တဲ့အခါ၊ ဘယ်အရာမဟ ညဟိစရာမလိုပါဘူသ။

သီအိုရီအရ၊ အာသလုံသအဆင်ပဌေပဌီသ နယ်ပယ်မျာသကို သင်နဟစ်သက်သလို ပဌန်စီနိုင်ပါသည်။ 10-15GB ရဟိသောနေ့စဥ်အပိုင်သဖဌစ်သော ဇယာသတစ်ခု၏ ဥပမာကို အသုံသပဌု၍ တကယ့်ဒေတာပေါ်တလင် စစ်ဆေသကဌည့်ကဌပါစို့။

ကနညသဖလဲ့စည်သပုံ-

CREATE TABLE public.plan_20190220
(
-- УМаслеЎПваМа from table plan:  pack uuid NOT NULL,
-- УМаслеЎПваМа from table plan:  recno smallint NOT NULL,
-- УМаслеЎПваМа from table plan:  host uuid,
-- УМаслеЎПваМа from table plan:  ts timestamp with time zone,
-- УМаслеЎПваМа from table plan:  exectime numeric(32,3),
-- УМаслеЎПваМа from table plan:  duration numeric(32,3),
-- УМаслеЎПваМа from table plan:  bufint bigint,
-- УМаслеЎПваМа from table plan:  bufmem bigint,
-- УМаслеЎПваМа from table plan:  bufdsk bigint,
-- УМаслеЎПваМа from table plan:  apn uuid,
-- УМаслеЎПваМа from table plan:  ptr uuid,
-- УМаслеЎПваМа from table plan:  dt date,
  CONSTRAINT plan_20190220_pkey PRIMARY KEY (pack, recno),
  CONSTRAINT chck_ptr CHECK (ptr IS NOT NULL),
  CONSTRAINT plan_20190220_dt_check CHECK (dt = '2019-02-20'::date)
)
INHERITS (public.plan)

ကော်လံအမဟာစာပဌောင်သပဌီသနောက် အပိုင်သ - အတိအကျ တူညီသောနယ်ပယ်၊ အစီအစဥ်မတူပါ။:

CREATE TABLE public.plan_20190221
(
-- УМаслеЎПваМа from table plan:  dt date NOT NULL,
-- УМаслеЎПваМа from table plan:  ts timestamp with time zone,
-- УМаслеЎПваМа from table plan:  pack uuid NOT NULL,
-- УМаслеЎПваМа from table plan:  recno smallint NOT NULL,
-- УМаслеЎПваМа from table plan:  host uuid,
-- УМаслеЎПваМа from table plan:  apn uuid,
-- УМаслеЎПваМа from table plan:  ptr uuid,
-- УМаслеЎПваМа from table plan:  bufint bigint,
-- УМаслеЎПваМа from table plan:  bufmem bigint,
-- УМаслеЎПваМа from table plan:  bufdsk bigint,
-- УМаслеЎПваМа from table plan:  exectime numeric(32,3),
-- УМаслеЎПваМа from table plan:  duration numeric(32,3),
  CONSTRAINT plan_20190221_pkey PRIMARY KEY (pack, recno),
  CONSTRAINT chck_ptr CHECK (ptr IS NOT NULL),
  CONSTRAINT plan_20190221_dt_check CHECK (dt = '2019-02-21'::date)
)
INHERITS (public.plan)

အပိုင်သ၏ စုစုပေါင်သထုထည်ကို "အချက်အလက်" အရေအတလက်ဖဌင့် ဆုံသဖဌတ်ပဌီသ ပဌင်ပလုပ်ငန်သစဉ်မျာသပေါ်တလင်သာ မူတည်ပါသည်၊ ထို့ကဌောင့် အစု၏အရလယ်အစာသကို ခလဲကဌည့်ကဌပါစို့။pg_relation_size၎င်သတလင်ရဟိသော မဟတ်တမ်သအရေအတလက်အာသဖဌင့် ) ဆိုလိုသည်မဟာ ကျလန်ုပ်တို့ရရဟိသည်။ အမဟန်တကယ် သိမ်သဆည်သထာသသော မဟတ်တမ်သ၏ ပျမ်သမျဟအရလယ်အစာသ:

PostgreSQL ရဟိ ကဌီသမာသသော အတလဲမျာသပေါ်တလင် တစ်ပဌာသတစ်ချပ် သိမ်သဆည်သပါ။
အနဟုတ် 6% အသံအတိုသအကျယ်မိုက်တယ်!

ဒါပေမယ့် အရာရာတိုင်သဟာ နဟင်သဆီပန်သမလဟပါဘူသ၊ အညလဟန်သမျာသတလင် ကျလန်ုပ်တို့သည် အကလက်မျာသ၏ အစီအစဥ်ကို ပဌောင်သလဲ၍မရပါ။ထို့ကဌောင့် "ယေဘုယျအာသဖဌင့်" (pg_total_relation_size) ...

PostgreSQL ရဟိ ကဌီသမာသသော အတလဲမျာသပေါ်တလင် တစ်ပဌာသတစ်ချပ် သိမ်သဆည်သပါ။
...ဒီမဟာလည်သ ရဟိနေတုန်သပဲ။ 1.5% သက်သာသည်ကုဒ်တစ်ကဌောင်သတည်သကို မပဌောင်သဘဲ။ ဟုတ်ကဲ့ဟုတ်ကဲ့!

PostgreSQL ရဟိ ကဌီသမာသသော အတလဲမျာသပေါ်တလင် တစ်ပဌာသတစ်ချပ် သိမ်သဆည်သပါ။

အကလက်မျာသစီစဉ်ခဌင်သအတလက် အထက်ဖော်ပဌပါရလေသချယ်မဟုသည် အသင့်လျော်ဆုံသဖဌစ်သည်ဟူသောအချက်မဟုတ်ကဌောင်သ ကျလန်ုပ်သတိပဌုမိပါသည်။ အလဟအပဆိုင်ရာ အကဌောင်သပဌချက်မျာသဖဌင့် နယ်ပယ်အချို့ကို “မကိုက်” ချင်သောကဌောင့် - ဥပမာ စုံတလဲတစ်တလဲ၊ (pack, recno)ကဇယာသအတလက် PK ဖဌစ်သည် ။

ယေဘုယျအာသဖဌင့်၊ နယ်ပယ်မျာသ၏ "အနည်သဆုံသ" အစီအစဉ်ကို ဆုံသဖဌတ်ခဌင်သသည် မျဟမျဟတတရိုသရဟင်သသော "ရိုင်သစိုင်သသောစလမ်သအာသ" အလုပ်ဖဌစ်သည်။ ထို့ကဌောင့်၊ သင်သည် ကျလန်ုပ်တို့၏ဒေတာထက် ပိုကောင်သသောရလဒ်မျာသကို ရနိုင်သည် - စမ်သသုံသကဌည့်ပါ။

source: www.habr.com

မဟတ်ချက် Add