dennis zhuang
06/16/2026, 8:17 AMsilverfox23
06/23/2026, 7:43 PMFROM source_database.*) that would automatically downsample all tables in a database? If not, is this feature planned or on the roadmap?kevin
06/28/2026, 3:52 AMCREATE OR REPLACE FLOW , CREATE or ALTER DATABASE etc.?nimi
07/01/2026, 5:17 AMCREATE TABLE IF NOT EXISTS "uptime" (
"nvr_id" STRING NULL INVERTED INDEX,
"value" BIGINT NULL,
"greptime_timestamp" TIMESTAMP(9) NOT NULL,
TIME INDEX ("greptime_timestamp"),
PRIMARY KEY ("nvr_id")
)
And I want to run this query:
SELECT DISTINCT nvr_id FROM lrm_nvr.uptime;
This query takes ~16s to run (~99,194,924 rows). Is there a way to make this query faster? Or is there another query I can make?Quentin Smith
07/07/2026, 2:30 AMSELECT * FROM observation WHERE greptime_timestamp = (SELECT greptime_timestamp FROM observation ORDER BY greptime_timestamp DESC LIMIT 1);
but it appears to be doing a full table scan and takes many seconds. I'll attach an explain analyze verbose in a thread.David Reagan
07/07/2026, 3:34 PMQuentin Smith
07/14/2026, 3:46 AMdennis zhuang
07/14/2026, 7:36 AMkevin
07/20/2026, 4:05 AMFloris Smit
07/21/2026, 8:43 AMkevin
07/30/2026, 10:32 PMrishabh parashar
08/14/2026, 6:15 PMrishabh parashar
08/14/2026, 6:16 PMrishabh parashar
08/14/2026, 6:17 PMPhilip Schwartz
08/27/2026, 2:13 AMPhilip Schwartz
09/02/2026, 5:47 PMgreptime_physical_table all querying of data from the logical tables returned errors about invalid regions.webc
09/04/2026, 11:19 AMwebc
09/04/2026, 11:21 AMaitor
09/10/2026, 1:54 PMaitor
09/10/2026, 1:54 PMaitor
09/10/2026, 1:54 PMaitor
09/10/2026, 1:54 PMcredit.qe
09/11/2026, 2:54 PMJun Zhou
10/01/2026, 12:31 PMCREATE TABLE IF NOT EXISTS "greptime_physical_table" (
"greptime_timestamp" TIMESTAMP(3) NOT NULL,
"greptime_value" DOUBLE NULL,
"address" STRING NULL,
"hostname" STRING NULL,
"instance" STRING NULL,
"job" STRING NULL,
-- Additional label columns omitted
TIME INDEX ("greptime_timestamp"),
PRIMARY KEY (
"address", "hostname", "instance", "job"
-- Additional label columns omitted
)
)
ENGINE=metric
WITH (
'comment' = 'Created on insertion',
physical_metric_table = 'true'
);
There is no explicit partition clause or TTL in the generated table DDL.
Although we have three datanodes, this table has only one data region, located on datanode-0:
TypeRegion IDPlacementData region19774029430784datanode-0Internal metric metadata region19774046208000datanode-0COUNT(*) performance
We tested:
SELECT COUNT(*) FROM prometheus.greptime_physical_table;
It returned approximately 18.2 million rows in more than 16 seconds.
With ingestion continuing, a subsequent EXPLAIN ANALYZE showed:
MergeScanExec:
peers=[19774029430784(4604, 0)]
output_rows: 1
finish_time: 17.8s
ready_time: 8.1ms
AggregateExec: mode=Final
elapsed_compute: 50us
AggregateExec: mode=Partial
output_rows: 32
elapsed_compute: 3.9ms
SeqScan:
partition_count: {
count: 1,
mem_ranges: 12,
files: 10,
file_ranges: 10
}
output_rows: 24464122
output_bytes: 186.6MiB
elapsed_poll: 17.6s
scan_cost: 17.8s
The aggregation is inexpensive; most time is spent scanning on the datanode.
For additional context, a later region-statistics snapshot showed 28,485,421 rows, 4 SST files, approximately 48.2 MiB of SST data, and 411.5 MiB of memtable data. These snapshots were taken at different times while ingestion continued.
Our questions
1. Is this exact-count performance expected for a metric-engine table? Does it require scanning and merging rows rather than using SST metadata?
2. For our three-datanode cluster, should we pre-create a partitioned physical table instead of relying on automatic creation? What initial DDL and partitioning strategy would you recommend?
3. How can a first-time user choose a reasonable partition design before collecting detailed workload statistics? Can the table be repartitioned or its regions split later?
4. Based on this example, what should we optimize first to improve query performance and make better use of the available CPU, memory, SSDs, and multiple datanodes?
We understand that full-table COUNT(*) is not representative of every Prometheus query; we are using this example to understand the execution model and how to design the tables correctly from the start.Jun Zhou
10/05/2026, 8:50 AMSELECT *
FROM information_schema.partitions
WHERE table_schema = 'prometheus_risingwave'
AND table_name = 'greptime_physical_table'
ORDER BY partition_ordinal_position;
For profiling we prepend EXPLAIN ANALYZE VERBOSE to this exact SQL.
Observed timeline (different measurements, not a controlled benchmark)
โข Original user-observed latency: over 14 seconds. Historical plan: RepartitionExec.fetch_time=13.4s, sort compute 12us, filter compute 154us, 15 output rows.
โข 2026-10-03 12:32 UTC historical re-test: the same EXPLAIN query reported fetch_time=7.67s and 15 rows.
โข Fresh collection 2026-10-05 08:37 UTC, via Grafana datasource HTTP proxy: original SELECT returned 15 rows in 4.739s client wall time.
โข A separate EXPLAIN execution immediately afterward took 2.566s client wall time, with 2.45s fetch_time, SortExec 11us and FilterExec 71us. Full current plan attached in latest-plan.txt.
Client wall time includes Grafana/proxy/network overhead; fetch_time is an execution-plan metric. They must not be equated. These were sequential single executions without cache reset, while normal ingestion continued; background activity was not controlled. We are NOT claiming a constant 14-second latency or a measured p95.
The latest plan still shows:
FilterExec: table_schema = prometheus_risingwave AND table_name = greptime_physical_table
RepartitionExec: ... fetch_time: 2.45s
StreamScanAdapter
Filter output is 15 rows; the plan reports 847.7KiB output_bytes at FilterExec/RepartitionExec. We do not interpret that byte counter as exact catalog input volume or infer a root cause from it alone.
Environment
โข Current SELECT version() reverified: 1.3.0-beta.1.
โข Previously verified binary commit: 133296f298c504b920772292c22f169cd46c54c9 (not freshly read from every Pod in this collection).
โข Latest partition readback: 15 RANGE partitions on namespace, p0โp14, region IDs 4823248273408โ4823248273422.
โข Fresh table inventory in the two metric schemas: prometheus has 78 metric-engine tables, 13 mito tables and 3 entries with blank engine; prometheus_risingwave has 1707 metric-engine tables. Metric counts include physical tables, not only logical tables. This is not an all-catalog table count. The table-count query itself took 13.116s client wall time, a separate observation without a plan.
โข Last Kubernetes inventory (2026-10-03, NOT refreshed today): 3 frontend (2 CPU/8Gi each), 3 metasrv (2 CPU/4Gi), 8 datanode (8 CPU/16Gi), 3 flownode (4 CPU/8Gi); requests=limits. Four Kubernetes hosts, shared S3-compatible storage, local WAL/cache.
Question
Why does a metadata query filtered to a single table and returning only 15 partition rows still take more than 2 seconds in GreptimeDB? We would expect this basic single-table metadata lookup to be much faster. Could you help explain the observed latency?Quentin Smith
10/08/2026, 5:09 AMDROP TABLE do when called on a logical table? Does it just remove the logical table pointer or does it also delete all the matching rows from the corresponding physical table?Jun Zhou
10/08/2026, 7:05 AMappId. We're planning to use an external table for this. Do you have any good solutions or suggestions? Thanks in advance.
docs.greptime.com/reference/sql/create#โฆ
Json content
{
"_index": "xlog-sd-2026-07",
"_type": "_doc",
"_id": "ZYDmuJ8B1n1_pofbyNyl",
"_score": 1,
"_source": {
"@timestamp": "2026-07-31T15:59:20.089Z",
"kafkaTopic": "it-business-log-filebeat",
"appId": "58311ae4a190491ca564bc3d",
"xlog": {
"level": "DEBUG",
"branchType": "",
"zipkinParentId": "e5252737946dafa6",
"message": "่กจ่พพๅผ๏ผpriceListType ns '',ๅๆฐ๏ผ{\"prodModelPrefix\":\"0#NotMatchRuleField\",\"functionDescVal\":\"0#NotMatchRuleField\",\"itemCode\":\"SU-070101-00007\",\"mainSaleModelVal\":\"0#NotMatchRuleField\",\"marketProdModelVal\":\"0#ST33-M\",\"priority\":\"7\",\"matchRuleField\":\"MARKET_PROD_MODEL\",\"prodModel\":\"ST33-M\",\"eori\":\"I\",\"priceListType\":4,\"itemCodeVal\":\"0#NotMatchRuleField\",\"prodModelVal\":\"0#NotMatchRuleField\",\"dealerType\":\"\",\"saleModelVal\":\"0#NotMatchRuleField\",\"currency\":\"CNY\",\"priceListIds\":\"06957fb9213544728bfeada94b47c8b2,143be18efdd640c2913f47f0946f95c9,9e3c4a81a52c4c149511a34f46e8d8c8,beb97f2712124517b829501fbc031cab,c32d214bde82493b886414ed4e2a2b43,e54b464191a34bdf8aec21ac8e8ae136\"},ๆง่ก็ปๆ๏ผtrue",
"id": "6f7312e31d5647ae96ab678c539556ed",
"auditLog": null,
"optUser": "่ฅ้ๅฎขๆ",
"zipkinTraceId": "e5252737946dafa6",
"ccloudTransactionId": "2901a901905c763f",
"domain": null,
"optTime": "2026-07-31T23:59:11.570",
"branchId": null,
"zipkinSpanId": "e5252737946dafa6",
"billIds": [
""
],
"txId": "",
"esIndex": "xlog-sd-2026-07",
"typeName": "ไธๅกๆฅๅฟ",
"application": "cwp",
"ccloudTraceId": "795623963275fe6b20e560bec1edc30e",
"type": "BUSINESS",
"apiLog": null,
"env": "PROD",
"prodLine": "SD",
"stackTrace": null
},
"podName": "app-58311ae4a190491ca564bc3d-15-7d95cb5b86-p2rsf",
"@version": "1"
}
}dennis zhuang
10/16/2026, 7:18 PMAmbika Devarayasamudram
10/20/2026, 3:00 PMgreptime/greptimedb:v1.2.1 and greptime/greptimedb-operator:v0.6.1).
Our registry vulnerability scanners caught several CRITICAL and HIGH CVEs. The current release images surface several critical findings entirely located within base OS packages (curl, libcurl4, perl, openssl). Are any of these specific base OS utilities (curl or perl) actively executed or relied upon at runtime by the database or operator binaries?
Do you have plans to publish hardened release tags alongside your standard releases to eliminate base OS vulnerabilities automatically?Ning
10/29/2026, 2:39 PM