Kwaziwai, habr.
Kana mumwe munhu akashandisa iyo system
ClickHouse inogadzirisa matambudziko akatsanangurwa zvakanaka. Semuenzaniso, mushure mekutamisa 2TiB yedata kubva kuzevezera, inokwana mu300GiB. Ini handisi kuzogara pakuenzanisa zvakadzama; kune zvakawanda zvinyorwa pane iyi nyaya. Mukuwedzera, kusvika nguva pfupi yadarika, hazvisi zvese zvaive zvakakwana neyedu ClickHouse chengetedzo.
Matambudziko nenzvimbo yakadyiwa
Pakutanga kuona, zvinhu zvose zvinofanira kushanda zvakanaka. Kutevera retention
), wobva wagadzira tafura zvinoenderana nekurudziro yeakasarudzwa backend yegraphite-web:
Kuti unzwisise kuti ndeipi, iwe unofanirwa kuziva mashandisiro anoita basa uye imwe nzira yehupenyu yedata mumatafura einjini dzemhuri *.MergeTree ClickHouse (machati akatorwa kubva
- Inseted
Π±Π»ΠΎΠΊ
data. Kwatiri, aive ma metrics akasvika.
- Imwe neimwe block yakadaro inorongwa zvinoenderana nekiyi isati yanyorwa kune dhisiki.
ORDER BY
inotsanangurwa pakugadzira tafura. - Mushure mekusarudza,
ΠΊΡΡΠΎΠΊ
(part
) data inonyorerwa kudhisiki.
- Sevha inotarisisa kumashure kuitira kuti pasave nezvimedu zvakawanda zvakadaro, uye inotangisa kumashure
ΡΠ»ΠΈΡΠ½ΠΈΡ
(merge
, zvino sangana).
- Iyo sevha inomira kumhanya inosanganiswa yega kana data yamira ichiyerera ichiyerera ichipinda mu
ΠΏΠ°ΡΡΠΈΡΠΈΡ
(partition
), asi unogona kutanga maitiro nemawoko nekurairaOPTIMIZE
. - Kana paine chidimbu chimwe chete chasara muchikamu, saka haugone kumhanyisa kusanganisa uchishandisa iyo yakajairwa kuraira; iwe unofanirwa kushandisa
OPTIMIZE ... FINAL
Saka, ma metrics ekutanga anosvika. Uye vanotora imwe nzvimbo. Zviitiko zvinotevera zvinogona kusiyana zvichienderana nezvikonzero zvakawanda:
- Kiyi yekuparadzanisa inogona kunge iri diki (zuva) kana yakakura kwazvo (mwedzi yakati wandei).
- Iyo yekuchengeta gadziriso inogona kukwana akati wandei akakosha data aggregation zvikumbaridzo mukati meiyo inoshanda partition (painorekodhwa metrics), kana pamwe kwete.
- Kana paine data rakawanda, saka machunks ekutanga, ayo nekuda kwekubatanidzwa kwemashure anogona kunge atove akakura (kana ukasarudza isina-yakakwana yekugovera kiyi), haizozvisanganise nemadiki madiki chunks.
Uye nguva dzose inopera zvakafanana. Iyo nzvimbo inogarwa nemametrics muClickHouse inongowedzera kana:
- usashande
OPTIMIZE ... FINAL
nemaoko kana - usaise data muzvikamu zvese nguva nenguva, kuitira kuti nekukurumidza kana kuti gare gare kusanganiswa kwemashure kunotanga
Yechipiri nzira inoratidzika kunge iri nyore kuita uye, saka, haina kururama uye yakaedzwa kutanga.
Ndakanyora script yakapusa python iyo yakatumira dummy metrics yezuva rega rega kwemakore apfuura 4 uye yakamhanya cron awa yega yega.
Sezvo kushanda kwese kweClickHouse DBMS kwakavakirwa pakuti iyi sisitimu ichakurumidza kana gare gare kuita basa rese rekumashure, asi hazvizivikanwe kuti riini, handina kukwanisa kumirira nguva iyo zvidimbu zvakakura zvakatanga kutanga kubatanidzwa. zvitsva zvitsva. Zvakava pachena kuti taifanira kutsvaga nzira yekuita otomatiki optimizations.
Ruzivo muClickHouse system matafura
Ngatitarisei chimiro chetafura
- db zita (
database
); - zita retafura (
table
); - zita uye chikamu ID (
partition
&partition_id
); - apo chidimbu chakagadzirwa (
modification_time
); - diki uye zuva rakawanda muchidimbu (kugovera kunoitwa nezuva) (
min_date
&max_date
);
Kunewo tafura
- db zita (
Tables.database
); - zita retafura (
Tables.table
); - metric age apo iyo inotevera aggregation inofanirwa kushandiswa (
age
);
Saka:
- Tine tafura yezvimedu uye tafura yemitemo yekuunganidza.
- Isu tinosanganisa mharadzano yavo uye tinotora ese matafura * GraphiteMergeTree.
- Isu tiri kutsvaga ese mapartitions umo:
- zvinopfuura chidimbu chimwe
- kana kuti nguva yasvika yekushandisa mutemo unotevera wekuunganidza, uye
modification_time
mukuru kudarika nguva ino.
Kutevedzera
Chikumbiro ichi
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
inodzosa imwe neimwe ye *GraphiteMergeTree tafura partitions iyo kusanganisa kunofanirwa kusunungura dhisiki nzvimbo. Chinhu chasara kuita kungopfuura mavari vese nechikumbiro OPTIMIZE ... FINAL
. Kuitwa kwekupedzisira kunofungawo nezve chokwadi chekuti hapana chikonzero chekubata zvikamu neanoshanda kurekodha.
Izvi ndizvo chaizvo zvinoita chirongwa
Kana iwe ukamhanyisa chirongwa pane server neClickHouse, inongotanga kushanda mu daemon mode. Kamwe paawa chikumbiro chichaitwa, kutarisa kana zvikamu zvitsva zvakakura kupfuura mazuva matatu zvakaonekwa zvinogona kugadziriswa.
Zvirongwa zvedu zvepakarepo ndezvekupa angangoita dhibhi mapakeji, uye kana zvichibvira zvakare rpm.
Pane mhedziso
Kwemwedzi ye9+ yapfuura ndanga ndiri mukati mekambani yangu
Akawanda malita edoro uye admin mazuva akashandiswa mukugadzira chikumbiro, pamwe chete
Source: www.habr.com