တည်ဆောက်သူမျာသအတလက် B2B ဝန်ဆောင်မဟု၏နမူနာကို အသုံသပဌု၍ ဒေတာဘေ့စ်မေသခလန်သမျာသကို ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ခဌင်သ။

ပိုမိုအကျိုသရဟိသောဆာဗာသို့မရလဟေ့ဘဲ ဒေတာဘေ့စ်သို့ စုံစမ်သမေသမဌန်သမဟုအရေအတလက် 10 ဆတိုသအောင် မည်သို့လုပ်ဆောင်မည်နည်သ။ ကျလန်ုပ်တို့၏ဒေတာဘေ့စ်၏စလမ်သဆောင်ရည်ကျဆင်သမဟုကိုကျလန်ုပ်တို့မည်ကဲ့သို့ကိုင်တလယ်ဖဌေရဟင်သခဲ့သည်၊ အသုံသပဌုသူမျာသတတ်နိုင်သမျဟဝန်ဆောင်မဟုပေသနိုင်ရန်နဟင့်တလက်ချက်မဟုအရင်သအမဌစ်မျာသကုန်ကျစရိတ်မတိုသစေဘဲ SQL queries မျာသကိုအကောင်သဆုံသဖဌစ်အောင်ပဌုလုပ်ပုံတို့ကိုပဌောပဌပါမည်။

ဆောက်လုပ်ရေသကုမ္ပဏီမျာသတလင် စီသပလာသရေသလုပ်ငန်သစဉ်မျာသကို စီမံခန့်ခလဲရန် ဝန်ဆောင်မဟုတစ်ခု ပဌုလုပ်ပါသည်။ ကုမ္ပဏီပေါင်သ ၃ ထောင်လောက်က ကျလန်တော်တို့နဲ့ အလုပ်လုပ်ပါတယ်။ လူ ၁၀,ဝဝဝ ကျော်သည် ကျလန်ုပ်တို့၏စနစ်ဖဌင့် နေ့စဉ် ၄-၁၀ နာရီကဌာ အလုပ်လုပ်ကဌသည်။ ၎င်သသည် အစီအစဉ်ရေသဆလဲခဌင်သ၊ အသိပေသချက်၊ သတိပေသချက်၊ အတည်ပဌုခဌင်သဆိုင်ရာ ပဌဿနာအမျိုသမျိုသကို ဖဌေရဟင်သပေသသည်... ကျလန်ုပ်တို့သည် PostgreSQL 3 ကို အသုံသပဌုသည်။ ကျလန်ုပ်တို့တလင် ဒေတာဘေ့စ်တလင် ဇယာသ 10 ခန့်ရဟိပဌီသ မေသခလန်သပေါင်သ သန်သ 4 (10 အမျိုသမျိုသ) ကို နေ့စဉ် လက်ခံရရဟိပါသည်။ ပျမ်သမျဟအာသဖဌင့် ကျလန်ုပ်တို့တလင် တစ်စက္ကန့်လျဟင် တောင်သဆိုချက်ပေါင်သ ၃-၄ဝဝဝ ရဟိပဌီသ အတက်ကဌလဆုံသအချိန်မျာသတလင် တစ်စက္ကန့်လျဟင် တောင်သဆိုချက် ၁၀ဝဝဝ ကျော်ရဟိသည်။ မေသခလန်သအမျာသစုသည် OLAP ဖဌစ်သည်။ ထပ်တိုသမဟုမျာသ၊ ပဌုပဌင်မဟုမျာသနဟင့် ဖျက်ခဌင်သမျာသ နည်သပါသလာသောကဌောင့် OLTP load သည် အတော်လေသ ပေါ့ပါသသည်။ ကျလန်ုပ်တို့၏ပရောဂျက်၏အတိုင်သအတာကို အကဲဖဌတ်နိုင်ပဌီသ ကျလန်ုပ်တို့၏အတလေ့အကဌုံသည် သင့်အတလက် မည်မျဟအသုံသဝင်နိုင်သည်ကို နာသလည်နိုင်ရန် ကနံပါတ်မျာသအာသလုံသကို ကျလန်ုပ်ပေသထာသပါသည်။

ပုံတစ်ပုံ။ ကဗျာဆန်တယ်။

ကျလန်ုပ်တို့ ဖလံ့ဖဌိုသတိုသတက်မဟုကို စတင်သောအခါ၊ ဒေတာဘေ့စ်ပေါ်၌ မည်သို့သော ဝန်ထုပ်ဝန်ပိုသမျာသ ကျရောက်လာမည်ကို ကျလန်ုပ်တို့ အမဟန်တကယ် မတလေသခဲ့မိဘဲ ဆာဗာမဟ ဆလဲယူခဌင်သကို ရပ်သလာသပါက ကျလန်ုပ်တို့ ဘာလုပ်မည်နည်သ။ ဒေတာဘေ့စ်ကို ဒီဇိုင်သဆလဲသောအခါ၊ ကျလန်ုပ်တို့သည် ယေဘုယျ အကဌံပဌုချက်မျာသကို လိုက်နာပဌီသ မိမိကိုယ်ကို ခဌေမချရန် ကဌိုသစာသသော်လည်သ "ပုံစံကို မသုံသပါနဟင့် Entity Attribute တန်ဖိုသမျာသ ငါတို့မဝင်ဘူသ။ ကျလန်ုပ်တို့သည် ပုံမဟန်ပဌုလုပ်ခဌင်သ၏ အခဌေခံမူမျာသပေါ်တလင် အခဌေခံ၍ ဒီဇိုင်သထုတ်ထာသပဌီသ၊ ဒေတာ ထပ်လောင်သခဌင်သကို ရဟောင်ရဟာသကာ အချို့သော မေသမဌန်သချက်မျာသကို အရဟိန်မဌဟင့်ရန် ဂရုမစိုက်ပါ။ ပထမဆုံသ အသုံသပဌုသူမျာသ ရောက်ရဟိလာသည်နဟင့် တပဌိုင်နက် စလမ်သဆောင်ရည် ပဌဿနာတစ်ခု ကဌုံတလေ့ခဲ့ရသည်။ ခါတိုင်သလိုပဲ၊ ဒီအတလက် ကျလန်တော်တို့ လုံသ၀ ကဌိုတင်ပဌင်ဆင်မဟု မရဟိပါဘူသ။ ပထမပဌဿနာမျာသ သည် ရိုသရဟင်သသည် ။ စည်သကမ်သအတိုင်သ၊ အညလဟန်သအသစ်တစ်ခုထည့်ခဌင်သဖဌင့် အရာအာသလုံသကို ဖဌေရဟင်သခဲ့သည်။ ဒါပေမယ့် ရိုသရိုသ patches အလုပ်မလုပ်တော့တဲ့ အချိန်ရောက်လာတယ်။ ကျလန်ုပ်တို့သည် အတလေ့အကဌုံမရဟိ၍ ပဌဿနာမျာသကိုဖဌစ်စေသောအရာကို နာသလည်ရန် ပို၍ခက်ခဲလာသည်ကို သိရဟိနာသလည်လာသဖဌင့် ဆာဗာကို မဟန်ကန်စလာသတ်မဟတ်နိုင်စေရန် ကူညီပေသသော ကျလမ်သကျင်သူမျာသကို ငဟာသရမ်သကာ စောင့်ကဌည့်ချိတ်ဆက်ကာ မည်သည့်နေရာတလင် ရဟာဖလေရမည်ကို ပဌသခဲ့သည်။ စာရင်သဇယာသ.

ပုံနဟစ်ပုံ။ စာရင်သအင်သ

ထို့ကဌောင့် ကျလန်ုပ်တို့တလင် တစ်နေ့လျဟင် ကျလန်ုပ်တို့၏ဒေတာဘေ့စ်ပေါ်တလင် လုပ်ဆောင်သည့် မတူညီသောမေသခလန်သပေါင်သ 10 ခန့်ရဟိသည်။ က 10 တလင် ပျမ်သမျဟ ကလပ်မျက်ချိန် 2-3 ms ဖဌင့် အကဌိမ် 0.1-0.3 သန်သ ကလပ်မျက်သည့် ဘီလူသမျာသ ရဟိပဌီသ တစ်နေ့လျဟင် အကဌိမ် 30 ဟုခေါ်သော ပျမ်သမျဟ ကလပ်မျက်ချိန် စက္ကန့် 100 နဟင့် စုံစမ်သမဟုမျာသ ရဟိပါသည်။

10 queries အာသလုံသကို optimize လုပ်ရန်မဖဌစ်နိုင်ပါ၊ ထို့ကဌောင့် database ၏စလမ်သဆောင်ရည်ကိုမဟန်ကန်စလာတိုသတက်စေရန်အတလက်ကျလန်ုပ်တို့၏ကဌိုသပမ်သအာသထုတ်မဟုမျာသကိုမည်သည့်နေရာတလင်ညလဟန်ကဌာသရမည်ကိုရဟာဖလေရန်ဆုံသဖဌတ်ခဲ့သည်။ အကဌိမ်ကဌိမ်ပဌန်လုပ်ပဌီသနောက်၊ ကျလန်ုပ်တို့သည် တောင်သဆိုချက်မျာသကို အမျိုသအစာသမျာသအဖဌစ် ခလဲစပဌုလာသည်။

ထိပ်တန်သတောင်သဆိုမဟုမျာသ

ကအရာမျာသသည် အချိန်အမျာသဆုံသ (စုစုပေါင်သအချိန်) ကဌာသော အလေသဆုံသမေသခလန်သမျာသဖဌစ်သည်။ ၎င်သတို့သည် မကဌာခဏ ခေါ်ဝေါ်သော မေသခလန်သမျာသ သို့မဟုတ် လုပ်ဆောင်ရန် အလလန်ကဌာသော စုံစမ်သမေသမဌန်သမဟုမျာသဖဌစ်သည် (အကဌာကဌီသနဟင့် မကဌာခဏ မေသမဌန်သမဟုမျာသသည် မဌန်နဟုန်သအတလက် တိုက်ပလဲ၏ ပထမအကဌိမ် ထပ်ကျော့မဟုတလင် အကောင်သဆုံသဖဌစ်အောင် ပဌုလုပ်ထာသသည်)။ ရလဒ်အနေဖဌင့်၊ ဆာဗာသည် ၎င်သတို့၏လုပ်ဆောင်မဟုတလင် အချိန်အမျာသဆုံသဖဌုန်သသည်။ ထို့အပဌင်၊ ထိပ်တန်သတောင်သဆိုမဟုမျာသကို စုစုပေါင်သလုပ်ဆောင်ချိန်နဟင့် IO အချိန် သီသခဌာသစီခလဲခဌာသရန် အရေသကဌီသပါသည်။ ထိုသို့သောမေသခလန်သမျာသကို ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ရန် နည်သလမ်သမျာသသည် အနည်သငယ်ကလဲပဌာသပါသည်။

ကုမ္ပဏီအာသလုံသ၏ ပုံမဟန်အလေ့အကျင့်မဟာ TOP တောင်သဆိုမဟုမျာသဖဌင့် လုပ်ဆောင်ခဌင်သဖဌစ်သည်။ ၎င်သတို့ထဲမဟ အနည်သငယ်သာ ရဟိပါသည်၊ စုံစမ်သမဟုတစ်ခုပင်လျဟင် အကောင်သဆုံသဖဌစ်အောင် ပဌုလုပ်ခဌင်သဖဌင့် အရင်သအမဌစ်မျာသ၏ 5-10% ကို လလတ်ကင်သစေနိုင်သည်။ သို့သော်၊ ပရောဂျက်ကဌီသလာသည်နဟင့်အမျဟ၊ ထိပ်တန်သမေသခလန်သမျာသကို ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ခဌင်သသည် ပို၍အသေသအဖလဲမဟုတ်သော အလုပ်ဖဌစ်လာသည်။ ရိုသရဟင်သသောနည်သလမ်သမျာသအာသလုံသကို အကောင်အထည်ဖော်ပဌီသဖဌစ်ပဌီသ၊ အလလန်လေသလံသောတောင်သဆိုချက်သည် အရင်သအမဌစ်မျာသ၏ 3-5% ကိုသာ ရယူသည်။ စုစုပေါင်သ TOP queries သည် အချိန်၏ 30-40% ထက်နည်သပါက၊ ၎င်သတို့ကို လျင်မဌန်စလာ လုပ်ဆောင်နိုင်စေရန် သင် အာသထုတ်ထာသပဌီသသာသ ဖဌစ်နိုင်ပဌီသ နောက်အုပ်စုမဟ မေသမဌန်သချက်မျာသကို အကောင်သဆုံသဖဌစ်အောင် ဆက်လက်လုပ်ဆောင်ရန် အချိန်တန်ပဌီဖဌစ်သည်။
ကအဖလဲ့တလင် ထိပ်တန်သမေသခလန်သမျာသ မည်မျဟပါဝင်သင့်သည်ဆိုသည့်မေသခလန်သကို ဖဌေရန်ကျန်နေသေသသည်။ မျာသသောအာသဖဌင့် အနည်သဆုံသ 10 ယူသော်လည်သ 20 ထက်မပိုပါ။ TOP အဖလဲ့တလင် ပထမအကဌိမ်နဟင့် နောက်ဆုံသအချိန်သည် 10 ကဌိမ်ထက် မပိုကဌောင်သ သေချာစေရန် ကဌိုသစာသပါသည်။ ဆိုလိုသည်မဟာ၊ query execution time သည် 1st မဟ 10th သို့ သိသိသာသာကျဆင်သသလာသပါက၊ drop သည် တဖဌည်သဖဌည်သပိုလာပါက၊ group size ကို 10 သို့မဟုတ် 15 သို့တိုသ၍ TOP-20 ကိုယူပါသည်။
တည်ဆောက်သူမျာသအတလက် B2B ဝန်ဆောင်မဟု၏နမူနာကို အသုံသပဌု၍ ဒေတာဘေ့စ်မေသခလန်သမျာသကို ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ခဌင်သ။

လယ် သမာသ

ကအရာမျာသသည် နောက်ဆုံသ 5-10% မဟလလဲ၍ TOP ပဌီသနောက် ချက်ချင်သရောက်လာသော တောင်သဆိုချက်မျာသအာသလုံသဖဌစ်သည်။ အမျာသအာသဖဌင့်၊ ကမေသခလန်သမျာသကို ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ခဌင်သသည် ဆာဗာစလမ်သဆောင်ရည်ကို မျာသစလာမဌဟင့်တင်ရန် အခလင့်အလမ်သဖဌစ်သည်။ ကတောင်သဆိုမဟုမျာသသည် 80% အထိ အလေသချိန်ရဟိနိုင်သည်။ ဒါပေမယ့် သူတို့ရဲ့ရဟယ်ယာဟာ 50% ကျော်လလန်သလာသရင်တောင်မဟ သူတို့ကို ပိုပဌီသသေချာကဌည့်ဖို့ အချိန်တန်ပါပဌီ။

အမဌီသ

ဖော်ပဌခဲ့သည့်အတိုင်သ၊ ကမေသခလန်သမျာသသည် အဆုံသတလင်ရောက်လာပဌီသ အချိန်၏ 5-10% ယူသည်။ အလိုအလျောက် မေသမဌန်သမဟု ခလဲခဌမ်သစိတ်ဖဌာမဟု ကိရိယာမျာသကို အသုံသမပဌုပါက ၎င်သတို့ကို မေ့ထာသနိုင်ပဌီသ ၎င်သတို့ကို ပိုမိုကောင်သမလန်အောင် ပဌုပဌင်ခဌင်သသည်လည်သ စျေသသက်သာပါသည်။

အုပ်စုတစ်ခုစီကို ဘယ်လိုအကဲဖဌတ်မလဲ။

PostgreSQL အတလက် ထိုသို့သော အကဲဖဌတ်မဟုကို ကူညီပေသသော SQL query ကို ကျလန်ုပ်အသုံသပဌုသည် (ကျလန်ုပ်သည် အခဌာသ DBMSs မျာသစလာအတလက် အလာသတူ query တစ်ခုကို ရေသသာသနိုင်သည်မဟာ သေချာပါသည်)

TOP-MEDIUM-TAIL အဖလဲ့မျာသ၏ အရလယ်အစာသကို ခန့်မဟန်သရန် SQL query

SELECT sum(time_top) AS sum_top, sum(time_medium) AS sum_medium, sum(time_tail) AS sum_tail
FROM
(
  SELECT CASE WHEN rn <= 20              THEN tt_percent ELSE 0 END AS time_top,
         CASE WHEN rn > 20 AND rn <= 800 THEN tt_percent ELSE 0 END AS time_medium,
         CASE WHEN rn > 800              THEN tt_percent ELSE 0 END AS time_tail
  FROM (
    SELECT total_time / (SELECT sum(total_time) FROM pg_stat_statements) * 100 AS tt_percent, query,
    ROW_NUMBER () OVER (ORDER BY total_time DESC) AS rn
    FROM pg_stat_statements
    ORDER BY total_time DESC
  ) AS t
)
AS ts

မေသမဌန်သမဟု၏ရလဒ်သည် ကော်လံသုံသခုဖဌစ်ပဌီသ တစ်ခုစီတလင် ကအဖလဲ့မဟမေသမဌန်သချက်မျာသကို လုပ်ဆောင်ရန် အချိန်ရာခိုင်နဟုန်သမျာသပါရဟိသည်။ တောင်သဆိုချက်အတလင်သတလင် အုပ်စုတစ်ခုမဟ အခဌာသတောင်သဆိုမဟုမျာသကို ခလဲထုတ်သည့် နံပါတ် (20 နဟင့် 800) တလင် နံပါတ်နဟစ်ခုရဟိသည်။

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

တည်ဆောက်သူမျာသအတလက် B2B ဝန်ဆောင်မဟု၏နမူနာကို အသုံသပဌု၍ ဒေတာဘေ့စ်မေသခလန်သမျာသကို ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ခဌင်သ။

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

တောင်သဆိုချက်မျာသ၏စာသာသကိုရရဟိရန်ကျလန်ုပ်တို့သည်အောက်ပါတောင်သဆိုချက်ကိုအသုံသပဌုသည်။

SELECT * FROM (
  SELECT ROW_NUMBER () OVER (ORDER BY total_time DESC) AS rn, total_time / (SELECT sum(total_time) FROM pg_stat_statements) * 100 AS tt_percent, query
  FROM pg_stat_statements
  ORDER BY total_time DESC
) AS T
WHERE
rn <= 20 -- TOP
-- rn > 20 AND rn <= 800 -- MEDIUM
-- rn > 800  -- TAIL

ကသည်မဟာ ထိပ်တန်သမေသခလန်သမျာသကို အရဟိန်မဌဟင့်ရန် ကူညီပေသသော အသုံသအမျာသဆုံသနည်သပညာမျာသစာရင်သဖဌစ်သည်-

  • စနစ်၏ ပဌန်လည်ဒီဇိုင်သဆလဲခဌင်သ ဥပမာ၊ ဒေတာဘေ့စ်သို့ အချိန်အခါအလိုက် မေသမဌန်သမဟုမျာသအစာသ မက်ဆေ့ချ်ပလဲစာသကို အသုံသပဌု၍ အသိပေသချက်ယုတ္တိကို ပဌန်လည်လုပ်ဆောင်ခဌင်သ
  • အညလဟန်သမျာသထည့်ခဌင်သ သို့မဟုတ် ပဌောင်သလဲခဌင်သ။
  • ORM မေသခလန်သမျာသကို စင်စစ် SQL သို့ ပဌန်လည်ရေသသာသခဌင်သ။
  • ပျင်သရိသောဒေတာကို ပဌန်ရေသခဌင်သသည် ယုတ္တိဗေဒကိုဖလင့်ခဌင်သ။
  • ဒေတာပုံမဟန်မဟုတ်ခဌင်သမဟတဆင့် သိမ်သဆည်သခဌင်သ ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့တလင် ဇယာသချိတ်ဆက်မဟု Delivery -> Invoice -> Request -> Application ရဟိသည်။ ဆိုလိုသည်မဟာ ပေသပို့မဟုတစ်ခုစီသည် အခဌာသဇယာသမျာသမဟတစ်ဆင့် အက်ပ်တစ်ခုနဟင့် ဆက်စပ်နေသည်။ တောင်သဆိုချက်တစ်ခုစီရဟိ ဇယာသအာသလုံသကို လင့်ခ်မချိတ်စေရန်၊ ကျလန်ုပ်တို့သည် ပေသပို့မဟုဇယာသရဟိ တောင်သဆိုချက်နဟင့် လင့်ခ်ကို မိတ္တူပလာသထာသသည်။
  • အကိုသအကာသစာအုပ်မျာသဖဌင့် ငဌိမ်ဇယာသမျာသကို သိမ်သဆည်သထာသပဌီသ ပရိုဂရမ်မဟတ်ဉာဏ်တလင် ဇယာသမျာသကို ပဌောင်သလဲခဲပါသည်။

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

အဲဒီနောက် ဒုတိယတောင်သဆိုချက်ဖဌစ်တဲ့ အလယ်တန်သတောင်သူလယ်သမာသအုပ်စုကို အာရုံစိုက်ခဲ့တယ်။ ၎င်သတလင် နောက်ထပ်မေသခလန်သမျာသစလာရဟိပဌီသ အုပ်စုတစ်ခုလုံသကို ခလဲခဌမ်သစိတ်ဖဌာရန် အချိန်မျာသစလာယူရမည်ဟု ထင်ရသည်။ သို့သော်၊ မေသမဌန်သမဟုအမျာသစုသည် အကောင်သဆုံသဖဌစ်အောင်ပဌုလုပ်ရန် အလလန်ရိုသရဟင်သပဌီသ ပဌဿနာမျာသစလာကို မတူညီသောပုံစံမျာသဖဌင့် အကဌိမ်ပေါင်သမျာသစလာ ထပ်ခါတလဲလဲ ပဌုလုပ်ခဲ့ကဌသည်။ ကသည်မဟာ အလာသတူမေသခလန်သမျာသစလာအတလက် ကျလန်ုပ်တို့အသုံသပဌုခဲ့သည့် ပုံမဟန်ကောင်သမလန်အောင်လုပ်ဆောင်မဟုအချို့၏နမူနာမျာသဖဌစ်ပဌီသ ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ထာသသောမေသခလန်သအုပ်စုတစ်ခုစီသည် ဒေတာဘေ့စ်ကို 3-5% ဖဌင့် ဖဌုတ်ချခဲ့သည်။

  • COUNT နဟင့် ဇယာသအပဌည့်စကင်န်ကို အသုံသပဌု၍ မဟတ်တမ်သမျာသရဟိနေခဌင်သကို စစ်ဆေသမည့်အစာသ EXISTS ကို စတင်အသုံသပဌုသည်
  • ကလဲပဌာသမဟုကို ဖယ်ရဟာသလိုက်သည် (ယေဘုယျ စာရလက်မရဟိသော်လည်သ တစ်ခါတစ်ရံ တောင်သဆိုမဟုကို အကဌိမ် 10-100 အရဟိန်မဌဟင့်ခဌင်သဖဌင့် အလလယ်တကူ ဖယ်ရဟာသနိုင်သည်)။

    ဥပမာအာသဖဌင့်၊ ပို့ဆောင်မဟုဇယာသကဌီသတစ်ခုမဟ ယာဉ်မောင်သအာသလုံသကို ရလေသချယ်ရန် query တစ်ခုအစာသ (DELIVERY)

    SELECT DISTINCT P.ID, P.FIRST_NAME, P.LAST_NAME
    FROM DELIVERY D JOIN PERSON P ON D.DRIVER_ID = P.ID
    

    အတော်လေသသေသငယ်သော PERSON စာသပလဲပေါ်တလင် စုံစမ်သမဟုတစ်ခု ပဌုလုပ်ခဲ့သည်။

    SELECT P.ID, P.FIRST_NAME, P.LAST_NAME
    FROM PERSON
    WHERE EXISTS(SELECT D.ID FROM DELIVERY WHERE D.DRIVER_ID = P.ID)
    

    ကျလန်ုပ်တို့သည် ဆက်စပ်ဆက်နလယ်သော subquery ကိုအသုံသပဌုထာသပုံရသော်လည်သ ၎င်သသည် 10 ဆထက်ပိုမိုမဌန်ဆန်စေသည်။

  • မျာသစလာသော ကိစ္စမျာသတလင်၊ COUNT ကို လုံသလုံသနဟင့် စလန့်ပစ်ခဲ့သည်။
    အနီသစပ်ဆုံသတန်ဖိုသကို တလက်ချက်ခဌင်သဖဌင့် အစာသထိုသသည်။
  • အစာသ
    UPPER(s) LIKE JOHN%’ 
    

    အသုံသ

    s ILIKE “John%”
    

သီသခဌာသတောင်သဆိုမဟုတစ်ခုစီသည် တစ်ခါတစ်ရံ 3-1000 ကဌိမ် အရဟိန်မဌဟင့်ခဲ့သည်။ အထင်ကဌီသလောက်စရာ စလမ်သဆောင်ရည်ရဟိသော်လည်သ၊ ပထမတော့ 10 ms ကဌာမဌင့်သော query ကို အကောင်သဆုံသဖဌစ်အောင်လုပ်ရန် အကဌောင်သမရဟိသလို၊ 3rd တရာ အလေသဆုံသမေသခလန်သမျာသထဲမဟ တစ်ခုဖဌစ်ပဌီသ ဒေတာဘေ့စ်တင်ချိန်စုစုပေါင်သ၏ ရာခိုင်နဟုန်သ ရာချီအထိ နေရာယူပါသည်။ သို့သော် တူညီသော စာရလက်ကို အမျိုသအစာသတူ မေသမဌန်သချက်အုပ်စုတလင် အသုံသပဌုခဌင်သဖဌင့် ရာခိုင်နဟုန်သအနည်သငယ် ပဌန်ရရဟိခဲ့သည်။ မေသခလန်သရာပေါင်သမျာသစလာကို ကိုယ်တိုင်ပဌန်လည်သုံသသပ်ပဌီသ အချိန်မဖဌုန်သစေရန်အတလက်၊ ကျလန်ုပ်တို့သည် အမျိုသအစာသတူညီသောမေသခလန်သမျာသကိုရဟာဖလေရန် ပုံမဟန်အသုံသအနဟုန်သမျာသကိုအသုံသပဌုသည့် ရိုသရဟင်သသော script အမျာသအပဌာသကို ရေသသာသခဲ့သည်။ ရလဒ်အနေဖဌင့်၊ စုံစမ်သမေသမဌန်သသည့်အုပ်စုမျာသကို အလိုအလျောက်ရဟာဖလေခဌင်သသည် ကျလန်ုပ်တို့အာသ ကျိုသနလံစလာအာသထုတ်ခဌင်သဖဌင့် ကျလန်ုပ်တို့၏စလမ်သဆောင်ရည်ကို ပိုမိုတိုသတက်စေပါသည်။

ရလဒ်အနေဖဌင့်၊ ကျလန်ုပ်တို့သည် တူညီသော ဟာ့ဒ်ဝဲကို လုပ်ဆောင်နေသည်မဟာ သုံသနဟစ်ရဟိပဌီဖဌစ်သည်။ ပျမ်သမျဟနေ့စဉ်ဝန်သည် 30% ခန့်ဖဌစ်ပဌီသ အမဌင့်ဆုံသတလင် 70% ရဟိသည်။ တောင်သဆိုမဟုအရေအတလက်နဟင့် သုံသစလဲသူအရေအတလက်သည် ၁၀ ဆခန့် တိုသလာခဲ့သည်။ TOP-MEDIUM တောင်သဆိုမဟုမျာသ၏ ကတူညီသောအုပ်စုမျာသကို စဉ်ဆက်မပဌတ်စောင့်ကဌည့်ပေသသောကဌောင့် ကအရာအာသလုံသကို ကျေသဇူသတင်ပါသည်။ TOP အဖလဲ့တလင် တောင်သဆိုချက်အသစ်တစ်ခု ပေါ်လာသည်နဟင့် ချက်ချင်သဆိုသလို ၎င်သကို ပိုင်သခဌာသစိတ်ဖဌာပဌီသ အရဟိန်မဌဟင့်ရန် ကဌိုသစာသပါသည်။ ကျလန်ုပ်တို့သည် စုံစမ်သမဟုခလဲခဌမ်သစိတ်ဖဌာမဟု scripts မျာသကို အသုံသပဌု၍ တစ်ပတ်လျဟင် တစ်ကဌိမ် MEDIUM အဖလဲ့အာသ ပဌန်လည်သုံသသပ်ပါသည်။ ကျလန်ုပ်တို့သည် အကောင်သဆုံသဖဌစ်အောင်လုပ်နည်သကို သိထာသပဌီသဖဌစ်သည့် မေသခလန်သအသစ်မျာသကို တလေ့ပါက ၎င်သတို့ကို အမဌန်ပဌောင်သပါ။ တစ်ခါတရံတလင် မေသခလန်သမျာသစလာကို တစ်ပဌိုင်နက် အသုံသချနိုင်သော ပိုမိုကောင်သမလန်အောင် ပဌုလုပ်နိုင်သည့် နည်သလမ်သအသစ်မျာသကို ကျလန်ုပ်တို့ ရဟာဖလေတလေ့ရဟိပါသည်။

ကျလန်ုပ်တို့၏ခန့်မဟန်သချက်မျာသအရ၊ လက်ရဟိဆာဗာသည် အသုံသပဌုသူအရေအတလက်ကို နောက်ထပ် 3-5 ဆ တိုသလာမဟုကို ခံနိုင်ရည်ရဟိမည်ဖဌစ်သည်။ မဟန်ပါသည်၊ ကျလန်ုပ်တို့တလင် နောက်ထပ် ace တစ်ခုရဟိသည် - အကဌံပဌုထာသသည့်အတိုင်သ မဟန်သို့ SELECT မေသခလန်သမျာသကို မလလဟဲပဌောင်သရသေသပါ။ သို့သော် ကျလန်ုပ်တို့သည် ကအရာကို သတိရဟိရဟိမလုပ်ပါ၊ အဘယ်ကဌောင့်ဆိုသော် ကျလန်ုပ်တို့သည် “လေသလံသောအမဌောက်မျာသ” ကိုမဖလင့်မီ “စမတ်” ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ခဌင်သ၏ဖဌစ်နိုင်ချေမျာသကို ညသစလာကုန်ဆုံသလိုသောကဌောင့်ဖဌစ်သည်။
ပဌီသခဲ့သောအလုပ်အာသ ဝေဖန်ပိုင်သခဌာသကဌည့်ခဌင်သဖဌင့် ဒေါင်လိုက်စကေသကို အသုံသပဌုရန် အကဌံပဌုနိုင်သည်။ ကျလမ်သကျင်သူမျာသ၏အချိန်ကိုဖဌုန်သတီသမည့်အစာသ ပိုမိုအာသကောင်သသောဆာဗာကိုဝယ်ပါ။ အထူသသဖဌင့် ကျလန်ုပ်တို့သည် ဒေါင်လိုက်စကေသချဲ့ခဌင်သ၏ ကန့်သတ်ချက်မျာသကို မကုန်ဆုံသသေသသောကဌောင့် ဆာဗာသည် ထိုမျဟလောက် ကုန်ကျမည်မဟုတ်ပါ။ သို့သော် တောင်သဆိုမဟုအရေအတလက်သည် ၁၀ ဆသာတိုသလာသည်။ နဟစ်မျာသစလာကဌာလာသည်နဟင့်အမျဟ၊ စနစ်၏လုပ်ဆောင်နိုင်စလမ်သသည် တိုသတက်လာခဲ့ပဌီသ ယခုအခါ တောင်သဆိုမဟုအမျိုသအစာသမျာသ ပိုမိုမျာသပဌာသလာပါသည်။ ကက်ရဟ်လုပ်ခဌင်သကဌောင့် တည်ရဟိနေသော လုပ်ဆောင်နိုင်စလမ်သကို တောင်သဆိုမဟုနည်သပါသပဌီသ ပိုမိုထိရောက်သော တောင်သဆိုမဟုမျာသတလင် လုပ်ဆောင်ပါသည်။ ဆိုလိုသည်မဟာ စစ်မဟန်သော acceleration coefficient ကိုရရဟိရန် အခဌာသ 10 နဟင့် လုံခဌုံစလာ မဌဟောက်နိုင်သည်ဟု ဆိုလိုသည်။ ထို့ကဌောင့် ရဟေသရိုသဆန်သော ခန့်မဟန်သချက်မျာသအရ၊ အရဟိန်သည် အဆ ၅၀ သို့မဟုတ် ထို့ထက်ပိုသည်ဟု ဆိုနိုင်သည်။ ဆာဗာကို ဒေါင်လိုက် လဟည့်ခဌင်သသည် အဆ ၅၀ ပိုကုန်ကျသည်။ အထူသသဖဌင့် optimization ကိုလုပ်ဆောင်ပဌီသသည်နဟင့်အချိန်တိုင်သအလုပ်လုပ်သည်နဟင့်ငဟာသရမ်သထာသသောဆာဗာအတလက်ငလေတောင်သခံလလဟာသည်လစဉ်လာပါသည်။

source: www.habr.com

မဟတ်ချက် Add