ကျွန်ုပ်၏အမြင်အရ၊ ယခင်ထုတ်ဝေမှုများနှင့်မတူဘဲ၊ 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 အညွှန်းကိန်းများတွင် ပြဿနာတစ်ခုရှိသည် - ၎င်းတို့
PostgreSQL 12 သည် B-tree အညွှန်းကိန်းများ၏ စွမ်းဆောင်ရည်ကို များစွာတိုးတက်ကောင်းမွန်စေပြီး TPC-C ကဲ့သို့သော စံနှုန်းများဖြင့် စမ်းသပ်မှုများသည် ယခုအခါ ပျမ်းမျှ နေရာ 40% လျော့နည်းသွားကြောင်း ပြသခဲ့သည်။ ယခု ကျွန်ုပ်တို့သည် B-tree အညွှန်းကိန်းများကို ထိန်းသိမ်းထားရုံသာမက (ဆိုလိုသည်မှာ ရေးရန်လုပ်ဆောင်ချက်များ) တွင်သာမက အညွှန်းကိန်းများသည် များစွာသေးငယ်သောကြောင့် ဒေတာပြန်လည်ရယူရာတွင်လည်း အချိန်နည်းပါသည်။
၎င်းတို့၏ ဇယားများကို တက်ကြွစွာ အပ်ဒိတ်လုပ်သော အပလီကေးရှင်းများ - ပုံမှန်အားဖြင့် OLTP အပလီကေးရှင်းများ (
အချို့သော အဆင့်မြှင့်တင်နည်းဗျူဟာများသည် ဤအကျိုးကျေးဇူးများကို အသုံးချရန် B-tree အညွှန်းကိန်းများကို ပြန်လည်တည်ဆောက်ရန် လိုအပ်သည် (ဥပမာ။
PostgreSQL 12 တွင် အညွှန်းရေးအခြေခံအဆောက်အအုံအတွက် အခြားတိုးတက်မှုများ ရှိသေးသည်။ နောက်တစ်ခုက မှော်အတတ်တွေရှိခဲ့တယ်၊
PostgreSQL 12 သည် အညွှန်းတည်ဆောက်မှုအတွင်း GiST၊ GIN နှင့် SP-GiST အညွှန်းများဖြင့် ဖန်တီးထားသည့် WAL မှတ်တမ်းများ၏ ထိပ်ပိုင်းကို လျှော့ချထားသည်။ ၎င်းသည် မြင်သာထင်သာသော အကျိုးကျေးဇူးများစွာကို ပေးဆောင်သည်- WAL မှတ်တမ်းများသည် ဒစ်ခ်နေရာယူမှု နည်းပါးသွားပြီး၊ သဘာဝဘေးအန္တရာယ် ပြန်လည်ရယူနေစဉ် သို့မဟုတ် အချိန်မီပြန်လည်ရယူခြင်းကဲ့သို့သော ဒေတာများကို ပိုမိုမြန်ဆန်စွာ ပြန်ဖွင့်ပါသည်။ သင့်အပလီကေးရှင်းများတွင် ထိုကဲ့သို့သောအညွှန်းများကိုအသုံးပြုပါက (ဥပမာ၊ PostGIS-based geospatial applications များသည် GiST အညွှန်းကိန်းကိုများစွာအသုံးပြုသည်)၊ ၎င်းသည် သင့်ဘက်မှ အားထုတ်စရာမလိုဘဲ အတွေ့အကြုံကို သိသိသာသာတိုးတက်စေမည့် အခြားအင်္ဂါရပ်တစ်ခုဖြစ်သည်။
ပိုင်းခြားခြင်း - ပိုကြီး၊ ပိုကောင်း၊ ပိုမြန်သည်။
PostgreSQL 10 ကို မိတ်ဆက်ခဲ့သည်။
PostgreSQL 12 တွင်၊ အထူးသဖြင့် ဇယားတွင် အပိုင်းခွဲထောင်ပေါင်းများစွာ ရှိနေပါက၊ ပိုင်းခြားခြင်းစနစ်၏ စွမ်းဆောင်ရည်သည် သိသိသာသာ ကောင်းမွန်လာသည်။ ဥပမာအားဖြင့်၊ query တစ်ခုသည် ထောင်ပေါင်းများစွာသော ဇယားတစ်ခုရှိ partition အနည်းငယ်ကိုသာ အကျိုးသက်ရောက်ပါက၊ ၎င်းသည် ပိုမိုမြန်ဆန်စွာ လုပ်ဆောင်နိုင်မည်ဖြစ်သည်။ ဤမေးခွန်းအမျိုးအစားများအတွက် စွမ်းဆောင်ရည်ကို တိုးတက်စေရုံမျှမကပါ။ အပိုင်းများစွာပါသော ဇယားများတွင် INSERT လုပ်ဆောင်ချက်များ မည်မျှမြန်သည်ကို သင်လည်း သတိပြုမိပါလိမ့်မည်။
ဒေတာကို အသုံးပြု၍ မှတ်တမ်းတင်ခြင်း။
ဤအားသာချက်များကြောင့် PostgreSQL သည် သင့်အား ပိုမိုကြီးမားသောဒေတာအတွဲများကိုပင် သိမ်းဆည်းနိုင်ပြီး ၎င်းတို့ကို ပြန်လည်ရယူရန် ပိုမိုလွယ်ကူစေပါသည်။ ပြီးတော့ မင်းဘက်ကလည်း အားထုတ်မှုမရှိဘူး။ အပလီကေးရှင်းတွင် အချိန်စီးရီးဒေတာကို မှတ်တမ်းတင်ခြင်းကဲ့သို့သော အပိုင်းအပိုင်းများစွာပါရှိပါက၊ ရိုးရှင်းသော အဆင့်မြှင့်တင်မှုသည် ၎င်း၏စွမ်းဆောင်ရည်ကို သိသိသာသာ တိုးတက်စေမည်ဖြစ်သည်။
၎င်းသည် "အဆင့်မြှင့်တင်ခြင်းနှင့် ပျော်ရွှင်ခြင်း" တိုးတက်မှု အတိအကျမဟုတ်သော်လည်း၊ PostgreSQL 12 သည် သင့်အား ပိုင်းခြားထားသောဇယားများကို ရည်ညွှန်းသည့် နိုင်ငံခြားသော့များကို ဖန်တီးနိုင်စေပြီး အပိုင်းပိုင်းခွဲခြင်းကို ပျော်ရွှင်ဖွယ်ဖြစ်စေသည်။
စုံစမ်းမေးမြန်းမှုများနှင့်အတူ ပိုမိုကောင်းမွန်လာသည်။
ရသောအခါ
SQL မှ အသစ်အဆန်းများသည် CTEs များကို အသုံးပြုရတာကို နှစ်သက်ကြသည်ကို မကြာခဏ တွေ့ရသည်၊ ၎င်းတို့ကို တိကျသောနည်းဖြင့် ရေးပါက၊ သင်သည် အရေးကြီးသော ပရိုဂရမ်တစ်ခုကို ရေးနေသကဲ့သို့ ခံစားရသည်။ ကိုယ်တိုင်ကိုယ်ကျ၊ ဒီမေးခွန်းတွေကို ပြန်ရေးရတာ သဘောကျတယ်။ မပါဘဲ CTE နှင့်ကုန်ထုတ်စွမ်းအားတိုးစေသည်။ ခုတော့ အရာအားလုံးက မတူဘူး။
PostgreSQL 12 သည် သင့်အား ဘေးထွက်ဆိုးကျိုးမရှိဘဲ သီးခြား CTE အမျိုးအစားကို ထည့်သွင်းနိုင်သည် (SELECT
) တောင်းဆိုမှုပြီးဆုံးခါနီးတွင် တစ်ကြိမ်သာအသုံးပြုသည်။ ငါပြန်ရေးခဲ့သော CTE မေးခွန်းများကို ခြေရာခံမိပါက၊ ၎င်းတို့အများစုသည် ဤအမျိုးအစားထဲသို့ ရောက်သွားမည်ဖြစ်သည်။ ၎င်းသည် developer များအား လျင်မြန်စွာ လုပ်ဆောင်နိုင်သည့် ရှင်းလင်းသောကုဒ်ကို ရေးသားရန် ကူညီပေးသည်။
ထို့အပြင်၊ PostgreSQL 12 သည် သင်ဘာမှလုပ်စရာမလိုဘဲ SQL လုပ်ဆောင်မှုကို သူ့ဘာသာသူ အကောင်းဆုံးဖြစ်အောင် လုပ်ဆောင်ပေးသည်။ ယခုထိုကဲ့သို့သောမေးခွန်းများကို optimize လုပ်ရန်မလိုအပ်သော်လည်း၊ PostgreSQL သည် query optimization ကိုဆက်လက်လုပ်ဆောင်နေသည်မှာကောင်းမွန်ပါသည်။
Just-in-Time (JIT) - ယခု ပုံသေဖြစ်သည်။
ပံ့ပိုးမှုနှင့်အတူ PostgreSQL 12 စနစ်များပေါ်တွင်
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