 Autor: [Adam Nadolny](/autorzy/adam-nadolny) Ekspert DevOps i infrastruktury · Zweryfikowano Kwiecień 2026

1.  [Strona główna](/) ›
2.  [Baza wiedzy](/baza-wiedzy/) ›
3.  ClickHouse — analityka na VPS

# ClickHouse — kolumnowa baza danych dla analityki na VPS

Opublikowano: 10 kwietnia 2026 · Kategoria: VPS / Bazy danych

ClickHouse to kolumnowa baza danych OLAP (Online Analytical Processing) stworzona przez Yandex, open-sourcowa od 2016 roku. Specjalizuje się w błyskawicznym wykonywaniu zapytań analitycznych na miliardach wierszy — zapytanie agregujące miliardy eventów może zwrócić wynik w sekundy zamiast minut. Używają jej Cloudflare, Uber, eBay i setki innych firm do analityki webowej, logów dostępu, metryk aplikacji i raportowania. Ten artykuł pokazuje instalację, konfigurację MergeTree engine i integrację z Grafaną.

## Instalacja ClickHouse — apt vs Docker

\# === Metoda 1: Instalacja przez apt (Ubuntu/Debian) ===
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
curl -fsSL 'https://packages.clickhouse.com/rpm/lts/repodata/repomd.xml.key' | \\
  sudo gpg --dearmor -o /usr/share/keyrings/clickhouse-keyring.gpg

echo "deb \[signed-by=/usr/share/keyrings/clickhouse-keyring.gpg\] \\
  https://packages.clickhouse.com/deb stable main" | \\
  sudo tee /etc/apt/sources.list.d/clickhouse.list

sudo apt update
sudo apt install -y clickhouse-server clickhouse-client

# Ustaw haslo dla uzytkownika default podczas instalacji!
sudo systemctl enable --now clickhouse-server
sudo systemctl status clickhouse-server

# === Metoda 2: Docker Compose (szybkie testy) ===
# docker-compose.yml:
# services:
#   clickhouse:
#     image: clickhouse/clickhouse-server:latest
#     ports:
#       - "8123:8123"   # HTTP interface
#       - "9000:9000"   # Native protocol
#     volumes:
#       - ./clickhouse-data:/var/lib/clickhouse
#     environment:
#       CLICKHOUSE\_PASSWORD: "TajneHaslo123"

# Test polaczenia
clickhouse-client --password
# lub przez HTTP:
# curl 'http://localhost:8123/?query=SELECT+version()'

## MergeTree Engine — serce ClickHouse

MergeTree to główny engine tabeli w ClickHouse. Dane są najpierw zapisywane w małych "parts" (porcjach), które są następnie łączone w tle. Kluczowe parametry to `ORDER BY` (klucz sortowania — decyduje o wydajności zapytań) i `PARTITION BY` (podział danych na partycje, np. miesiącami).

\-- Logowanie zdarzen webowych
CREATE TABLE events (
    event\_date  Date,
    event\_time  DateTime,
    user\_id     UInt64,
    session\_id  String,
    page\_url    String,
    action      LowCardinality(String),  -- Enum-like, oszczedza miejsce
    duration\_ms UInt32,
    country     LowCardinality(String)
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(event\_date)   -- Partycja per miesiac
ORDER BY (event\_date, user\_id, event\_time)  -- Klucz sortowania
SETTINGS index\_granularity = 8192;

-- Wstawianie danych (INSERT jest bardzo szybki)
INSERT INTO events VALUES
    ('2026-04-10', '2026-04-10 14:00:00', 12345, 'sess\_abc', '/home', 'pageview', 850, 'PL'),
    ('2026-04-10', '2026-04-10 14:01:30', 12345, 'sess\_abc', '/pricing', 'click', 1200, 'PL');

-- Zapytania analityczne - to gdzie ClickHouse blysczy
SELECT
    country,
    action,
    count() AS events,
    avg(duration\_ms) AS avg\_duration,
    uniq(user\_id) AS unique\_users
FROM events
WHERE event\_date >= '2026-04-01'
GROUP BY country, action
ORDER BY events DESC
LIMIT 20;

-- Przykladowy wynik: 1.2 miliarda wierszy przetworzone w 1.8 sekundy!

## Materialized Views — pre-agregacja dla dashboardów

\-- Tabela agregowana - statystyki godzinowe
CREATE TABLE events\_hourly\_agg (
    hour            DateTime,
    country         LowCardinality(String),
    action          LowCardinality(String),
    events\_count    UInt64,
    unique\_users    AggregateFunction(uniq, UInt64),
    avg\_duration    AggregateFunction(avg, UInt32)
)
ENGINE = AggregatingMergeTree()
ORDER BY (hour, country, action);

-- Materialized View - automatycznie wypelnia tabele agg
CREATE MATERIALIZED VIEW events\_hourly\_mv
TO events\_hourly\_agg
AS SELECT
    toStartOfHour(event\_time) AS hour,
    country,
    action,
    count() AS events\_count,
    uniqState(user\_id) AS unique\_users,
    avgState(duration\_ms) AS avg\_duration
FROM events
GROUP BY hour, country, action;

-- Zapytanie do agregatow (bardzo szybkie - dane juz przetworzone)
SELECT
    hour,
    country,
    events\_count,
    uniqMerge(unique\_users) AS unique\_users\_count
FROM events\_hourly\_agg
WHERE hour >= now() - INTERVAL 7 DAY
GROUP BY hour, country, events\_count
ORDER BY hour DESC;

## Integracja z Grafana

\# Instalacja pluginu ClickHouse dla Grafana
grafana-cli plugins install grafana-clickhouse-datasource
sudo systemctl restart grafana-server

# Konfiguracja datasource w Grafana UI:
# URL: http://localhost:8123
# Protocol: Native (port 9000) lub HTTP (port 8123)
# Username: default
# Password: TajneHaslo123

# Przydatna konfiguracja /etc/clickhouse-server/users.xml
# Dodaj uzytkownika readonly dla Grafana:
# <readonly\_user>
#   <password\_sha256\_hex>...</password\_sha256\_hex>
#   <profile>readonly</profile>
# </readonly\_user>

# Przykladowe zapytanie do panelu Grafana (time series)
-- SELECT
--   toStartOfMinute(event\_time) AS time,
--   count() AS events
-- FROM events
-- WHERE event\_time BETWEEN {from:DateTime} AND {to:DateTime}
-- GROUP BY time
-- ORDER BY time;

## Porównanie OLAP — ClickHouse vs TimescaleDB vs InfluxDB

Kryterium

ClickHouse

TimescaleDB

InfluxDB v3

Język zapytań

SQL (rozszerzony)

PostgreSQL SQL

Flux / SQL

Szybkość analiz

Bardzo wysoka (OLAP)

Wysoka

Średnia

INSERT throughput

Bardzo wysoki

Wysoki

Wysoki

RAM minimum

4 GB (prod: 16+ GB)

2 GB

2 GB

Integracja SQL

Własny SQL dialect

Pełny PostgreSQL

ograniczona

Use case

Analityka, logi, BI

Time series + SQL

Metryki IoT/serwery

## Najczęstsze pytania

Czym jest kolumnowa baza danych i dlaczego ClickHouse jest szybki? +

W tradycyjnej (wierszowej) bazie danych dane jednego wiersza są przechowywane razem — świetne dla OLTP (INSERT/UPDATE pojedynczych rekordów). W kolumnowej bazie (OLAP) dane jednej kolumny są przechowywane razem. Gdy pytasz "jaka jest suma sprzedaży za ostatni miesiąc", baza czyta tylko kolumnę "kwota" — pomijając wszystkie inne kolumny. To daje 10-100x przyspieszenie dla analitycznych zapytań agregujących duże zbiory. ClickHouse dodatkowo bardzo efektywnie kompresuje dane kolumnowe (podobne wartości w jednej kolumnie kompresują się lepiej) i używa wektorowego przetwarzania danych (SIMD).

Jak ClickHouse wypada w porównaniu z TimescaleDB i InfluxDB? +

ClickHouse vs TimescaleDB: ClickHouse jest szybszy dla ad-hoc zapytań analitycznych na dużych danych, TimescaleDB ma lepszą integrację z PostgreSQL i lepiej radzi sobie z ciągłymi insercjami i zapytaniami z JOIN. TimescaleDB lepiej nadaje się gdy masz już PostgreSQL i chcesz time series. ClickHouse vs InfluxDB: InfluxDB używa własnego języka Flux, jest prostszy do monitoringu metryk, ale słabszy dla złożonych analiz. ClickHouse używa SQL (z rozszerzeniami), lepiej skaluje na petabajty, ma wyższy throughput zapytań. Dla dashboardów metryk (CPU/RAM/dysk) InfluxDB jest prostszy. Dla analityki biznesowej i złożonych raportów ClickHouse wygrywa.

Ile zasobów potrzebuje ClickHouse na VPS? +

ClickHouse jest zasobożerny — nie jest to baza do uruchomienia na małym VPS. Minimum dla deweloperów: 4 GB RAM, 2 CPU, 20 GB NVMe. Produkcja dla małych zbiorów (setki GB): 16 GB RAM, 4-8 CPU, 200+ GB NVMe. ClickHouse intensywnie używa pamięci dla operacji GROUP BY i sortowania. Dla monitoringu metryk kilku serwerów wystarczy 4-8 GB RAM. Dla analityki e-commerce z miliardami eventów potrzebujesz 32+ GB RAM. Dobrą praktyką jest uruchomienie ClickHouse na dedykowanym serwerze, oddzielnie od aplikacji produkcyjnej.

## Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.

Contabo

VPS z dużą ilością RAM i NVMe — kluczowe dla ClickHouse

High-RAM VPS

[Aktywuj rabat →](/out/contabo)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/contabo)

ProSerwer.pl

Polski dedykowany VPS dla ClickHouse w compliance z RODO

Dedykowany

[Aktywuj rabat →](/out/proserwer-pl)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/proserwer)

## Powiązane strony

-   [InfluxDB v2 + Telegraf — monitoring VPS](/baza-wiedzy/influxdb-telegraf-monitoring)
-   [Grafana + Prometheus — monitoring serwera](/baza-wiedzy/monitoring-grafana-prometheus)
-   [PostgreSQL performance tuning](/baza-wiedzy/postgresql-performance-tuning)
-   [Wszystkie artykuły](/baza-wiedzy/)