سلام
زما نوم وانیا دی او زه د جاوا پراختیا کونکی یم. دا داسې پیښیږي چې زه د PostgreSQL سره ډیر کار کوم - ډیټابیس تنظیم کول ، جوړښت اصلاح کول ، فعالیت کول ، او د اونۍ په پای کې لږ DBA لوبول.
پدې وروستیو کې ما زموږ په مایکرو خدماتو کې ډیری ډیټابیسونه تنظیم کړي او د جاوا کتابتون یې لیکلی دی
دادعا
د PostgreSQL اصلي نسخه چې زه ورسره کار کوم 10 دی. ټولې SQL پوښتنې چې زه یې کاروم هم په 11 نسخه کې ازمول شوي. لږترلږه ملاتړ شوی نسخه 9.6 ده.
له تاریخ څخه دمخه
دا ټول شاوخوا یو کال دمخه د داسې وضعیت سره پیل شو چې زما لپاره عجیب و: د نیلي څخه د شاخص سیالي رامینځته کول د غلطۍ سره پای ته ورسید. شاخص پخپله، د معمول په څیر، په ډیټابیس کې په ناسم حالت کې پاتې شو. د لاګ تحلیل کمښت ښودلی
یوه ستونزه - د ډیفالټ ترتیب
شاید هرڅوک د پوسټګریس په اړه د استعار څخه ډیر ستړی وي ، کوم چې په کافي جوړونکي کې پرمخ وړل کیدی شي ، مګر ... د ډیفالټ ترتیب واقعیا یو شمیر پوښتنې راپورته کوي. لږترلږه، دا د پام وړ ارزښت لري د ساتنې_کار_میم, temp_file_limit, بیان_ وخت پای и lock_timeout.
زموږ په قضیه کې د ساتنې_کار_میم ډیفالټ 64 MB وه، او temp_file_limit د 2 GB شاوخوا یو څه - موږ په ساده ډول دومره حافظه نلرو چې په لوی میز کې شاخص رامینځته کړو.
له همدې امله، په pg-index-health ما یوه لړۍ راټوله کړه
دویمه ستونزه - نقل شوي شاخصونه
زموږ ډیټابیسونه په SSD ډرایو کې ژوند کوي، او موږ یې کاروو HA- د ډیری ډیټا مرکزونو سره تنظیم کول ، ماسټر کوربه او n- د نقلونو شمیر. د ډیسک ځای زموږ لپاره خورا ارزښتناکه سرچینه ده؛ دا د فعالیت او CPU مصرف څخه لږ مهم ندي. له همدې امله ، له یوې خوا ، موږ د ګړندي لوستلو لپاره شاخصونو ته اړتیا لرو ، او له بلې خوا ، موږ نه غواړو په ډیټابیس کې غیر ضروري شاخصونه وګورو ، ځکه چې دوی ځای خوري او د معلوماتو تازه کول ورو کوي.
او اوس، هرڅه بیرته راګرځول
دریمه ستونزه - شاخصونه یو بل سره نښلوي
ډیری نوي پراختیا کونکي په یوه کالم کې شاخصونه رامینځته کوي. په تدریجي ډول، د دې سوداګرۍ په بشپړه توګه تجربه کولو سره، خلک د خپلو پوښتنو اصلاح کول پیل کوي او ډیر پیچلي شاخصونه اضافه کوي چې ډیری کالمونه پکې شامل دي. دا څنګه په کالمونو کې شاخصونه ښکاري A, A + B, A+B+C او همداسی پسی. د دې شاخصونو څخه لومړی دوه په خوندي ډول ایستل کیدی شي، ځکه چې دوی د دریم مخفف دي. دا د ډیسک ډیری ځای هم خوندي کوي او د دې لپاره تشخیص شتون لري
څلورمه ستونزه - بهرنۍ کیلي پرته له شاخصونو
پوسټګریس تاسو ته اجازه درکوي د ملاتړ شاخص مشخص کولو پرته بهرني کلیدي خنډونه رامینځته کړئ. په ډیری حاالتو کې دا کومه ستونزه نده، او ممکن حتی پخپله ښکاره نشي ... د اوس لپاره ...
دا زموږ سره ورته و: دا یوازې هغه وخت دی چې په یو وخت کې یو دنده، د مهال ویش سره سم پرمخ وړل او د ازموینې امرونو ډیټابیس پاکول، د ماسټر کوربه لخوا موږ ته "اضافه" کول پیل شول. CPU او IO ضایع شول، غوښتنې ورو شوې او وخت پای ته ورسید، خدمت پنځه سوه و. چټک تحلیل
delete from <table> where id in (…)
په دې حالت کې، البته، په نښه شوي جدول کې د ID لخوا یو شاخص شتون درلود، او د شرایطو سره سم ډیر لږ ریکارډونه حذف شوي. داسې بریښي چې هرڅه باید کار وکړي، مګر، افسوس، دا نه و.
په زړه پورې یو د ژغورنې لپاره راغلی تحلیل تشریح کړئ او وویل چې په هدف جدول کې د ریکارډونو حذف کولو سربیره ، د حوالې بشپړتیا چیک هم شتون لري ، او په یو اړوند میز کې دا چیک ناکام کیږي ترتیب سکین د مناسب شاخص د نشتوالي له امله. په دې توګه تشخیص رامنځته شو
پنځمه ستونزه - په شاخصونو کې بې ارزښته ارزښت
په ډیفالټ ، پوسټګریس کې د btree indexes کې null ارزښتونه شامل دي ، مګر دوی معمولا هلته اړتیا نلري. له همدې امله ، زه په کلکه هڅه کوم چې دا نولس لرې کړم (تشخیص where <A> is not null
. پدې توګه زه وکولی شوم چې زموږ د یو شاخص اندازه له 1877 MB څخه 16 KB ته راټیټ کړم. او په یوه خدماتو کې، د ډیټابیس اندازه د شاخصونو څخه د ناپاک ارزښتونو د ایستلو له امله په ټولیزه توګه 16٪ (په مطلق شمیر کې د 4.3 GB لخوا) کمه شوې. د ډیسک په ځای کې د خورا ساده تعدیلاتو سره لوی سپما. 🙂
شپږمه ستونزه - د ابتدايي کیلي نشتوالی
د میکانیزم د طبیعت له امله
یوه ورځ، یو په زړه پورې مهاجرت په لوی او فعاله توګه کارول شوي میز کې ټول ریکارډونه واخیستل او تازه کړل. موږ له نیلي څخه د میز اندازې ته +100 GB ترلاسه کړل. دا د شرم خبره وه، مګر زموږ بدمرغۍ دلته پای ته نه رسیږي. وروسته له دې چې په دې میز کې آٹوواکوم 15 ساعته وروسته پای ته ورسېد، دا څرګنده شوه چې فزیکي موقعیت به بیرته راستانه نشي. موږ نشو کولی خدمت ودروو او VACUUM FULL جوړ کړو، نو موږ د کارولو پریکړه وکړه
د کتابتون نسخه کې 0.1.5 د میزونو او شاخصونو له بلیټ څخه د معلوماتو راټولولو او په وخت سره ورته ځواب ویلو وړتیا اضافه شوې.
اوه او اته ستونزې - ناکافي شاخصونه او نه کارول شوي شاخصونه
لاندې دوه تشخیصونه دي:
لکه څنګه چې ما مخکې لیکلي، موږ د ډیری نقلونو سره یو ترتیب کاروو، او په مختلفو میزبانونو کې د لوستلو بار اساسا توپیر لري. د پایلې په توګه، وضعیت په ګوته کوي چې په ځینو میزبانونو کې ځینې میزونه او شاخصونه په عملي توګه نه کارول کیږي، او د تحلیل لپاره تاسو اړتیا لرئ چې په کلستر کې د ټولو کوربه څخه احصایې راټول کړئ.
دې کړنلارې موږ ته اجازه راکړه چې د څو لسیزو ګیګابایټ شاخصونو په لرې کولو سره خوندي کړو چې هیڅکله نه کارول شوي ، او همدارنګه په نادره توګه کارول شوي جدولونو کې ورک شوي شاخصونه اضافه کول.
د پایلې په توګه
البته، د نږدې ټولو تشخیصونو لپاره تاسو کولی شئ تنظیم کړئ
ځینې تشخیصونه د ډیټابیس مهاجرت څخه سمدلاسه وروسته په فعاله ازموینو کې ترسره کیدی شي. او دا شاید زما د کتابتون یو له خورا قوي ځانګړتیاو څخه وي. د کارولو مثال په کې موندل کیدی شي
دا معنی لري چې د نه کارول شوي یا ورک شوي شاخصونو لپاره چیکونه ترسره کړئ ، په بیله بیا د بلوټ لپاره ، یوازې په ریښتیني ډیټابیس کې. راټول شوي ارزښتونه په کې ثبت کیدی شي
زه واقعیا هیله لرم pg-index-health ګټور او په تقاضا کې به وي. تاسو کولی شئ د کتابتون په پراختیا کې د ستونزو په راپور ورکولو او د نوي تشخیص وړاندیز کولو له لارې هم مرسته وکړئ.
سرچینه: www.habr.com