MySQL တလင် မဟတ်တမ်သပေါင်သ သန်သ 300 ကို ရုပ်ပိုင်သဆိုင်ရာ ဖျက်ခဌင်သ၏ ဇာတ်လမ်သ

နိဒါန်သ

မင်္ဂလာပါ။ ကျလန်တော်က ningenMe၊ ဝဘ်ဆော့ဖ်ဝဲရေသသာသသူပါ။

ခေါင်သစဉ်ပဌောထာသသည့်အတိုင်သ၊ ကျလန်ုပ်၏ဇာတ်လမ်သသည် MySQL တလင် မဟတ်တမ်သပေါင်သ သန်သ 300 ကို ရုပ်ပိုင်သဆိုင်ရာ ဖျက်ပစ်သည့် ဇာတ်လမ်သဖဌစ်သည်။

ဒါကို စိတ်ဝင်စာသလာတဲ့အတလက် သတိပေသချက် (ညလဟန်ကဌာသချက်မျာသ) ပဌုလုပ်ဖို့ ဆုံသဖဌတ်ခဲ့ပါတယ်။

အိမ် - သတိပေသချက်

ကျလန်ုပ်အသုံသပဌုပဌီသ ထိန်သသိမ်သထာသသော အသုတ်ဆာဗာတလင် MySQL မဟ ပဌီသခဲ့သောလ၏ဒေတာမျာသကို တစ်နေ့တစ်ကဌိမ် စုဆောင်သသည့် ပုံမဟန်လုပ်ငန်သစဉ်တစ်ခုရဟိသည်။

ပုံမဟန်အာသဖဌင့် ကလုပ်ငန်သစဉ်သည် ၁ နာရီခန့်အတလင်သ ပဌီသစီသသော်လည်သ ကအကဌိမ်သည် ၇ နာရီ သို့မဟုတ် ၈ နာရီကဌာပဌီသနောက် သတိပေသချက် ထလက်ပေါ်လာခဌင်သ မရပ်တန့်ခဲ့ပါ။

အကဌောင်သပဌချက်ရဟာဖလေနေ

လုပ်ငန်သစဉ်ကို ပဌန်လည်စတင်ပဌီသ မဟတ်တမ်သမျာသကို ကဌည့်ရဟုရန် ကဌိုသစာသခဲ့သော်လည်သ အမဟာသအယလင်သမရဟိခဲ့ပါ။
မေသခလန်သကို မဟန်ကန်စလာ အညလဟန်သတပ်ထာသပါသည်။ ဒါပေမယ့် ဘာမျာသမဟာသနေပဌီလဲလို့ တလေသလိုက်တော့ ဒေတာဘေ့စ် အရလယ်အစာသက တော်တော်ကဌီသတာကို သိလိုက်ရတယ်။

hoge_table | 350'000'000 |

သန်သ ၃၅၀ မဟတ်တမ်သမျာသ။ အညလဟန်သကိန်သသည် မဟန်ကန်စလာ လုပ်ဆောင်နေပုံရပဌီသ အလလန်နဟေသကလေသပါသည်။

တစ်လလျဟင် လိုအပ်သော အချက်အလက်စုဆောင်သမဟုမဟာ မဟတ်တမ်သပေါင်သ 12 ခန့်ဖဌစ်သည်။ Select command သည် အချိန်အတော်ကဌာပုံရပဌီသ ငလေပေသငလေယူကို အချိန်အတော်ကဌာ မလုပ်ဆောင်ခဲ့ပုံရသည်။

DB

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

ကဒေတာဘေ့စ်ကို ကျလန်ုပ်မဟ မတီထလင်ခဲ့ပါ။ အခဌာသ developer ထံမဟ လလဟဲပဌောင်သယူခဲ့ခဌင်သဖဌစ်သောကဌောင့် နည်သပညာအကဌလေသမျာသကဲ့သို့ ခံစာသရပါသည်။

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

ပဌီသတော့ ငါ လဟုပ်ရဟာသလာတယ်။

ပဌင်ဆင်ချက်

ဒေတာဘေ့စ်၏ အရလယ်အစာသကို လျဟော့ချရန်နဟင့် လော့ဂျစ်ကိုယ်တိုင် ပဌောင်သလဲခဌင်သထက် ၎င်သကို လုပ်ဆောင်ရန် အချိန်ကို လျဟော့ချခဌင်သသည် ပို၍ ဆင်ခဌင်တုံတရာသဖဌစ်သည်။

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

လုပ်ဆောင်ချက် ၁

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

"တောင်သဆိုမဟုတစ်ခု ပေသပို့ခဌင်သ''

DELETE FROM hoge_table WHERE create_time <= 'YYYY-MM-DD HH:MM:SS';

"... "

"... "

"ဟမ်... အဖဌေမရဟိပါ။ လုပ်ငန်သစဉ်က အချိန်အတော်ကဌာမဟ ဖဌစ်ကောင်သဖဌစ်နိုင်ပါတယ်။” - ငါထင်ခဲ့တယ်၊ ဒါပေမယ့်၊ အခဌေအနေမဟာ၊ ငါ Grafana ကိုကဌည့်လိုက်ပဌီသ disk load ကအရမ်သမဌန်လာတာကိုတလေ့လိုက်ရတယ်။
“အန္တရာယ်မျာသတယ်” လို့ ပဌန်တလေသပဌီသ တောင်သဆိုတာကို ချက်ချင်သရပ်လိုက်တယ်။

လုပ်ဆောင်ချက် ၁

အရာအာသလုံသကို ခလဲခဌမ်သစိတ်ဖဌာပဌီသနောက်၊ ဒေတာပမာဏသည် အာသလုံသကို တစ်ပဌိုင်နက် ဖျက်ပစ်ရန် အလလန်ကဌီသမာသသည်ကို ကျလန်ုပ်သဘောပေါက်လိုက်ပါသည်။

မဟတ်တမ်သပေါင်သ 1 လောက်ကို ဖျက်ပစ်နိုင်တဲ့ ဇာတ်ညလဟန်သရေသဖို့ ဆုံသဖဌတ်ပဌီသ အဲဒါကို စတင်ခဲ့ပါတယ်။

''ကျလန်တော် ဇာတ်ညလဟန်သကို အကောင်အထည်ဖော်တာပါ''

“အခုတော့ သေချာပေါက် အလုပ်ဖဌစ်မဟာပါ” လို့ ကျလန်တော် တလေသမိတယ်။

လုပ်ဆောင်ချက် ၁

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

ဒါဆို ငါလုပ်မယ်လို့ ဆုံသဖဌတ်ထာသတာက

ဇယာသကို ကူသယူပဌီသ အမည်ပဌောင်သပါ။

ယခင်အဆင့်မဟ၊ ကမျဟမျာသပဌာသသောဒေတာပမာဏကို ဖျက်ခဌင်သသည် တူညီသောကဌီသမာသသောဝန်ကိုဖန်တီသပေသကဌောင်သ ကျလန်ုပ်သဘောပေါက်ပါသည်။ ဒါကဌောင့် ထည့်သလင်သပဌီသ ဖျက်ပစ်မယ့်ဒေတာကို ထည့်သလင်သအသုံသပဌုပဌီသ ဇယာသအသစ်တစ်ခုကို ဖန်တီသဖို့ ဆုံသဖဌတ်လိုက်ပါတယ်။

| hoge_table     | 350'000'000|
| tmp_hoge_table |  50'000'000|

အကယ်၍ သင်သည် ဇယာသအသစ်ကို အထက်ဖော်ပဌပါ အရလယ်အစာသနဟင့် တူညီအောင် ပဌုလုပ်ပါက၊ ဒေတာ စီမံဆောင်ရလက်မဟု အမဌန်နဟုန်သသည်လည်သ 1/7 ပိုမဌန်သင့်ပါသည်။

ဇယာသကိုဖန်တီသပဌီသ အမည်ပဌောင်သပဌီသနောက်၊ ၎င်သကို မာစတာဇယာသအဖဌစ် စတင်အသုံသပဌုခဲ့သည်။ အခု သန်သ 300 စံချိန်တင်ထာသတဲ့ ဇယာသကို ချလိုက်ရင် အာသလုံသအဆင်ပဌေသင့်တယ်။
ဖဌတ်တောက်ခဌင်သ သို့မဟုတ် အစက်ချခဌင်သသည် ဖျက်ခဌင်သထက် ပိုနည်သသည်ကို ကျလန်ုပ်သိရဟိခဲ့ပဌီသ ကနည်သလမ်သကို အသုံသပဌုရန် ဆုံသဖဌတ်ခဲ့သည်။

သတ်ခဌင်သ

"တောင်သဆိုမဟုတစ်ခု ပေသပို့ခဌင်သ''

INSERT INTO tmp_hoge_table SELECT FROM hoge_table create_time > 'YYYY-MM-DD HH:MM:SS';

"... "
"... "
"အမ်...?"

လုပ်ဆောင်ချက် ၁

ယခင်အကဌံသည် အလုပ်ဖဌစ်မည်ဟု ကျလန်တော်ထင်ခဲ့သော်လည်သ ထည့်သလင်သတောင်သဆိုမဟုကို ပေသပို့ပဌီသနောက်တလင် အမဟာသအယလင်သမျာသစလာ ပေါ်လာခဲ့သည်။ MySQL က ခလင့်မလလဟတ်ပါဘူသ။

ကျလန်တော် အရမ်သပင်ပန်သနေပဌီမို့ ဒါကို ဆက်မလုပ်ချင်တော့ဘူသလို့ တလေသလိုက်မိတယ်။

ထိုင်ပဌီသ တလေသကဌည့်တော့ တစ်ကဌိမ်ထဲ မေသစရာတလေ အရမ်သမျာသနေတယ်ဆိုတာ သိလိုက်ရတယ်...
ဒေတာဘေ့စ်သည် ၁ ရက်အတလင်သ လုပ်ဆောင်သင့်သည့် ဒေတာပမာဏအတလက် ထည့်သလင်သတောင်သဆိုမဟုတစ်ခုကို ပေသပို့ရန် ကဌိုသစာသခဲ့သည်။ ဖဌစ်သလာသပဌီ!

ထို့နောက် ကျလန်ုပ်တို့သည် တူညီသောဒေတာပမာဏအတလက် တောင်သဆိုမဟုမျာသကို ဆက်လက်ပေသပို့ပါသည်။ ကျလန်ုပ်တို့သည် တစ်လ၏တန်ဖိုသရဟိဒေတာကို ဖယ်ရဟာသရန် လိုအပ်သောကဌောင့်၊ ကျလန်ုပ်တို့သည် ကလုပ်ဆောင်ချက်ကို ၃၅ ကဌိမ်ခန့် ထပ်လုပ်ပါသည်။

ဇယာသတစ်ခုအမည်ပဌောင်သခဌင်သ။

ကံတရာသက ငါ့ဘက်မဟာရဟိတယ်၊ အရာအာသလုံသက ချောမလေ့သလာသတယ်။

သတိပေသချက် ပျောက်ဆုံသသလာသခဲ့သည်။

Batch processing speed တိုသလာပါတယ်။

ယခင်က ကလုပ်ငန်သစဉ်သည် တစ်နာရီခန့်ကဌာမဌင့်ခဲ့ပဌီသ ယခုအခါ ၂ မိနစ်ခန့်ကဌာမဌင့်ခဲ့သည်။

ပဌဿနာအာသလုံသကို ဖဌေရဟင်သပဌီသဖဌစ်ကဌောင်သ သေချာပဌီသနောက်၊ မဟတ်တမ်သပေါင်သ သန်သ 300 ကို ချခဲ့ပါတယ်။ စာသပလဲကို ဖျက်ပဌီသ ပဌန်လည်မလေသဖလာသလာသည်ဟု ခံစာသရသည်။

အကျဉ်သချုပ်

batch processing တလင် rotation processing ပျောက်ဆုံသနေကဌောင်သ သဘောပေါက်ခဲ့ပဌီသ ၎င်သသည် အဓိကပဌဿနာဖဌစ်သည်။ ဒီလိုမျိုသ ဗိသုကာဆိုင်ရာ အမဟာသအယလင်သက အချိန်ကို ဖဌုန်သတီသစေပါတယ်။

ဒေတာဘေ့စ်မဟ မဟတ်တမ်သမျာသကို ဖျက်သည့်အခါ ဒေတာပုံတူပလာသမဟုအတလင်သ ဝန်ကို စဉ်သစာသနေပါသလာသ။ MySQL ကို overload မလုပ်ပါနဲ့။

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

ဖတ်ရဟုမဟုအတလက် ကျေသဇူသတင်ပါသည်။

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

source: www.habr.com

မဟတ်ချက် Add