ပျင်းရိသူများအတွက် အဆင့်မြှင့်ပါ- PostgreSQL 12 သည် စွမ်းဆောင်ရည်ကို မည်သို့တိုးတက်ကောင်းမွန်စေမည်နည်း။

ပျင်းရိသူများအတွက် အဆင့်မြှင့်ပါ- PostgreSQL 12 သည် စွမ်းဆောင်ရည်ကို မည်သို့တိုးတက်ကောင်းမွန်စေမည်နည်း။

PostgreSQL ၁၁"ကမ္ဘာ့အကောင်းဆုံး open source ဆက်စပ်ဒေတာဘေ့စ်" ၏နောက်ဆုံးဗားရှင်းသည် ရက်သတ္တပတ်အနည်းငယ်အတွင်း (အားလုံးအစီအစဉ်အတိုင်းဖြစ်လျှင်) ထွက်လာပါမည်။ ၎င်းသည် တစ်နှစ်လျှင် တစ်ကြိမ် အင်္ဂါရပ်အသစ်များစွာဖြင့် ဗားရှင်းအသစ်ကို ထုတ်ဝေသည့် ပုံမှန်အချိန်ဇယားအတိုင်း လုပ်ဆောင်နေပြီး ပွင့်ပွင့်လင်းလင်းပြောရလျှင် အလွန်အထင်ကြီးစရာကောင်းသည်။ ထို့ကြောင့် ကျွန်ုပ်သည် PostgreSQL အသိုက်အဝန်း၏ တက်ကြွသောအဖွဲ့ဝင်တစ်ဦး ဖြစ်လာခဲ့သည်။

ကျွန်ုပ်၏အမြင်အရ၊ ယခင်ထုတ်ဝေမှုများနှင့်မတူဘဲ၊ PostgreSQL 12 တွင် တော်လှန်သောအင်္ဂါရပ်တစ်ခု သို့မဟုတ် နှစ်ခုမပါဝင်ပါ (အပိုင်းပိုင်းခွဲခြင်း သို့မဟုတ် စုံစမ်းမေးမြန်းမှုအပြိုင်များကဲ့သို့)။ PostgreSQL 12 ၏ အဓိကအင်္ဂါရပ်မှာ တည်ငြိမ်မှု ပိုကောင်းသည်ဟု တစ်ခါက အရွှန်းဖောက်ခဲ့ဖူးသည်။ သင့်လုပ်ငန်း၏ အရေးကြီးသောဒေတာကို သင်စီမံခန့်ခွဲသည့်အခါ သင်လိုအပ်သောအရာမဟုတ်လော။

သို့သော် PostgreSQL 12 သည် ထိုနေရာတွင် ရပ်မနေပါ- အင်္ဂါရပ်အသစ်များနှင့် တိုးတက်မှုများဖြင့်၊ အပလီကေးရှင်းများ ပိုမိုလုပ်ဆောင်နိုင်လိမ့်မည်၊ ပြီးတော့ သင်လုပ်ရမှာက အဆင့်မြှင့်ဖို့ပါပဲ။

(ကောင်းပြီ၊ ညွှန်းကိန်းများကို ပြန်လည်တည်ဆောက်နိုင်သော်လည်း ဤထုတ်ဝေမှုတွင် ကျွန်ုပ်တို့သည် ယခင်ကဲ့သို့ ကြောက်စရာမဟုတ်ပေ။)

PostgreSQL ကို အဆင့်မြှင့်ပြီး မလိုအပ်ဘဲ စိတ်ရှုပ်စရာမရှိဘဲ သိသာထင်ရှားသော တိုးတက်မှုများကို ချက်ခြင်းခံစားနိုင်သည် ။ လွန်ခဲ့သောနှစ်အနည်းငယ်က၊ PostgreSQL 9.4 မှ PostgreSQL 10 သို့ အဆင့်မြှင့်တင်မှုကို ပြန်လည်သုံးသပ်ပြီး PostgreSQL 10 တွင် တိုးတက်ကောင်းမွန်သော query parallelism ကြောင့် အပလီကေးရှင်းသည် မည်ကဲ့သို့ အရှိန်မြှင့်လာသည်ကို တွေ့ခဲ့ရသည်။ အရေးအကြီးဆုံးမှာ၊ ကျွန်ုပ်ထံမှ မည်သည့်အရာမျှ မလိုအပ်ပါ (ဖွဲ့စည်းမှုဘောင်တစ်ခုမျှသာ သတ်မှတ်လိုက်ပါ၊ max_parallel_workers).

သဘောတူပါသည်၊ အဆင့်မြှင့်ပြီးနောက် အပလီကေးရှင်းများ ပိုမိုကောင်းမွန်စွာ အလုပ်လုပ်သောအခါတွင် အဆင်ပြေပါသည်။ PostgreSQL တွင် ၎င်းတို့ထဲမှ ပိုများလာသောကြောင့် သုံးစွဲသူများကို ကျေနပ်စေရန် ကျွန်ုပ်တို့ အလွန်ကြိုးစားပါသည်။

ထို့ကြောင့် PostgreSQL 12 သို့ ရိုးရှင်းသော အဆင့်မြှင့်တင်ခြင်းသည် သင့်အား မည်သို့ ပျော်ရွှင်စေမည်နည်း။ အခုပြောပြမယ်။

အဓိက ညွှန်းကိန်းတိုးတက်မှုများ

အညွှန်းမတင်ဘဲ၊ ဒေတာဘေ့စ်တစ်ခုသည် ဝေးသွားမည်မဟုတ်ပါ။ အချက်အလက်တွေကို မြန်မြန်ဆန်ဆန် ဘယ်လိုရှာနိုင်မလဲ။ PostgreSQL ၏အခြေခံအညွှန်းကိန်းစနစ်ဟုခေါ်သည်။ ခ-သစ်ပင်. ဤအညွှန်းအမျိုးအစားကို သိုလှောင်မှုစနစ်များအတွက် အကောင်းဆုံးဖြစ်အောင် ပြုလုပ်ထားသည်။

ကျွန်ုပ်တို့သည် ရိုးရိုးအော်ပရေတာကို အသုံးပြုပါသည်။ CREATE INDEX ON some_table (some_column)၊ နှင့် PostgreSQL သည် တန်ဖိုးများကို အဆက်မပြတ်ထည့်သွင်းခြင်း၊ အပ်ဒိတ်လုပ်ခြင်းနှင့် ဖျက်ခြင်းတို့ ပြုလုပ်နေစဉ် အညွှန်းကိန်းကို ခေတ်မီနေစေရန် လုပ်ဆောင်ပေးပါသည်။ အရာရာတိုင်းဟာ မှော်ပညာနဲ့ သူ့ဘာသာသူ လုပ်ဆောင်တယ်။

သို့သော် PostgreSQL အညွှန်းကိန်းများတွင် ပြဿနာတစ်ခုရှိသည် - ၎င်းတို့ ဖောင်းနေကြတယ်။ အပိုဒစ်နေရာကိုယူကာ ဒေတာပြန်လည်ရယူခြင်းနှင့် မွမ်းမံခြင်း၏စွမ်းဆောင်ရည်ကို လျှော့ချပါ။ "bloat" အားဖြင့် ငါသည် အညွှန်းကိန်းဖွဲ့စည်းပုံကို ထိရောက်စွာ ထိန်းသိမ်းထားခြင်းကို ဆိုလိုသည်။ ၎င်းသည် ဖယ်ရှားသည့် အမှိုက်ပုံးများနှင့် ဆက်စပ်နေနိုင်သည် သို့မဟုတ် ဖြစ်နိုင်သည်။ အနုပညာ (အချက်အလက်အတွက် Peter Gaghan ကိုကျေးဇူးတင်ပါသည်။)Peter Geoghegan) ) ။ အညွှန်းကိန်းသည် တက်ကြွစွာပြောင်းလဲနေသည့် အလုပ်တာဝန်များတွင် အထူးသဖြင့် သိသာထင်ရှားသည်။

PostgreSQL 12 သည် B-tree အညွှန်းကိန်းများ၏ စွမ်းဆောင်ရည်ကို များစွာတိုးတက်ကောင်းမွန်စေပြီး TPC-C ကဲ့သို့သော စံနှုန်းများဖြင့် စမ်းသပ်မှုများသည် ယခုအခါ ပျမ်းမျှ နေရာ 40% လျော့နည်းသွားကြောင်း ပြသခဲ့သည်။ ယခု ကျွန်ုပ်တို့သည် B-tree အညွှန်းကိန်းများကို ထိန်းသိမ်းထားရုံသာမက (ဆိုလိုသည်မှာ ရေးရန်လုပ်ဆောင်ချက်များ) တွင်သာမက အညွှန်းကိန်းများသည် များစွာသေးငယ်သောကြောင့် ဒေတာပြန်လည်ရယူရာတွင်လည်း အချိန်နည်းပါသည်။

၎င်းတို့၏ ဇယားများကို တက်ကြွစွာ အပ်ဒိတ်လုပ်သော အပလီကေးရှင်းများ - ပုံမှန်အားဖြင့် OLTP အပလီကေးရှင်းများ (အချိန်နှင့်တစ်ပြေးညီ ငွေပေးငွေယူ လုပ်ဆောင်ခြင်း။) - ဒစ်ခ်နှင့် တောင်းဆိုမှုများကို လုပ်ဆောင်ရာတွင် ပိုမိုထိရောက်စွာ အသုံးပြုပါမည်။ disk space များလေ၊ အခြေခံအဆောက်အအုံကို အဆင့်မြှင့်တင်ခြင်းမပြုဘဲ ဒေတာဘေ့စ်အတွက် နေရာပိုရလေဖြစ်သည်။

အချို့သော အဆင့်မြှင့်တင်နည်းဗျူဟာများသည် ဤအကျိုးကျေးဇူးများကို အသုံးချရန် B-tree အညွှန်းကိန်းများကို ပြန်လည်တည်ဆောက်ရန် လိုအပ်သည် (ဥပမာ။ pg_ အဆင့်မြှင့်တင်ခြင်း။ အညွှန်းများကို အလိုအလျောက် ပြန်လည်တည်ဆောက်မည်မဟုတ်ပါ။) PostgreSQL ၏ ယခင်ဗားရှင်းများတွင်၊ ဇယားများပေါ်ရှိ ကြီးမားသော အညွှန်းကိန်းများကို ပြန်လည်တည်ဆောက်ခြင်းသည် ထိုအချိန်တွင် အပြောင်းအလဲများကို မပြုလုပ်နိုင်ခဲ့သောကြောင့် သိသာထင်ရှားသော အချိန်ကုန်သွားစေသည်။ သို့သော် PostgreSQL 12 တွင် နောက်ထပ် ထူးခြားသော အင်္ဂါရပ်တစ်ခု ရှိသည်- ယခု သင်သည် အညွှန်းကိန်းများကို command နှင့်အပြိုင် ပြန်လည်တည်ဆောက်နိုင်သည် REINDEX သည် တစ်ပြိုင်နက်တည်းစက်ရပ်ခြင်းကို လုံးဝရှောင်ရှားရန်။

PostgreSQL 12 တွင် အညွှန်းရေးအခြေခံအဆောက်အအုံအတွက် အခြားတိုးတက်မှုများ ရှိသေးသည်။ နောက်တစ်ခုက မှော်အတတ်တွေရှိခဲ့တယ်၊ ကြိုရေးမှတ်ထားပါ။WAL (ရှေ့တွင်ရေးသောမှတ်တမ်း)။ ပျက်ကွက်ခြင်းနှင့် ထပ်တူထပ်မျှဖြစ်သောအခါတွင် PostgreSQL ရှိ ငွေပေးငွေယူတိုင်းကို ရေးမှတ်ထားသော မှတ်တမ်းတစ်ခုက မှတ်တမ်းတင်သည်။ အပလီကေးရှင်းများက ၎င်းကို သိမ်းဆည်းခြင်းနှင့် သိမ်းဆည်းခြင်းအတွက် အသုံးပြုသည်။ point-in-time ပြန်လည်ရယူခြင်း။. အမှန်တော့၊ ရေးမှတ်ထားသော မှတ်တမ်းသည် စွမ်းဆောင်ရည်ကို ထိခိုက်စေနိုင်သည့် ဒစ်ခ်သို့ ရေးထားသည်။

PostgreSQL 12 သည် အညွှန်းတည်ဆောက်မှုအတွင်း GiST၊ GIN နှင့် SP-GiST အညွှန်းများဖြင့် ဖန်တီးထားသည့် WAL မှတ်တမ်းများ၏ ထိပ်ပိုင်းကို လျှော့ချထားသည်။ ၎င်းသည် မြင်သာထင်သာသော အကျိုးကျေးဇူးများစွာကို ပေးဆောင်သည်- WAL မှတ်တမ်းများသည် ဒစ်ခ်နေရာယူမှု နည်းပါးသွားပြီး၊ သဘာဝဘေးအန္တရာယ် ပြန်လည်ရယူနေစဉ် သို့မဟုတ် အချိန်မီပြန်လည်ရယူခြင်းကဲ့သို့သော ဒေတာများကို ပိုမိုမြန်ဆန်စွာ ပြန်ဖွင့်ပါသည်။ သင့်အပလီကေးရှင်းများတွင် ထိုကဲ့သို့သောအညွှန်းများကိုအသုံးပြုပါက (ဥပမာ၊ PostGIS-based geospatial applications များသည် GiST အညွှန်းကိန်းကိုများစွာအသုံးပြုသည်)၊ ၎င်းသည် သင့်ဘက်မှ အားထုတ်စရာမလိုဘဲ အတွေ့အကြုံကို သိသိသာသာတိုးတက်စေမည့် အခြားအင်္ဂါရပ်တစ်ခုဖြစ်သည်။

ပိုင်းခြားခြင်း - ပိုကြီး၊ ပိုကောင်း၊ ပိုမြန်သည်။

PostgreSQL 10 ကို မိတ်ဆက်ခဲ့သည်။ ကြေငြာပိုင်းခြားခြင်း. PostgreSQL 11 တွင်၎င်းသည်အသုံးပြုရပိုမိုလွယ်ကူလာသည်။ PostgreSQL 12 တွင် သင်သည် ကဏ္ဍများ၏ အတိုင်းအတာကို ပြောင်းလဲနိုင်သည်။

PostgreSQL 12 တွင်၊ အထူးသဖြင့် ဇယားတွင် အပိုင်းခွဲထောင်ပေါင်းများစွာ ရှိနေပါက၊ ပိုင်းခြားခြင်းစနစ်၏ စွမ်းဆောင်ရည်သည် သိသိသာသာ ကောင်းမွန်လာသည်။ ဥပမာအားဖြင့်၊ query တစ်ခုသည် ထောင်ပေါင်းများစွာသော ဇယားတစ်ခုရှိ partition အနည်းငယ်ကိုသာ အကျိုးသက်ရောက်ပါက၊ ၎င်းသည် ပိုမိုမြန်ဆန်စွာ လုပ်ဆောင်နိုင်မည်ဖြစ်သည်။ ဤမေးခွန်းအမျိုးအစားများအတွက် စွမ်းဆောင်ရည်ကို တိုးတက်စေရုံမျှမကပါ။ အပိုင်းများစွာပါသော ဇယားများတွင် INSERT လုပ်ဆောင်ချက်များ မည်မျှမြန်သည်ကို သင်လည်း သတိပြုမိပါလိမ့်မည်။

ဒေတာကို အသုံးပြု၍ မှတ်တမ်းတင်ခြင်း။ မိတ္တူ - စကားမစပ်၊ ဤသည်အလွန်ကောင်းသောနည်းလမ်းဖြစ်သည်။ ဒေတာအစုလိုက် ဒေါင်းလုဒ်လုပ်ခြင်း။ ဒါက ဥပမာတစ်ခုပါ။ JSON ကိုလက်ခံသည်။ — PostgreSQL 12 တွင် ပိုင်းခြားထားသော ဇယားများသည်လည်း ပိုမိုထိရောက်လာသည်။ COPY ဖြင့် အရာအားလုံးသည် မြန်ဆန်နေပြီဖြစ်သော်လည်း PostgreSQL 12 တွင် ၎င်းသည် လုံးဝပျံသွားပါသည်။

ဤအားသာချက်များကြောင့် PostgreSQL သည် သင့်အား ပိုမိုကြီးမားသောဒေတာအတွဲများကိုပင် သိမ်းဆည်းနိုင်ပြီး ၎င်းတို့ကို ပြန်လည်ရယူရန် ပိုမိုလွယ်ကူစေပါသည်။ ပြီးတော့ မင်းဘက်ကလည်း အားထုတ်မှုမရှိဘူး။ အပလီကေးရှင်းတွင် အချိန်စီးရီးဒေတာကို မှတ်တမ်းတင်ခြင်းကဲ့သို့သော အပိုင်းအပိုင်းများစွာပါရှိပါက၊ ရိုးရှင်းသော အဆင့်မြှင့်တင်မှုသည် ၎င်း၏စွမ်းဆောင်ရည်ကို သိသိသာသာ တိုးတက်စေမည်ဖြစ်သည်။

၎င်းသည် "အဆင့်မြှင့်တင်ခြင်းနှင့် ပျော်ရွှင်ခြင်း" တိုးတက်မှု အတိအကျမဟုတ်သော်လည်း၊ PostgreSQL 12 သည် သင့်အား ပိုင်းခြားထားသောဇယားများကို ရည်ညွှန်းသည့် နိုင်ငံခြားသော့များကို ဖန်တီးနိုင်စေပြီး အပိုင်းပိုင်းခွဲခြင်းကို ပျော်ရွှင်ဖွယ်ဖြစ်စေသည်။

စုံစမ်းမေးမြန်းမှုများနှင့်အတူ ပိုမိုကောင်းမွန်လာသည်။

ရသောအခါ Built-in ဘုံဇယားအသုံးအနှုန်းများအတွက် patch တစ်ခုကို အသုံးပြုခဲ့သည်။ (aka CTE၊ aka WITH queries) အကြောင်း ဆောင်းပါးတစ်ပုဒ်ရေးဖို့ မစောင့်နိုင်တော့ဘူး။ PostgreSQL ဖြင့် အပလီကေးရှင်း developer များ မည်မျှ ပျော်ရွှင်ခဲ့ကြသနည်း။. ၎င်းသည် အပလီကေးရှင်းကို အရှိန်မြှင့်ပေးမည့် အင်္ဂါရပ်များထဲမှ တစ်ခုဖြစ်သည်။ မဟုတ်ပါက၊ သင်သည် CTE ကိုအသုံးပြုသည်။

SQL မှ အသစ်အဆန်းများသည် CTEs များကို အသုံးပြုရတာကို နှစ်သက်ကြသည်ကို မကြာခဏ တွေ့ရသည်၊ ၎င်းတို့ကို တိကျသောနည်းဖြင့် ရေးပါက၊ သင်သည် အရေးကြီးသော ပရိုဂရမ်တစ်ခုကို ရေးနေသကဲ့သို့ ခံစားရသည်။ ကိုယ်တိုင်ကိုယ်ကျ၊ ဒီမေးခွန်းတွေကို ပြန်ရေးရတာ သဘောကျတယ်။ မပါဘဲ CTE နှင့်ကုန်ထုတ်စွမ်းအားတိုးစေသည်။ ခုတော့ အရာအားလုံးက မတူဘူး။

PostgreSQL 12 သည် သင့်အား ဘေးထွက်ဆိုးကျိုးမရှိဘဲ သီးခြား CTE အမျိုးအစားကို ထည့်သွင်းနိုင်သည် (SELECT) တောင်းဆိုမှုပြီးဆုံးခါနီးတွင် တစ်ကြိမ်သာအသုံးပြုသည်။ ငါပြန်ရေးခဲ့သော CTE မေးခွန်းများကို ခြေရာခံမိပါက၊ ၎င်းတို့အများစုသည် ဤအမျိုးအစားထဲသို့ ရောက်သွားမည်ဖြစ်သည်။ ၎င်းသည် developer များအား လျင်မြန်စွာ လုပ်ဆောင်နိုင်သည့် ရှင်းလင်းသောကုဒ်ကို ရေးသားရန် ကူညီပေးသည်။

ထို့အပြင်၊ PostgreSQL 12 သည် သင်ဘာမှလုပ်စရာမလိုဘဲ SQL လုပ်ဆောင်မှုကို သူ့ဘာသာသူ အကောင်းဆုံးဖြစ်အောင် လုပ်ဆောင်ပေးသည်။ ယခုထိုကဲ့သို့သောမေးခွန်းများကို optimize လုပ်ရန်မလိုအပ်သော်လည်း၊ PostgreSQL သည် query optimization ကိုဆက်လက်လုပ်ဆောင်နေသည်မှာကောင်းမွန်ပါသည်။

Just-in-Time (JIT) - ယခု ပုံသေဖြစ်သည်။

ပံ့ပိုးမှုနှင့်အတူ PostgreSQL 12 စနစ်များပေါ်တွင် LLVM JIT စုစည်းမှုကို မူရင်းအတိုင်း ဖွင့်ထားသည်။ ပထမဆုံးအနေနဲ့ သင်က အထောက်အပံ့ကို ရယူလိုက်ပါ။ JIT အချို့သော အတွင်းပိုင်း လုပ်ဆောင်ချက်များအတွက်၊ ဒုတိယအနေနှင့်၊ ရွေးချယ်ထားသော စာရင်းများ (အရိုးရှင်းဆုံး ဥပမာမှာ x + y) ဟူသော စကားရပ်များပါသော မေးခွန်းများ (SELECT ပြီးနောက်)၊ စုစည်းမှုများ၊ WHERE clauses ပါသော စကားရပ်များနှင့် အခြားအရာများသည် စွမ်းဆောင်ရည် မြှင့်တင်ရန် JIT ကို အသုံးပြုနိုင်ပါသည်။

PostgreSQL 12 တွင် JIT ကို မူရင်းအတိုင်း ဖွင့်ထားသောကြောင့် စွမ်းဆောင်ရည်မှာ သူ့ဘာသာသူ တိုးတက်လာမည်ဖြစ်သော်လည်း JIT ကို မိတ်ဆက်ခဲ့သည့် PostgreSQL 11 တွင် အပလီကေးရှင်းကို စမ်းသပ်ကြည့်ရန် အကြံပြုလိုသည်မှာ query performance ကို တိုင်းတာပြီး တစ်စုံတစ်ရာ ချိန်ညှိရန် လိုအပ်သည်ဆိုသည်ကို ကြည့်ရှုပါ။

PostgreSQL 12 တွင် ကျန်အင်္ဂါရပ်အသစ်များကော ဘယ်လိုလဲ။

PostgreSQL 12 တွင် ပုံမှန် SQL/JSON လမ်းကြောင်းဖော်ပြချက်များကို အသုံးပြု၍ JSON ဒေတာကို ဆန်းစစ်နိုင်စွမ်းမှ ပါရာမီတာတစ်ခုဖြင့် အချက်ပေါင်းများစွာ စစ်မှန်ကြောင်းအထောက်အထားပြခြင်းအထိ၊ clientcert=verify-fullကော်လံများနှင့် အခြားအရာများစွာကို ဖန်တီးခဲ့သည်။ သီးခြားပို့စ်တစ်ခုအတွက် လုံလောက်ပါသည်။

PostgreSQL 10 ကဲ့သို့ပင်၊ PostgreSQL 12 သည် အဆင့်မြှင့်ပြီးနောက် အလုံးစုံစွမ်းဆောင်ရည်ကို မြှင့်တင်ပေးမည်ဖြစ်သည်။ သင်၏ကိုယ်ပိုင်လမ်းကြောင်းရှိနိုင်သည် - ကျွန်ုပ် PostgreSQL 10 ကဲ့သို့ တိုးတက်မှုများကို မဖွင့်မီ ထုတ်လုပ်မှုစနစ်တွင် အလားတူအခြေအနေများအောက်တွင် အပလီကေးရှင်းကို စမ်းသပ်ပါ။ PostgreSQL 12 သည် ကျွန်ုပ်မျှော်မှန်းထားသည်ထက် ပိုမိုတည်ငြိမ်နေပြီဆိုလျှင်ပင် စမ်းသပ်ရန် မပျင်းပါနှင့်။ အက်ပလီကေးရှင်းများကို ထုတ်လုပ်ခြင်းသို့ မထုတ်မီ စေ့စေ့စပ်စပ်လုပ်ပါ။

source: www.habr.com

မှတ်ချက် Add