[{"data":1,"prerenderedAt":270},["ShallowReactive",2],{"\u002Fdatabases\u002Fclickhouse":3},{"id":4,"title":5,"body":6,"description":242,"extension":243,"faq":244,"headline":260,"lastUpdated":261,"meta":262,"navigation":263,"path":264,"seo":265,"stem":268,"__hash__":269},"databases\u002F4.databases\u002F6.clickhouse.md","A Native ClickHouse Client for Mac That Knows What a Query Will Read",{"type":7,"value":8,"toc":237},"minimark",[9,13,41,229,234],[10,11,12],"p",{},"TableStudio is a native Mac client for ClickHouse. It tells you what a query will cost before it runs. It catches the sorting-key, partition and type choices that slow ClickHouse down, runs ClickHouse on your Mac, and lets coding agents like Claude Code, Codex and Cursor in under rules TableStudio enforces itself.",[14,15,18,26],"lead-feature",{"icon":16,"title":17},"i-ph-magnifying-glass","Know what a query will read before it runs",[10,19,20,21,25],{},"On ClickHouse, \"it's only a SELECT\" says very little. A careless query can scan billions of rows. Before a query runs, TableStudio asks ClickHouse's own ",[22,23,24],"code",{},"EXPLAIN ESTIMATE"," how many rows and parts it would read. Browsing a wide table only reads the columns on screen.",[10,27,28,32,33,36,37,40],{},[29,30,31],"strong",{},"Query Insights"," reads ",[22,34,35],{},"system.query_log"," for the statements ClickHouse spends its time on. Where a skip index would help, TableStudio proves it with ",[22,38,39],{},"EXPLAIN WHATIF"," before you add it.",[42,43,46,70,99,124,145,166,202,217],"feature-cards",{"description":44,"title":45},"Built for a column store, not bolted onto a row-store client.","What TableStudio does for ClickHouse",[47,48,51],"feature-card",{"icon":49,"title":50},"i-ph-shield-check","Agents on a column store",[52,53,54,58,61,64,67],"ul",{},[55,56,57],"li",{},"Agent reads are read-only on the server, with a 30-second limit.",[55,59,60],{},"An agent's change to a production cluster waits in your review queue for Touch ID.",[55,62,63],{},"Rows are saved before an agent changes them, so the change can be undone.",[55,65,66],{},"Take a restore point, a snapshot over HTTP, before anything risky.",[55,68,69],{},"A restore point is one tool call away, so the agent can snapshot a table before it changes it.",[47,71,74],{"icon":72,"title":73},"i-ph-gauge","Query rules for ClickHouse",[52,75,76,83,90,93,96],{},[55,77,78,79,82],{},"Filters that use neither the ",[22,80,81],{},"ORDER BY"," key nor a skip index.",[55,84,85,86,89],{},"A ",[22,87,88],{},"WHERE"," that still reads most of the table's granules.",[55,91,92],{},"Reads from Replacing or Collapsing tables that can return duplicate or uncollapsed rows.",[55,94,95],{},"Substring searches that scan a whole table, and JSON parsed on every run.",[55,97,98],{},"Exact distinct counts with a large memory peak, and async inserts that can lose rows.",[47,100,103],{"icon":101,"title":102},"i-ph-tree-structure","Table design checks",[52,104,105,108,111,117],{},[55,106,107],{},"Tables with no sorting key, or one led by a near-unique column.",[55,109,110],{},"Partitions too fine, or too big to finish deduplicating.",[55,112,113,116],{},[22,114,115],{},"Nullable"," columns that cost a hidden extra column.",[55,118,119,120,123],{},"String columns that should be ",[22,121,122],{},"LowCardinality",".",[47,125,128],{"icon":126,"title":127},"i-ph-heartbeat","Cluster health",[52,129,130,133,136,139,142],{},[55,131,132],{},"Mutations running for hours, and merges that keep failing.",[55,134,135],{},"Replication queues that are stuck, and replicas offline.",[55,137,138],{},"Distributed inserts that aren't reaching their shards.",[55,140,141],{},"Dictionaries that fail to load, failing refreshable views, and Kafka consumer errors.",[55,143,144],{},"The mark cache hit ratio.",[47,146,149],{"icon":147,"title":148},"i-ph-table","Browse and edit",[52,150,151,154,160,163],{},[55,152,153],{},"Wide tables stay fast: browsing reads only the visible columns.",[55,155,156,159],{},[22,157,158],{},"Enum"," columns get a dropdown of their values.",[55,161,162],{},"Edits warn that ClickHouse runs them as background mutations on a shared key.",[55,164,165],{},"Export to CSV, TSV, JSON, SQL, Markdown or Excel.",[47,167,170],{"icon":168,"title":169},"i-ph-code","SQL",[52,171,172,192,195],{},[55,173,174,175,177,178,177,181,184,185,188,189,191],{},"A column editor that offers ",[22,176,122],{},", ",[22,179,180],{},"DateTime64",[22,182,183],{},"Map"," and ",[22,186,187],{},"Tuple",", and keeps ",[22,190,115],{}," out of the default.",[55,193,194],{},"AI that writes ClickHouse SQL and fixes failing queries.",[55,196,197,198,201],{},"Plans drawn as a tree, and ",[22,199,200],{},"clickhouse client"," in Terminal with one command.",[47,203,206],{"icon":204,"title":205},"i-ph-hard-drives","ClickHouse on your Mac",[52,207,208,211,214],{},[55,209,210],{},"Create, start and stop local ClickHouse servers, and pick up the ones already running.",[55,212,213],{},"Throwaway sandbox copies of a database, with real rows or none.",[55,215,216],{},"Share a local server through a Cloudflare Tunnel.",[47,218,221],{"icon":219,"title":220},"i-ph-squares-four","Dashboard",[52,222,223,226],{},[55,224,225],{},"ClickHouse's own widget packs for health, storage and compression.",[55,227,228],{},"Your own widgets in SQL, from a count to a chart.",[230,231,233],"h2",{"id":232},"connecting-to-clickhouse-cloud","Connecting to ClickHouse Cloud",[10,235,236],{},"Copy the HTTPS endpoint and password from your ClickHouse Cloud service and add a ClickHouse connection with them. TableStudio uses the HTTP interface, the same one ClickHouse Cloud exposes, so there's no native-protocol port to open. Self-hosted servers work the same way, directly or over an SSH tunnel.",{"title":238,"searchDepth":239,"depth":239,"links":240},"",2,[241],{"id":232,"depth":239,"text":233},"Browse and query ClickHouse and ClickHouse Cloud in a native Mac app, see what a query will read before it runs, catch sorting-key and partition mistakes, and let your coding agent in without a free hand.","md",[245,248,251,254,257],{"label":246,"content":247},"Does TableStudio work with ClickHouse Cloud?","Yes. TableStudio talks to ClickHouse over its HTTP interface, so it connects to ClickHouse Cloud on its HTTPS port and to self-hosted servers, directly or over an SSH tunnel.",{"label":249,"content":250},"Can my coding agent run expensive queries on ClickHouse?","Agent reads run read-only with a 30-second limit, and TableStudio can estimate how many rows a query would read before it runs. Changes to production are staged for your review, where you apply them with Touch ID.",{"label":252,"content":253},"How are edits handled, since ClickHouse has no unique primary key?","ClickHouse runs UPDATE and DELETE as background mutations matched on its sorting key, which several rows can share. TableStudio warns you about that wherever you edit a row, and saves the rows first so an AI change can be undone.",{"label":255,"content":256},"Why does TableStudio flag my ReplacingMergeTree results?","Replacing, Collapsing and Aggregating tables only combine rows once they land in the same part, so a plain SELECT can return duplicates or uncollapsed rows. Query Insights points out the queries that can, and what to change.",{"label":258,"content":259},"Can I back up ClickHouse with TableStudio?","You can take a restore point of a ClickHouse database before a risky change and roll back to it. Full backups from the Backup window aren't available for ClickHouse yet.","ClickHouse","2026-10-29",{},true,"\u002Fdatabases\u002Fclickhouse",{"title":266,"description":267},"ClickHouse GUI Client for Mac with a Safe MCP Server","TableStudio is a native Mac ClickHouse GUI for ClickHouse and ClickHouse Cloud. Row estimates before queries run, sorting-key and partition checks, skip-index advice, local servers and a safe MCP server.","4.databases\u002F6.clickhouse","BT1HXdXghYJI1wT2wD30KiZ-te9ZnTp-IZZvrnFbTN8",1793299920587]