Skip to content
Back to skills

Managing Questdb

ASecurity

Use when working with Questdb — questDB time-series database management — monitor tables, partitions, ingestion throughput, query performance, and server health. Use when inspecting table schemas, debugging slow queries, reviewing WAL status, or auditing storage utilization.

  • 6 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added September 8, 2026
databasesbashdebuggingapidatabasesecurityperformancedocumentation

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 8, 2026

npx -y skills add cloudthinker-ai/CloudSkills --skill managing-questdb --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Managing Questdb?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Managing Questdb
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/cloudthinker-ai-managing-questdb/badge)](https://www.skillsdirectory.com/skills/cloudthinker-ai-managing-questdb)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: managing-questdb
description: |
  Use when working with Questdb — questDB time-series database management —
  monitor tables, partitions, ingestion throughput, query performance, and
  server health. Use when inspecting table schemas, debugging slow queries,
  reviewing WAL status, or auditing storage utilization.
connection_type: questdb
preload: false
---

# Managing QuestDB

Manage and monitor QuestDB time-series database — tables, partitions, ingestion, queries, and server health.

## Discovery Phase

```bash
#!/bin/bash

QUESTDB_API="${QUESTDB_URL:-http://localhost:9000}"

qdb_query() {
    curl -s -G "$QUESTDB_API/exec" --data-urlencode "query=$1" | jq -r '.dataset[] | @tsv'
}

echo "=== Server Status ==="
curl -s "$QUESTDB_API/status" | jq '.' 2>/dev/null || echo "Status endpoint not available"

echo ""
echo "=== Tables ==="
qdb_query "SELECT name, partitionBy, maxUncommittedRows, walEnabled, directoryName
           FROM tables()
           ORDER BY name
           LIMIT 20;" | column -t

echo ""
echo "=== Table Sizes ==="
qdb_query "SELECT table_name, row_count, disk_size
           FROM table_storage()
           ORDER BY disk_size DESC
           LIMIT 15;" | column -t

echo ""
echo "=== Table Columns (sample) ==="
qdb_query "SELECT table_name, column_name, column_type, indexed, indexValueBlockCapacity
           FROM table_columns('${QUESTDB_TABLE:-trades}')
           LIMIT 20;" | column -t
```

## Analysis Phase

```bash
#!/bin/bash

QUESTDB_API="${QUESTDB_URL:-http://localhost:9000}"

qdb_query() {
    curl -s -G "$QUESTDB_API/exec" --data-urlencode "query=$1" | jq -r '.dataset[] | @tsv'
}

qdb_meta() {
    curl -s -G "$QUESTDB_API/exec" --data-urlencode "query=$1" | jq '.'
}

echo "=== Partition Info ==="
qdb_query "SELECT * FROM table_partitions('${QUESTDB_TABLE:-trades}')
           ORDER BY index DESC
           LIMIT 10;" | column -t

echo ""
echo "=== WAL Status ==="
qdb_query "SELECT * FROM wal_tables()
           LIMIT 10;" | column -t

echo ""
echo "=== Query Performance (sample) ==="
RESULT=$(qdb_meta "SELECT count() FROM ${QUESTDB_TABLE:-trades}")
echo "$RESULT" | jq '{count: .dataset[0][0], timing: .timings}'

echo ""
echo "=== Recent Data Check ==="
qdb_query "SELECT min(timestamp), max(timestamp), count()
           FROM ${QUESTDB_TABLE:-trades}
           WHERE timestamp > dateadd('d', -1, now());" | column -t

echo ""
echo "=== Active Writers ==="
qdb_query "SELECT * FROM writer_pool()
           LIMIT 10;" | column -t

echo ""
echo "=== Memory Usage ==="
curl -s "$QUESTDB_API/exec" --data-urlencode "query=SELECT * FROM memory()" \
  | jq -r '.dataset[] | @tsv' | column -t

echo ""
echo "=== Detached Partitions ==="
qdb_query "SELECT table_name, partition_name, reason
           FROM detached_partitions()
           LIMIT 10;" | column -t
```

## Output Format

```
TABLES
Name             Partition By   WAL Enabled   Max Uncommitted
<table-name>     DAY            true          <n>

TABLE SIZES
Table            Rows           Disk Size
<table-name>     <n>            <bytes>

PARTITIONS
Index    Name         Row Count    Size
<n>      <partition>  <n>          <bytes>

WAL STATUS
Table            Seq Txn    Writer Txn   Segment Count
<table-name>     <n>        <n>          <n>

DATA FRESHNESS
Min Timestamp     Max Timestamp     Count (24h)
<timestamp>       <timestamp>       <n>
```

## Anti-Hallucination Rules

1. **NEVER assume resource names** — always discover via CLI/API in Phase 1 before referencing in Phase 2.
2. **NEVER fabricate metric names or dimensions** — verify against the service documentation or `--help` output.
3. **NEVER mix CLI commands between service versions** — confirm which version/API you are targeting.
4. **ALWAYS use the discovery → verify → analyze chain** — every resource referenced must have been discovered first.
5. **ALWAYS handle empty results gracefully** — an empty response is valid data, not an error to retry.

## Counter-Rationalizations

| Shortcut | Counter | Why |
|----------|---------|-----|
| "I'll skip discovery and check known resources" | Always run Phase 1 discovery first | Resource names change, new resources appear — assumed names cause errors |
| "The user only asked for a quick check" | Follow the full discovery → analysis flow | Quick checks miss critical issues; structured analysis catches silent failures |
| "Default configuration is probably fine" | Audit configuration explicitly | Defaults often leave logging, security, and optimization features disabled |
| "Metrics aren't needed for this" | Always check relevant metrics when available | API/CLI responses show current state; metrics reveal trends and intermittent issues |
| "I don't have access to that" | Try the command and report the actual error | Assumed permission failures prevent useful investigation; actual errors are informative |

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in databases →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.