Přeskočit na obsah
Data Engineering

Strategie partitioningu dat pro optimální výkon dotazů

8 min čtení
PartitioningVýkonData LakeOptimalizace

Správná strategie partitioningu dramaticky ovlivňuje výkon dotazů. Časové partitioning pro time-series, hash pro rovnoměrné rozložení a range pro sekvenční data.

Proč partitioning

Bez partitioningu engine skenuje celou tabulku. Partitioning umožňuje přeskočit nepotřebná data (partition pruning).

Typy partitioningu

  • Časový — nejčastější, partitioning podle data (den, měsíc)
  • Hash — rovnoměrné rozložení podle hash klíče
  • Range — rozsahy hodnot (A-M, N-Z)
  • List — explicitní seznam hodnot (regiony, kategorie)
# Spark: partitioning při zápisu
df.write.format("delta") \
    .partitionBy("year", "month") \
    .save("/data/orders")

# Dotaz s partition pruning
spark.read.format("delta").load("/data/orders") \
    .filter("year = 2026 AND month = 2")  # čte jen 1 partition

Best practices

  • 1 GB+ na partition — příliš malé partitions jsou kontraproduktivní
  • Max 10k partitions — příliš mnoho = pomalý metadata scan
  • Partitioning podle filtrů — podle nejčastějších WHERE podmínek

Shrnutí

Správný partitioning je klíčový pro výkon. Volte podle nejčastějších filtrů a udržujte partitions dostatečně velké.

CORE SYSTEMS tým

Enterprise architekti a AI inženýři. Stavíme systémy, které fungují.