Moni, habr.
Ngati wina akugwiritsa ntchito ndondomekoyi
ClickHouse imathetsa mavuto omwe afotokozedwa bwino. Mwachitsanzo, mutasamutsa 2TiB ya data kuchokera kunong'onong'ono, imalowa mu 300GiB. Sindidzangokhalira kuyerekeza mwatsatanetsatane; pali zolemba zambiri pamutuwu. Kuphatikiza apo, mpaka posachedwa, sizinali zonse zomwe zinali zangwiro ndi malo athu osungira a ClickHouse.
Mavuto ndi malo ogwiritsidwa ntchito
Poyamba, zonse ziyenera kugwira ntchito bwino. Kutsatira retention
), kenako pangani tebulo molingana ndi malingaliro a backend osankhidwa a graphite-web:
Kuti mumvetsetse kuti ndi iti, muyenera kudziwa momwe zoyikamo zimagwirira ntchito komanso njira yopitilira yamoyo ya data pamatebulo a injini za banja *MergeTree ClickHouse (matchati otengedwa kuchokera
- anaika
Π±Π»ΠΎΠΊ
deta. Kwa ife, ndi ma metric omwe adafika.
- Chida chilichonse chotere chimasanjidwa molingana ndi kiyi isanalembedwe ku disk.
ORDER BY
otchulidwa popanga tebulo. - Pambuyo kusankha,
ΠΊΡΡΠΎΠΊ
(part
) deta imalembedwa ku disk.
- Seva imayang'anira kumbuyo kuti pasakhale zidutswa zambiri zotere, ndikuyambitsa maziko
ΡΠ»ΠΈΡΠ½ΠΈΡ
(merge
, phatikizani apa).
- Seva imasiya kuthamanga zophatikiza zokha data ikangosiya kulowa mu
ΠΏΠ°ΡΡΠΈΡΠΈΡ
(partition
), koma mutha kuyambitsa ntchitoyi pamanja ndi lamuloOPTIMIZE
. - Ngati pali chidutswa chimodzi chokha chomwe chatsala mu magawo, ndiye kuti simungathe kuyendetsa kuphatikiza pogwiritsa ntchito lamulo lanthawi zonse; muyenera kugwiritsa ntchito
OPTIMIZE ... FINAL
Kenako, ma metrics oyamba amafika. Ndipo amatenga malo. Zochitika zotsatila zimatha kusiyanasiyana malinga ndi zinthu zambiri:
- Kiyi yogawa imatha kukhala yaying'ono (tsiku) kapena yayikulu kwambiri (miyezi ingapo).
- Kusungirako kungagwirizane ndi magawo angapo ophatikiza deta mkati mwa magawo omwe akugwira ntchito (pomwe ma metrics amajambulidwa), kapena ayi.
- Ngati pali zambiri zambiri, ndiye kuti ma chunks oyambirira, omwe chifukwa cha kugwirizanitsa maziko angakhale aakulu kale (ngati mutasankha makiyi osagawanitsa bwino), sangadziphatikize ndi timagulu tating'onoting'ono tatsopano.
Ndipo izo nthawizonse zimatha mofanana. Malo okhala ndi ma metrics ku ClickHouse amangowonjezeka ngati:
- musagwiritse ntchito
OPTIMIZE ... FINAL
pamanja kapena - osayika zidziwitso m'magawo onse mosalekeza, kuti posakhalitsa kuphatikizana kwam'mbuyo kuyambike
Njira yachiwiri ikuwoneka kuti ndiyosavuta kugwiritsa ntchito ndipo, chifukwa chake, siyolondola ndipo idayesedwa poyamba.
Ndinalemba zolemba zosavuta za python zomwe zimatumiza ma metric a dummy tsiku lililonse kwa zaka 4 zapitazi ndikuthamanga cron ola lililonse.
Popeza kuti ntchito yonse ya ClickHouse DBMS imachokera ku mfundo yakuti dongosolo lino lidzachita ntchito zonse zam'mbuyo, koma sizidziwika kuti ndi liti, sindinathe kuyembekezera nthawi yomwe zidutswa zazikuluzikulu zakale zimayamba kugwirizanitsa ndi. zatsopano zazing'ono. Zinali zowonekeratu kuti tifunikira kuyang'ana njira yosinthira kukhathamiritsa kokakamizidwa.
Zambiri pamatebulo a ClickHouse system
Tiyeni tiwone momwe tebulo limapangidwira
- db dzina (
database
); - dzina la tebulo (
table
); - dzina lagawo ndi ID (
partition
&partition_id
); - pamene chidutswacho chinalengedwa (
modification_time
); - tsiku lochepera komanso lalitali pachidutswa (kugawa kumachitika masana) (
min_date
&max_date
);
Palinso tebulo
- db dzina (
Tables.database
); - dzina la tebulo (
Tables.table
); - zaka za metric pomwe kuphatikiza kotsatira kuyenera kugwiritsidwa ntchito (
age
);
Kotero:
- Tili ndi tebulo la chunks ndi tebulo la malamulo ophatikiza.
- Timaphatikiza mphambano yawo ndikupeza matebulo onse *GraphiteMergeTree.
- Tikuyang'ana magawo onse omwe:
- kuposa chidutswa chimodzi
- kapena nthawi yakwana yoti agwiritse ntchito lamulo lotsatira la kuphatikizira, ndi
modification_time
wamkulu kuposa nthawi ino.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ
Pempho ili
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
imabweretsa magawo onse a tebulo la *GraphiteMergeTree omwe kuphatikiza kwawo kuyenera kumasula malo a disk. Chinthu chokha chimene chatsala ndi kuwadutsa onse ndi pempho OPTIMIZE ... FINAL
. Kukhazikitsa komaliza kumaganiziranso kuti palibe chifukwa chokhudza magawo ndi kujambula kogwira.
Izi ndi zomwe polojekitiyi imachita
Ngati mutayendetsa pulogalamuyi pa seva ndi ClickHouse, idzangoyamba kugwira ntchito mu daemon mode. Kamodzi pa ola pempho lidzaperekedwa, kuwunika ngati magawo atsopano amasiku atatu awonekera omwe angathe kukonzedwa.
Mapulani athu aposachedwa ndikupereka ma phukusi osachepera a deb, ndipo ngati nkotheka komanso rpm.
M'malo mapeto
Pa miyezi 9+ yapitayi ndakhala mkati mwa kampani yanga
Malita angapo a mowa ndi masiku a admin adagwiritsidwa ntchito popanga pempholi, limodzi ndi
Source: www.habr.com