<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>clickhouse.guru</title><description>History, courses, tutorials and tools for ClickHouse.</description><link>https://clickhouse.guru/</link><item><title>INSERT … RETURNING can return rows ClickHouse never stored</title><link>https://clickhouse.guru/blog/insert-returning-rows-never-stored/</link><guid isPermaLink="true">https://clickhouse.guru/blog/insert-returning-rows-never-stored/</guid><description>A field test of 26.11&apos;s INSERT … RETURNING. It hands back the server&apos;s generated values almost for free — and, when an insert fails or is retried, rows and ids that never reached the table.</description><pubDate>Thu, 29 Oct 2026 00:00:00 GMT</pubDate><category>Blog</category></item><item><title>ClickHouse 26.10: function composition, joins on any condition and a long upgrade checklist</title><link>https://clickhouse.guru/news/clickhouse-26-10/</link><guid isPermaLink="true">https://clickhouse.guru/news/clickhouse-26-10/</guid><description>26.10 adds the f | g composition operator, Trino-style SQL, JOIN on arbitrary ON conditions, experimental LATERAL JOIN, Overlay databases and top-K filtering for GROUP BY LIMIT, and ships 37 backward-incompatible changes, from a seccomp filter at startup to arrayCount returning UInt64.</description><pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate><category>News</category></item><item><title>An object-storage bill that jumped, and the bytes were not the reason</title><link>https://clickhouse.guru/blog/an-object-storage-bill-that-jumped/</link><guid isPermaLink="true">https://clickhouse.guru/blog/an-object-storage-bill-that-jumped/</guid><description>A non-production cluster&apos;s S3-backed disk got sharply more expensive in a week. The stored bytes were flat; the cost was requests. How to split a bucket bill into bytes, orphans and requests with system.remote_data_paths, system.parts and system.errors.</description><pubDate>Wed, 14 Oct 2026 00:00:00 GMT</pubDate><category>Blog</category></item><item><title>Deleting a slice of a huge table</title><link>https://clickhouse.guru/blog/deleting-a-slice-of-a-huge-table/</link><guid isPermaLink="true">https://clickhouse.guru/blog/deleting-a-slice-of-a-huge-table/</guid><description>Removing about a tenth of the rows from tables with hundreds of billions of rows: count first, back up to a side table, then choose between ALTER DELETE per partition, lightweight DELETE and REPLACE PARTITION. What each costs, how to watch it, and why one slow replica set the pace.</description><pubDate>Wed, 14 Oct 2026 00:00:00 GMT</pubDate><category>Blog</category></item><item><title>What REVOKE really revokes</title><link>https://clickhouse.guru/blog/what-revoke-really-revokes/</link><guid isPermaLink="true">https://clickhouse.guru/blog/what-revoke-really-revokes/</guid><description>Partial revokes, wildcards, roles and WITH GRANT OPTION in ClickHouse RBAC, tested row by row in system.grants. A REVOKE on a user does nothing to a privilege that arrives through a role, and re-issuing the wide GRANT silently erases the fence.</description><pubDate>Wed, 14 Oct 2026 00:00:00 GMT</pubDate><category>Blog</category></item><item><title>When the system tables ate the disk</title><link>https://clickhouse.guru/blog/when-system-tables-ate-the-disk/</link><guid isPermaLink="true">https://clickhouse.guru/blog/when-system-tables-ate-the-disk/</guid><description>A staging cluster&apos;s system database reached several TiB, three quarters of it in renamed leftovers like query_log_3 that no TTL would ever touch. How it happened, how to measure it, how to set retention so it sticks, and how to clean up without a rename trap.</description><pubDate>Wed, 14 Oct 2026 00:00:00 GMT</pubDate><category>Blog</category></item><item><title>The ClickHouse Production Incident Playbook</title><link>https://clickhouse.guru/tutorials/clickhouse-incident-playbook/</link><guid isPermaLink="true">https://clickhouse.guru/tutorials/clickhouse-incident-playbook/</guid><description>Eight incident classes, each as symptom, first checks in SQL, root-cause mechanism, fix and what to watch: memory kills, too many parts, replication backlog, stuck mutations, hanging metadata queries, one saturated node, detached parts and rising error rates.</description><pubDate>Wed, 14 Oct 2026 00:00:00 GMT</pubDate><category>Tutorials</category></item><item><title>Migrating from ZooKeeper to ClickHouse Keeper</title><link>https://clickhouse.guru/tutorials/migrating-from-zookeeper-to-clickhouse-keeper/</link><guid isPermaLink="true">https://clickhouse.guru/tutorials/migrating-from-zookeeper-to-clickhouse-keeper/</guid><description>How the keeper-converter really works, why a snapshot taken while the cluster is live produces a quiet time bomb in the replication log, a cut-over plan with hard gates, how to verify the copy znode by znode, how to clean up what is left behind, and what to watch on Keeper afterwards.</description><pubDate>Wed, 14 Oct 2026 00:00:00 GMT</pubDate><category>Tutorials</category></item><item><title>Upgrading ClickHouse safely: from changelog to rollback</title><link>https://clickhouse.guru/tutorials/upgrading-clickhouse-safely/</link><guid isPermaLink="true">https://clickhouse.guru/tutorials/upgrading-clickhouse-safely/</guid><description>A field guide to taking a replicated cluster from one release line to the next: choosing LTS or stable, turning the changelog into probes against your own estate, the compatibility setting and what it cannot cover, rehearsing on staging, rolling a mixed-version cluster, and the point after which you cannot go back.</description><pubDate>Wed, 14 Oct 2026 00:00:00 GMT</pubDate><category>Tutorials</category></item><item><title>What 57 feature requests taught me about ClickHouse</title><link>https://clickhouse.guru/philosophy/what-57-feature-requests-taught-me/</link><guid isPermaLink="true">https://clickhouse.guru/philosophy/what-57-feature-requests-taught-me/</guid><description>From 2017 to 2026 I filed about 57 feature requests on the ClickHouse tracker. Read together, the answers draw a map of what the core team says yes to, what it refuses, and why. A table of how long the accepted ones took, and advice for filing your own.</description><pubDate>Wed, 14 Oct 2026 00:00:00 GMT</pubDate><category>Philosophy</category></item><item><title>Build a game with materialized views</title><link>https://clickhouse.guru/tutorials/build-a-game-with-materialized-views/</link><guid isPermaLink="true">https://clickhouse.guru/tutorials/build-a-game-with-materialized-views/</guid><description>Build a guess-the-number game in pure ClickHouse SQL: a Null table for input, materialized views for logic, a one-row EmbeddedRocksDB table for state, and a SELECT for the screen.</description><pubDate>Sun, 04 Oct 2026 00:00:00 GMT</pubDate><category>Tutorials</category></item><item><title>The write that cannot answer</title><link>https://clickhouse.guru/blog/the-write-that-cannot-answer/</link><guid isPermaLink="true">https://clickhouse.guru/blog/the-write-that-cannot-answer/</guid><description>Seven years of INSERT … RETURNING in ClickHouse, and the architecture its absence built.</description><pubDate>Fri, 02 Oct 2026 00:00:00 GMT</pubDate><category>Blog</category></item><item><title>ClickHouse 26.9: LIMIT AFTER/UNTIL, incremental refreshable views and ZSTD by default</title><link>https://clickhouse.guru/news/clickhouse-26-9/</link><guid isPermaLink="true">https://clickhouse.guru/news/clickhouse-26-9/</guid><description>26.9 adds boundary-based LIMIT, APPEND INCREMENTAL refreshes, DISTINCT spilling and scoped tokens, and changes the default compression from LZ4 to ZSTD(3) while removing the old analyzer, WINDOW VIEW and CatBoost.</description><pubDate>Mon, 21 Sep 2026 00:00:00 GMT</pubDate><category>News</category></item><item><title>ClickHouse 26.8 LTS: pipe syntax, background queries and a faster GROUP BY</title><link>https://clickhouse.guru/news/clickhouse-26-8/</link><guid isPermaLink="true">https://clickhouse.guru/news/clickhouse-26-8/</guid><description>The 26.8 long-term-support release adds pipe SQL, queries that survive a dropped connection, IEJoin, new text tokenizers and an adaptive GROUP BY, and changes max_insert_threads to auto.</description><pubDate>Thu, 27 Aug 2026 00:00:00 GMT</pubDate><category>News</category></item><item><title>ClickHouse 26.7: EXPLAIN ANALYZE, leaner joins and a stricter S3 credential model</title><link>https://clickhouse.guru/news/clickhouse-26-7/</link><guid isPermaLink="true">https://clickhouse.guru/news/clickhouse-26-7/</guid><description>26.7 finally gives you EXPLAIN ANALYZE, makes hash joins smaller and faster, speeds up decompression on every scan, and changes two defaults you must plan for: S3 credentials and insert deduplication.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><category>News</category></item><item><title>ClickHouse 26.6: hypothetical indexes, first continuous queries, and a data-loss footgun closed</title><link>https://clickhouse.guru/news/clickhouse-26-6/</link><guid isPermaLink="true">https://clickhouse.guru/news/clickhouse-26-6/</guid><description>26.6 lets you test a skip index before building it, runs the first continuous queries over MergeTree, makes Keeper about twice as fast, and changes three defaults: insert deduplication, the x86 baseline and REPLACE PARTITION.</description><pubDate>Thu, 25 Jun 2026 00:00:00 GMT</pubDate><category>News</category></item><item><title>ATTACH PARTITION FROM: the cheapest way to move data</title><link>https://clickhouse.guru/tutorials/attach-partition-from-fast-bulk-load/</link><guid isPermaLink="true">https://clickhouse.guru/tutorials/attach-partition-from-fast-bulk-load/</guid><description>Load into a staging table, then move whole partitions into the production table with hard links instead of copying rows. Includes REPLACE PARTITION for atomic swaps.</description><pubDate>Wed, 15 Oct 2025 00:00:00 GMT</pubDate><category>Tutorials</category></item><item><title>Moving to the new analyzer</title><link>https://clickhouse.guru/tutorials/moving-to-the-new-analyzer/</link><guid isPermaLink="true">https://clickhouse.guru/tutorials/moving-to-the-new-analyzer/</guid><description>What the new query analyzer changes, the queries it rejects, how to migrate them, and how to replace the deprecated neighbor() and runningDifference() functions with window functions.</description><pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate><category>Tutorials</category></item><item><title>Working with JSON in ClickHouse</title><link>https://clickhouse.guru/tutorials/working-with-json-in-clickhouse/</link><guid isPermaLink="true">https://clickhouse.guru/tutorials/working-with-json-in-clickhouse/</guid><description>Load JSON with JSONEachRow, store semi-structured documents in the JSON type, query paths with their real types, and export column-oriented JSON formats.</description><pubDate>Tue, 27 May 2025 00:00:00 GMT</pubDate><category>Tutorials</category></item><item><title>The ClickHouse HTTP interface</title><link>https://clickhouse.guru/tutorials/the-clickhouse-http-interface/</link><guid isPermaLink="true">https://clickhouse.guru/tutorials/the-clickhouse-http-interface/</guid><description>Run queries and insert data with plain curl: query parameters, authentication, formats, safe parameter binding, compression, async inserts and error handling.</description><pubDate>Fri, 28 Mar 2025 00:00:00 GMT</pubDate><category>Tutorials</category></item><item><title>The query cache in ClickHouse</title><link>https://clickhouse.guru/tutorials/query-cache-in-clickhouse/</link><guid isPermaLink="true">https://clickhouse.guru/tutorials/query-cache-in-clickhouse/</guid><description>How to cache the result of a SELECT for a while, what the cache will refuse to store, and the settings that decide who shares an entry and for how long.</description><pubDate>Thu, 12 Dec 2024 00:00:00 GMT</pubDate><category>Tutorials</category></item><item><title>Advent of Code 2024, day 1, in ClickHouse SQL</title><link>https://clickhouse.guru/blog/advent-of-code-in-clickhouse-sql/</link><guid isPermaLink="true">https://clickhouse.guru/blog/advent-of-code-in-clickhouse-sql/</guid><description>Sort two columns independently, then pair them up: groupArray, arraySort and ARRAY JOIN turn the day 1 puzzle into one query. Run on clickhouse local with the sample input.</description><pubDate>Thu, 05 Dec 2024 00:00:00 GMT</pubDate><category>Blog</category></item><item><title>Reading EXPLAIN in ClickHouse</title><link>https://clickhouse.guru/tutorials/explain-in-clickhouse/</link><guid isPermaLink="true">https://clickhouse.guru/tutorials/explain-in-clickhouse/</guid><description>The EXPLAIN variants (AST, SYNTAX, QUERY TREE, PLAN, PIPELINE, ESTIMATE) and which one answers which question, with real output from a small demo table.</description><pubDate>Thu, 19 Sep 2024 00:00:00 GMT</pubDate><category>Tutorials</category></item><item><title>Notes from ClickHouse release webinars, 22.9 to 23.8</title><link>https://clickhouse.guru/blog/notes-from-clickhouse-release-webinars-22-9-to-23-8/</link><guid isPermaLink="true">https://clickhouse.guru/blog/notes-from-clickhouse-release-webinars-22-9-to-23-8/</guid><description>A condensed reading of twelve monthly release calls, from 22.9 to 23.8: what each release was about and which items are worth knowing about, with links to the official release notes.</description><pubDate>Mon, 26 Aug 2024 00:00:00 GMT</pubDate><category>Blog</category></item><item><title>ClickHouse and S3: table functions, S3Queue and S3 disks</title><link>https://clickhouse.guru/tutorials/clickhouse-and-s3/</link><guid isPermaLink="true">https://clickhouse.guru/tutorials/clickhouse-and-s3/</guid><description>The ways to combine ClickHouse with S3-compatible storage: ad-hoc queries, loading and exporting, continuous ingestion with S3Queue, refreshable views, and S3 as a storage disk.</description><pubDate>Wed, 07 Aug 2024 00:00:00 GMT</pubDate><category>Tutorials</category></item><item><title>Projections: hidden tables that speed up the base table</title><link>https://clickhouse.guru/tutorials/projections/</link><guid isPermaLink="true">https://clickhouse.guru/tutorials/projections/</guid><description>A projection stores the same data re-sorted or pre-aggregated inside the table&apos;s own parts, and ClickHouse picks it automatically. How to add, backfill, verify and when to prefer a materialized view.</description><pubDate>Fri, 16 Feb 2024 00:00:00 GMT</pubDate><category>Tutorials</category></item><item><title>Window functions: frames, ranking and lag/lead</title><link>https://clickhouse.guru/tutorials/window-functions-frames/</link><guid isPermaLink="true">https://clickhouse.guru/tutorials/window-functions-frames/</guid><description>ROWS vs RANGE frames, running and moving averages, row_number/rank/dense_rank, lagInFrame/leadInFrame and top-N per group.</description><pubDate>Wed, 27 Sep 2023 00:00:00 GMT</pubDate><category>Tutorials</category></item><item><title>How replication works: parts, replicas, Keeper and mutations</title><link>https://clickhouse.guru/tutorials/replication-internals-parts-replicas-keeper/</link><guid isPermaLink="true">https://clickhouse.guru/tutorials/replication-internals-parts-replicas-keeper/</guid><description>The mental model behind ReplicatedMergeTree: what lives in Keeper, how an insert, a merge and a mutation travel between replicas, and which system tables show each stage.</description><pubDate>Mon, 25 Sep 2023 00:00:00 GMT</pubDate><category>Tutorials</category></item><item><title>Window functions: OVER, PARTITION BY and ORDER BY</title><link>https://clickhouse.guru/tutorials/window-functions-basics/</link><guid isPermaLink="true">https://clickhouse.guru/tutorials/window-functions-basics/</guid><description>How window functions differ from scalar and aggregate functions, and how OVER, PARTITION BY, ORDER BY and named windows shape the result.</description><pubDate>Thu, 24 Aug 2023 00:00:00 GMT</pubDate><category>Tutorials</category></item><item><title>Data-skipping indexes: minmax, set and bloom filters</title><link>https://clickhouse.guru/tutorials/data-skipping-indexes/</link><guid isPermaLink="true">https://clickhouse.guru/tutorials/data-skipping-indexes/</guid><description>Secondary indexes in ClickHouse do not find rows, they rule out granules. The index types, how to size them, how to prove with EXPLAIN that they help, and why they often do not.</description><pubDate>Fri, 18 Aug 2023 00:00:00 GMT</pubDate><category>Tutorials</category></item><item><title>Naming and documenting a ClickHouse schema</title><link>https://clickhouse.guru/philosophy/a-naming-convention-for-clickhouse-schemas/</link><guid isPermaLink="true">https://clickhouse.guru/philosophy/a-naming-convention-for-clickhouse-schemas/</guid><description>A short, opinionated set of naming rules, the argument for storing the documentation in the schema itself with comments, and a lint query on system.columns that enforces both.</description><pubDate>Fri, 07 Jul 2023 00:00:00 GMT</pubDate><category>Philosophy</category></item><item><title>Common table expressions (WITH) in ClickHouse</title><link>https://clickhouse.guru/tutorials/common-table-expressions-in-clickhouse/</link><guid isPermaLink="true">https://clickhouse.guru/tutorials/common-table-expressions-in-clickhouse/</guid><description>WITH in ClickHouse names constants, expressions, scalar subqueries and whole queries. How to refactor a nested query into CTEs, and what CTEs do and do not do for performance.</description><pubDate>Mon, 15 May 2023 00:00:00 GMT</pubDate><category>Tutorials</category></item><item><title>Vector similarity search in ClickHouse</title><link>https://clickhouse.guru/tutorials/vector-similarity-search-in-clickhouse/</link><guid isPermaLink="true">https://clickhouse.guru/tutorials/vector-similarity-search-in-clickhouse/</guid><description>Vectors, norms and distances from scratch, the built-in distance functions, and how to add an approximate-nearest-neighbour index to a MergeTree table.</description><pubDate>Mon, 15 May 2023 00:00:00 GMT</pubDate><category>Tutorials</category></item><item><title>Choosing column codecs: Delta, DoubleDelta, Gorilla and friends</title><link>https://clickhouse.guru/tutorials/choosing-codecs-delta-doubledelta-gorilla/</link><guid isPermaLink="true">https://clickhouse.guru/tutorials/choosing-codecs-delta-doubledelta-gorilla/</guid><description>Which specialised compression codec fits which column. Measured on a million-row table: timestamps, counters and slowly changing floats, plus the check that stops you using Gorilla on integers.</description><pubDate>Thu, 02 Mar 2023 00:00:00 GMT</pubDate><category>Tutorials</category></item><item><title>Asynchronous inserts explained</title><link>https://clickhouse.guru/tutorials/async-inserts-explained/</link><guid isPermaLink="true">https://clickhouse.guru/tutorials/async-inserts-explained/</guid><description>How async_insert batches many small INSERTs on the server, what wait_for_async_insert really trades, and which settings to leave alone.</description><pubDate>Tue, 31 Jan 2023 00:00:00 GMT</pubDate><category>Tutorials</category></item><item><title>Insert batching and the too many parts problem</title><link>https://clickhouse.guru/tutorials/insert-batching-and-too-many-parts/</link><guid isPermaLink="true">https://clickhouse.guru/tutorials/insert-batching-and-too-many-parts/</guid><description>Every INSERT creates a part. Why small frequent inserts hurt, how big a batch should be, and how to see the damage in system.parts.</description><pubDate>Tue, 31 Jan 2023 00:00:00 GMT</pubDate><category>Tutorials</category></item><item><title>Feature requests worth making</title><link>https://clickhouse.guru/philosophy/feature-requests-worth-making/</link><guid isPermaLink="true">https://clickhouse.guru/philosophy/feature-requests-worth-making/</guid><description>A running list of ClickHouse wishes, each checked against 26.4: what exists now, what has a good workaround, and what is still missing.</description><pubDate>Wed, 25 Jan 2023 00:00:00 GMT</pubDate><category>Philosophy</category></item><item><title>Inserting into Distributed tables</title><link>https://clickhouse.guru/tutorials/inserting-into-distributed-tables/</link><guid isPermaLink="true">https://clickhouse.guru/tutorials/inserting-into-distributed-tables/</guid><description>What happens when you INSERT into a Distributed table: the initiator node, background forwarding, synchronous mode, shard selection and what to watch when a shard is down.</description><pubDate>Thu, 22 Dec 2022 00:00:00 GMT</pubDate><category>Tutorials</category></item><item><title>Materialized views in production</title><link>https://clickhouse.guru/tutorials/materialized-views-in-production/</link><guid isPermaLink="true">https://clickhouse.guru/tutorials/materialized-views-in-production/</guid><description>How ClickHouse materialized views really work: the insert-block rule, explicit targets, Summing vs Aggregating engines with -State/-Merge, chained views, JOIN traps, zero-downtime backfill without POPULATE, refreshable views, and when not to use any of it.</description><pubDate>Tue, 20 Dec 2022 00:00:00 GMT</pubDate><category>Tutorials</category></item><item><title>Running SQL scripts in batch with clickhouse-client</title><link>https://clickhouse.guru/tutorials/running-sql-scripts-in-batch/</link><guid isPermaLink="true">https://clickhouse.guru/tutorials/running-sql-scripts-in-batch/</guid><description>Generate a script of statements with SQL itself, then run it unattended with --queries-file, --echo and long timeouts.</description><pubDate>Fri, 09 Dec 2022 00:00:00 GMT</pubDate><category>Tutorials</category></item><item><title>ClickHouse SQL Games</title><link>https://clickhouse.guru/blog/clickhouse-sql-games/</link><guid isPermaLink="true">https://clickhouse.guru/blog/clickhouse-sql-games/</guid><description>Two games written in nothing but ClickHouse SQL: INSERT is the input, SELECT is the screen, materialized views are the game engine. The 2022 talk, and what broke on modern ClickHouse.</description><pubDate>Fri, 21 Oct 2022 00:00:00 GMT</pubDate><category>Blog</category></item><item><title>ORDER BY, PARTITION BY and how queries skip data</title><link>https://clickhouse.guru/tutorials/order-by-partition-by-and-pruning/</link><guid isPermaLink="true">https://clickhouse.guru/tutorials/order-by-partition-by-and-pruning/</guid><description>What the MergeTree sorting key and partition key each do, how to read EXPLAIN to see partition pruning and primary-key pruning, and which filter expressions the pruner understands.</description><pubDate>Tue, 27 Sep 2022 00:00:00 GMT</pubDate><category>Tutorials</category></item><item><title>What ClickHouse UDFs should be able to do</title><link>https://clickhouse.guru/philosophy/what-clickhouse-udfs-should-be-able-to-do/</link><guid isPermaLink="true">https://clickhouse.guru/philosophy/what-clickhouse-udfs-should-be-able-to-do/</guid><description>Any user-defined function is instantly callable by every user, with no GRANT. An argument for scoping UDFs to databases without forcing a database prefix.</description><pubDate>Mon, 05 Sep 2022 00:00:00 GMT</pubDate><category>Philosophy</category></item><item><title>Table functions as a first-class abstraction</title><link>https://clickhouse.guru/philosophy/table-functions-as-a-first-class-abstraction/</link><guid isPermaLink="true">https://clickhouse.guru/philosophy/table-functions-as-a-first-class-abstraction/</guid><description>Parametrised views exist now. The argument still open: a user-defined table function that is not bound to a database, so ClickHouse can hide REST sources and multiplexing behind one call.</description><pubDate>Sun, 04 Sep 2022 00:00:00 GMT</pubDate><category>Philosophy</category></item><item><title>LIMIT could do more</title><link>https://clickhouse.guru/philosophy/limit-could-do-more/</link><guid isPermaLink="true">https://clickhouse.guru/philosophy/limit-could-do-more/</guid><description>Why building a many-JOIN query is painful in SQL, why LIMIT on the first table does not help, and what a developer-friendly LIMIT and a friendlier SELECT could look like.</description><pubDate>Wed, 31 Aug 2022 00:00:00 GMT</pubDate><category>Philosophy</category></item><item><title>Lesser-known ClickHouse functions and features</title><link>https://clickhouse.guru/tutorials/lesser-known-clickhouse-functions-and-features/</link><guid isPermaLink="true">https://clickhouse.guru/tutorials/lesser-known-clickhouse-functions-and-features/</guid><description>A tour of small things that save time: format(), dollar-quoted strings, short-circuit evaluation, throwIf, the functions that change row counts, the .null subcolumn and the running* family.</description><pubDate>Fri, 17 Jun 2022 00:00:00 GMT</pubDate><category>Tutorials</category></item><item><title>Tracking query and resource trends from system tables</title><link>https://clickhouse.guru/tutorials/tracking-query-and-resource-trends/</link><guid isPermaLink="true">https://clickhouse.guru/tutorials/tracking-query-and-resource-trends/</guid><description>Roll system.query_log up into a small per-minute table, then answer trend questions with SQL: this week against last week, new and unused query shapes, and disk growth from system.parts.</description><pubDate>Sat, 11 Jun 2022 00:00:00 GMT</pubDate><category>Tutorials</category></item><item><title>Users, roles and settings profiles</title><link>https://clickhouse.guru/tutorials/users-roles-and-settings-profiles/</link><guid isPermaLink="true">https://clickhouse.guru/tutorials/users-roles-and-settings-profiles/</guid><description>Create users with SQL, give them permissions through roles, and cap their resources with settings profiles and quotas; includes the XML alternative.</description><pubDate>Tue, 07 Jun 2022 00:00:00 GMT</pubDate><category>Tutorials</category></item><item><title>JOINs in ClickHouse: kinds, table order and memory</title><link>https://clickhouse.guru/tutorials/joins-memory-and-algorithms/</link><guid isPermaLink="true">https://clickhouse.guru/tutorials/joins-memory-and-algorithms/</guid><description>The join kinds ClickHouse offers (ANY, SEMI, ANTI included), why the right table matters, and what to do when a JOIN runs out of memory: join algorithms, spilling and rewriting.</description><pubDate>Mon, 06 Jun 2022 00:00:00 GMT</pubDate><category>Tutorials</category></item><item><title>Tiered storage with disks, volumes and storage policies</title><link>https://clickhouse.guru/tutorials/tiered-storage-multiple-volumes/</link><guid isPermaLink="true">https://clickhouse.guru/tutorials/tiered-storage-multiple-volumes/</guid><description>Spread a MergeTree table over several disks: how disks, volumes and policies relate, how to move data with TTL or by hand, and how to add a policy to an existing table.</description><pubDate>Mon, 06 Jun 2022 00:00:00 GMT</pubDate><category>Tutorials</category></item></channel></rss>