@@ -156,6 +156,12 @@ var (
156
156
[]string {"datname" , "schemaname" , "relname" },
157
157
prometheus.Labels {},
158
158
)
159
+ statUserTablesOnlySize = prometheus .NewDesc (
160
+ prometheus .BuildFQName (namespace , userTableSubsystem , "only_size_bytes" ),
161
+ "Total disk space used by only this table, in bytes" ,
162
+ []string {"datname" , "schemaname" , "relname" },
163
+ prometheus.Labels {},
164
+ )
159
165
160
166
statUserTablesQuery = `SELECT
161
167
current_database() datname,
@@ -180,7 +186,8 @@ var (
180
186
autovacuum_count,
181
187
analyze_count,
182
188
autoanalyze_count,
183
- pg_total_relation_size(relid) as total_size
189
+ pg_total_relation_size(relid) as total_size,
190
+ pg_table_size(relid) as table_only_size
184
191
FROM
185
192
pg_stat_user_tables`
186
193
)
@@ -198,10 +205,10 @@ func (c *PGStatUserTablesCollector) Update(ctx context.Context, instance *instan
198
205
for rows .Next () {
199
206
var datname , schemaname , relname sql.NullString
200
207
var seqScan , seqTupRead , idxScan , idxTupFetch , nTupIns , nTupUpd , nTupDel , nTupHotUpd , nLiveTup , nDeadTup ,
201
- nModSinceAnalyze , vacuumCount , autovacuumCount , analyzeCount , autoanalyzeCount , totalSize sql.NullInt64
208
+ nModSinceAnalyze , vacuumCount , autovacuumCount , analyzeCount , autoanalyzeCount , totalSize , tableOnlySize sql.NullInt64
202
209
var lastVacuum , lastAutovacuum , lastAnalyze , lastAutoanalyze sql.NullTime
203
210
204
- if err := rows .Scan (& datname , & schemaname , & relname , & seqScan , & seqTupRead , & idxScan , & idxTupFetch , & nTupIns , & nTupUpd , & nTupDel , & nTupHotUpd , & nLiveTup , & nDeadTup , & nModSinceAnalyze , & lastVacuum , & lastAutovacuum , & lastAnalyze , & lastAutoanalyze , & vacuumCount , & autovacuumCount , & analyzeCount , & autoanalyzeCount , & totalSize ); err != nil {
211
+ if err := rows .Scan (& datname , & schemaname , & relname , & seqScan , & seqTupRead , & idxScan , & idxTupFetch , & nTupIns , & nTupUpd , & nTupDel , & nTupHotUpd , & nLiveTup , & nDeadTup , & nModSinceAnalyze , & lastVacuum , & lastAutovacuum , & lastAnalyze , & lastAutoanalyze , & vacuumCount , & autovacuumCount , & analyzeCount , & autoanalyzeCount , & totalSize , & tableOnlySize ); err != nil {
205
212
return err
206
213
}
207
214
@@ -437,6 +444,17 @@ func (c *PGStatUserTablesCollector) Update(ctx context.Context, instance *instan
437
444
totalSizeMetric ,
438
445
datnameLabel , schemanameLabel , relnameLabel ,
439
446
)
447
+
448
+ tableOnlySizeMetric := 0.0
449
+ if tableOnlySize .Valid {
450
+ tableOnlySizeMetric = float64 (tableOnlySize .Int64 )
451
+ }
452
+ ch <- prometheus .MustNewConstMetric (
453
+ statUserTablesOnlySize ,
454
+ prometheus .GaugeValue ,
455
+ tableOnlySizeMetric ,
456
+ datnameLabel , schemanameLabel , relnameLabel ,
457
+ )
440
458
}
441
459
442
460
if err := rows .Err (); err != nil {
0 commit comments