salaan, habr.
Haddii qof ka faa'iidaysto nidaamka
ClickHouse waxay si fiican u xallisaa dhibaatooyinka la tilmaamay. Tusaale ahaan, ka dib marka 2TiB ee xogta laga wareejiyo xiisaha, waxay ku habboon yihiin 300GiB. Si faahfaahsan uga hadli maayo isbarbardhigga; waxaa jira maqaallo badan oo mawduucan ku saabsan. Intaa waxaa dheer, ilaa dhowaan, wax walba kuma qummanayn kaydinta ClickHouse.
Dhibaatooyinka meesha la isticmaalo
Jaleecada hore, wax walba waa inay si fiican u shaqeeyaan. Daba gal retention
), ka dibna samee miis waafaqsan talada dhabarka la doortay ee graphite-web:
Si aad u fahamto midkee, waxaad u baahan tahay inaad ogaatid sida shaqadu u shaqeyso iyo dariiqa nololeed ee dheeriga ah ee xogta miisaska matoorada qoyska *MergeTree ClickHouse (Shaxda laga soo qaatay
- La galiyay
Π±Π»ΠΎΠΊ
xogta. Xaaladeena, waxay ahayd cabbirada yimid.
- Qayb kasta oo noocaas ah waxaa loo kala soocaa si waafaqsan furaha ka hor inta aan lagu qorin saxanka.
ORDER BY
cayiman marka la abuurayo miiska. - Kala soocida ka dib,
ΠΊΡΡΠΎΠΊ
(part
) xogta waxaa lagu qoraa saxan.
- Seerfarku waxa uu isha ku hayaa xagga dambe si aanay u badnayn qaybo caynkaas ah, oo waxa uu bilaabaa asalka
ΡΠ»ΠΈΡΠ½ΠΈΡ
(merge
, aakhiro isku dar).
- Seerfarku wuxuu joojiyaa socodsiinta isku-darka kaligiis isla marka xogtu istaagto inay si firfircoon u qulqulayso
ΠΏΠ°ΡΡΠΈΡΠΈΡ
(partition
), laakiin waxaad ku bilaabi kartaa habka gacanta adoo isticmaalaya amarkaOPTIMIZE
. - Haddii ay jirto hal gabal oo kaliya ayaa ka hadhay qaybta, markaa ma awoodi doontid inaad ku socodsiiso isku-dhafka adoo isticmaalaya amarka caadiga ah; waa inaad isticmaashaa
OPTIMIZE ... FINAL
Markaa, cabbirada ugu horreeya ayaa imanaya. Waxayna qaateen meel bannaan. Dhacdooyinka soo socda waxa laga yaabaa inay xoogaa kala duwanaadaan iyadoo ku xidhan arrimo badan:
- Furaha qaybinta wuxuu noqon karaa mid aad u yar (maalin) ama aad u weyn (dhowr bilood).
- Qaabaynta haynta waxa laga yaabaa inay ku haboonaato dhowr xad isugeyn xog muhiim ah oo ku dhex jira qaybta firfircoon (halkaas oo cabbirada la duubay), ama laga yaabo inaan.
- Haddii ay jiraan xog badan, markaa cutubyada ugu horreeya, taas oo ay ugu wacan tahay isku-dhafka asalka ah ayaa laga yaabaa inay hore u weynaadaan (haddii aad doorato furaha qaybinta aan fiicnayn), iskuma biirin doonaan qaybo yaryar oo cusub.
Waxayna had iyo jeer ku dhammaanaysaa si isku mid ah. Meesha ay ku jiraan mitirka ee ClickHouse kaliya way kordhisaa haddii:
- ha codsan
OPTIMIZE ... FINAL
gacanta ama - Ha gelin xogta dhammaan qaybaha si joogto ah, si ay mar dhow ama hadhow u bilaabato isku-darka asalka
Habka labaad wuxuu u muuqdaa inuu yahay kan ugu fudud ee la hirgeliyo, sidaas darteed, maahan mid sax ah oo markii hore la isku dayay.
Waxaan qoray qoraal si fudud oo fudud u diraya qiyaasaha mitirka maalin kasta 4tii sano ee la soo dhaafay oo orday cron saacad kasta.
Tan iyo markii hawlgalka oo dhan ee ClickHouse DBMS ku salaysan yahay xaqiiqada ah in nidaamka this si degdeg ah ama ka dib samayn doonaa dhammaan shaqada asalka ah, laakiin lama oga goorta, Ma aan awoodin in ay sugaan xilligan marka qaybo waaweyn ee jir ah deign si ay u bilaabaan la midoobi la. kuwa yaryar oo cusub. Waxaa caddaatay inaan u baahannahay inaan raadinno hab aan si otomaatig ah ugu hagaajinno awoodda.
Macluumaadka ku jira miisaska nidaamka ClickHouse
Aan eegno qaabka miiska
- db magac (
database
); - magaca miiska (
table
); - Magaca qaybinta iyo aqoonsiga (
partition
&partition_id
); - marka gabal la sameeyay (
modification_time
); - taariikhda ugu yar iyo tan ugu badan ee gabal (qaybinta waxaa la sameeyaa maalin) (
min_date
&max_date
);
Waxa kale oo jira miis
- db magac (
Tables.database
); - magaca miiska (
Tables.table
); - metric da'da marka iskudarka xiga waa in lagu dabaqo
age
);
Sidaas awgeed:
- Waxaan haynaa shax jajab ah iyo shax xeerar isku-dar ah.
- Waxaan isku darnaa isgoyskooda waxaana helnaa miisaska oo dhan *GraphiteMergeTree.
- Waxaan raadineynaa dhammaan qaybaha kuwaas oo:
- in ka badan hal gabal
- ama waxaa la gaaray waqtigii lagu dabaqi lahaa xeerka isku darka ee soo socda, iyo
modification_time
ka weyn xilligan.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ
Codsigan
SELECT
concat(p.database, '.', p.table) AS table,
p.partition_id AS partition_id,
p.partition AS partition,
-- Π‘Π°ΠΌΠΎΠ΅ "ΡΡΠ°ΡΠΎΠ΅" ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΎ Π΄Π»Ρ
-- ΠΏΠ°ΡΡΠΈΡΠΈΠΈ, Π½ΠΎ Π½Π΅ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ, ΡΠΌ (*)
max(g.age) AS age,
-- ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΡΡΠΊΠΎΠ² Π² ΠΏΠ°ΡΡΠΈΡΠΈΠΈ
countDistinct(p.name) AS parts,
-- ΠΠ° ΡΠ°ΠΌΡΡ ΡΡΠ°ΡΡΡΡ ΠΌΠ΅ΡΡΠΈΠΊΡ Π² ΠΏΠ°ΡΡΠΈΡΠΈΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ 00:00:00 ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π΄Π½Ρ
toDateTime(max(p.max_date + 1)) AS max_time,
-- ΠΠΎΠ³Π΄Π° ΠΏΠ°ΡΡΠΈΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°
max_time + age AS rollup_time,
-- ΠΠΎΠ³Π΄Π° ΡΠ°ΠΌΡΠΉ ΡΡΠ°ΡΡΠΉ ΠΊΡΡΠΎΠΊ Π² ΠΏΠ°ΡΡΠΈΡΠΈΠΈ Π±ΡΠ» ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ½
min(p.modification_time) AS modified_at
FROM system.parts AS p
INNER JOIN
(
-- ΠΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° Π΄Π»Ρ Π²ΡΠ΅Ρ
ΡΠ°Π±Π»ΠΈΡ *GraphiteMergeTree
SELECT
Tables.database AS database,
Tables.table AS table,
age
FROM system.graphite_retentions
ARRAY JOIN Tables
GROUP BY
database,
table,
age
) AS g ON
(p.table = g.table)
AND (p.database = g.database)
WHERE
-- Π’ΠΎΠ»ΡΠΊΠΎ Π°ΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΊΡΡΠΊΠΈ
p.active
-- (*) Π ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊΠΈ, Π³Π΄Π΅ ΠΏΡΠ°Π²ΠΈΠ»Π° Π°Π³Π³ΡΠ΅Π³Π°ΡΠΈΠΈ ΡΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Ρ
AND ((toDateTime(p.max_date + 1) + g.age) < now())
GROUP BY
table,
partition
HAVING
-- Π’ΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΡΡΠΈΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ»Π°Π΄ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ
(modified_at < rollup_time)
-- ΠΠ»ΠΈ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΊΡΡΠΊΠ°ΠΌΠΈ
OR (parts > 1)
ORDER BY
table ASC,
partition ASC,
age ASC
waxay soo celisaa mid kasta oo ka mid ah qaybaha miiska * GraphiteMergeTree kuwaas oo isku darka ay xoraynayso booska diskka. Waxa kaliya ee hadhay in la sameeyo waa in la marsiiyo dhamaantood codsi OPTIMIZE ... FINAL
. Hirgelinta kama dambaysta ah waxay sidoo kale tixgelinaysaa xaqiiqda ah in aan loo baahnayn in la taabto qaybo leh duubitaan firfircoon.
Tani waa sida uu mashruucu qabanayo
Haddii aad barnaamijka ku maamusho server leh ClickHouse, waxay si fudud u bilaabi doontaa in ay ku shaqeyso qaabka daemon. Hal saac ayaa codsiga la fulin doonaa, iyadoo la hubinayo in qaybo cusub oo ka weyn saddex maalmood ay soo baxeen kuwaas oo la hagaajin karo.
Qorshayaashayada dhow waa inaan bixino ugu yaraan baakadaha deynta, iyo haddii ay suurtagal tahay sidoo kale rpm.
Halkii gabagabo
9+ bilood ee la soo dhaafay waxaan ku jiray gudaha shirkadayda
Dhowr litir oo biir ah iyo maalmo maamulka ayaa lagu qaatay horumarinta codsiga, oo ay la socdaan
Source: www.habr.com