
Tena koe, habr.
Mena ka whakamahia e tetahi te punaha ka pa ki tetahi take mahi rokiroki (IO, kua pau te mokowā kōpae), katahi te tupono ka tukuna a ClickHouse hei whakakapinga kia kotahi. Ko tenei tauākī e tohu ana kua whakamahia kētia te whakatinanatanga tuatoru hei inenga whiwhi daemon, hei tauira ranei .
He pai te whakatau a ClickHouse i nga raru kua whakaahuahia. Hei tauira, i muri i te whakawhiti i te 2TiB o nga raraunga mai i te muhumuhu, ka uru ki te 300GiB. E kore ahau e noho ki runga i nga korero whakatairite; he maha nga tuhinga mo tenei kaupapa. I tua atu, tae noa ki tenei wa, kaore nga mea katoa i tino pai ki to maatau rokiroki ClickHouse.
Nga raru mo te waahi kua pau
I te titiro tuatahi, me mahi pai nga mea katoa. Whai muri , hanga he whirihora mo te kaupapa rokiroki inenga (atu retention), ka hanga he ripanga kia rite ki te taunakitanga o te tuara kua tohua mo te graphite-web: + ranei , i runga i te aha te puranga e whakamahia ana. Na... ka rere te poma taima.
Kia mohio ai koe ko tehea, me mohio koe me pehea te mahi whakauru me te huarahi ora o nga raraunga i roto i nga tepu miihini o te whanau *Rakau Hanumi ClickHouse (nga tūtohi i tangohia mai i Alexey Zatelepin):
- Kua whakauruhia
блокraraunga. I a maatau, ko nga inenga i tae mai.

- Ka kōmakaia ia poraka kia rite ki te kī i mua i te tuhi ki te kōpae.
ORDER BYi tohua i te wa e hanga ana i te ripanga. - Whai muri i te whakariterite,
кусок(part) ka tuhia te raraunga ki te kōpae.

- Ka aro turuki te tūmau i te papamuri kia kore ai e maha nga waahanga penei, ka whakarewahia te papamuri
слияния(merge, ka hanumi a muri ake nei).


- Ka mutu te whakahaere o te tūmau ka hanumi i a ia ano ka mutu te rere o te raraunga ki roto i te
партицию(partition), engari ka taea e koe te tiimata i te mahi ma te whakahauOPTIMIZE. - Mena kotahi noa te waahanga e toe ana i roto i te wehewehenga, karekau koe e kaha ki te whakahaere i te hanumi ma te whakamahi i te whakahau o mua; me whakamahi koe
OPTIMIZE ... FINAL
Na, ka tae mai nga inenga tuatahi. Na ka tango ratou i etahi waahi. Ka rereke pea nga huihuinga o muri mai i runga i nga mea maha:
- Ko te taviri wehewehe he iti rawa (he ra) he nui rawa ranei (he maha nga marama).
- Ka uru pea te whirihora pupuri ki etahi paepae whakahiato raraunga nui i roto i te wehewehenga hohe (kei te waahi ka tuhia nga ine), kaore ranei.
- Mena he nui nga raraunga, katahi ka nui kee nga waahanga tuatahi, na te whakakotahitanga papamuri (mehemea ka kowhiria e koe he taviri wehewehe kore-pai), ka kore e hanumi ki nga wahi iti hou.
A he rite tonu te mutunga. Ko te waahi e nohoia ana e nga inenga i ClickHouse ka piki noa mena:
- kaua e tono
OPTIMIZE ... FINALā-ringa ranei - kaua e whakauru raraunga ki roto i nga waahanga katoa i runga i te kaupapa haere tonu, kia wawe ka timata te hanumi papamuri
Ko te tikanga tuarua te ahua ngawari ki te whakatinana, na reira, he he, i whakamatauria i te tuatahi.
I tuhia e ahau he tuhinga python tino ngawari i tukuna i nga inenga mo ia ra mo nga tau e 4 kua pahure ake nei me te whakahaere cron ia haora.
I te mea ko nga mahi katoa a ClickHouse DBMS kei runga i te meka ka mahi tenei punaha i nga mahi papamuri katoa, engari kaore i te mohiotia ahea, kaore i taea e au te tatari mo te wa ka tiimata nga waahanga nui tawhito ki te whakakotahi me nga mea iti hou. I marama mai me rapu huarahi ki te whakaaunoa i nga arotautanga kaha.

Nga korero kei roto i nga ripanga punaha ClickHouse
Kia titiro tatou ki te hanganga tepu . He korero matawhānui tenei mo ia wahanga o nga ripanga katoa i runga i te tūmau ClickHouse. Kei roto, me era atu mea, nga pou e whai ake nei:
- ingoa db (
database); - ingoa tepu (
table); - ingoa wehewehe me te ID (
partition&partition_id); - i te wa i hangaia ai te waahanga (
modification_time); - te iti me te morahi o te ra i roto i tetahi waahanga (ko te wehewehe i te ra) (
min_date&max_date);
He tepu ano , me nga mara whakamere e whai ake nei:
- ingoa db (
Tables.database); - ingoa tepu (
Tables.table); - tau ineine ka hoatu te whakahiatotanga e whai ake nei (
age);
Na:
- Kei a matou he ripanga mohanga me te ripanga ture whakahiato.
- Ka whakakotahihia e matou o raatau whakawhitinga ka whiwhi i nga ripanga katoa *GraphiteMergeTree.
- Kei te rapu matou mo nga waahanga katoa kei roto:
- neke atu i te kotahi wahi
- kua tae mai ranei te wa ki te whakamahi i te ture whakahiato e whai ake nei, a
modification_timepakeke ake i tenei wa.
Реализация
Ko tenei tono
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 ASCka whakahoki ia o nga *GraphiteMergeTree wehewehe ripanga me whakawātea te mokowā kōpae ki te hanumi. Heoi ano te mea hei mahi ma ratou katoa me te tono OPTIMIZE ... FINAL. Ko te whakatinanatanga whakamutunga ka mau ki te meka kaore he take ki te pa ki nga waahanga me te tuhi kaha.
Koinei tonu te mahi a te kaupapa . Ko nga hoa o mua mai i Yandex.Market i whakamatau i te mahi, ka kitea te hua o te mahi i raro nei.

Mena kei te whakahaere koe i te papatono i runga i te tūmau me ClickHouse, ka timata noa te mahi i roto i te aratau daemon. Kia kotahi haora ka mahia he tono, ka tirohia mena kua puta nga waahanga hou kua pakeke ake i te toru ra ka taea te whakatika.
Ko ta maatau mahere tonu ko te whakarato i te iti rawa o nga putea nama, a mena ka taea ano hoki te rpm.
Engari o te mutunga
I roto i nga marama 9+ kua hipa kua noho ahau ki roto i taku kamupene He maha nga wa i pau ki te tarai i te waahi o ClickHouse me te graphite-web. He wheako pai, i hua mai i te whakawhiti tere mai i te muhumuhu ki ClickHouse hei rokiroki inenga. Ko te tumanako ko tenei tuhinga he timatanga o te raupapa e pa ana ki nga whakapainga kua mahia e matou ki nga momo waahanga o tenei puranga, me nga mahi ka mahia a muri ake nei.
He maha nga rita o te pia me nga ra whakahaere i pau ki te whakawhanake i te tono, me te , e hiahia ana ahau ki te whakapuaki i taku mihi ki a ia. A mo te arotake ano i tenei tuhinga.
Source: will.com




