From 56623f96358e3a1c78be7ec9fc80f945c4a4050c Mon Sep 17 00:00:00 2001 From: Alexander Zavorotynskiy Date: Wed, 15 Jun 2022 13:20:37 +0200 Subject: [PATCH] feat(backend/db): added batch updates in web-stats methods --- backend/pkg/db/postgres/messages-web-stats.go | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/backend/pkg/db/postgres/messages-web-stats.go b/backend/pkg/db/postgres/messages-web-stats.go index 27a6272e2..5f0b11e87 100644 --- a/backend/pkg/db/postgres/messages-web-stats.go +++ b/backend/pkg/db/postgres/messages-web-stats.go @@ -12,7 +12,8 @@ func (conn *Conn) InsertWebStatsLongtask(sessionID uint64, l *LongTask) error { func (conn *Conn) InsertWebStatsPerformance(sessionID uint64, p *PerformanceTrackAggr) error { timestamp := (p.TimestampEnd + p.TimestampStart) / 2 - return conn.batchQueue(sessionID, ` + + sqlRequest := ` INSERT INTO events.performance ( session_id, timestamp, message_id, min_fps, avg_fps, max_fps, @@ -25,13 +26,18 @@ func (conn *Conn) InsertWebStatsPerformance(sessionID uint64, p *PerformanceTrac $7, $8, $9, $10, $11, $12, $13, $14, $15 - )`, + )` + conn.batchQueue(sessionID, sqlRequest, sessionID, timestamp, timestamp, // ??? TODO: primary key by timestamp+session_id p.MinFPS, p.AvgFPS, p.MaxFPS, p.MinCPU, p.AvgCPU, p.MinCPU, p.MinTotalJSHeapSize, p.AvgTotalJSHeapSize, p.MaxTotalJSHeapSize, p.MinUsedJSHeapSize, p.AvgUsedJSHeapSize, p.MaxUsedJSHeapSize, ) + + // Record approximate message size + conn.updateBatchSize(sessionID, len(sqlRequest)+8*15) + return nil } func (conn *Conn) InsertWebStatsResourceEvent(sessionID uint64, e *ResourceEvent) error { @@ -39,7 +45,8 @@ func (conn *Conn) InsertWebStatsResourceEvent(sessionID uint64, e *ResourceEvent if err != nil { return err } - return conn.batchQueue(sessionID, ` + + sqlRequest := ` INSERT INTO events.resources ( session_id, timestamp, message_id, type, @@ -54,12 +61,19 @@ func (conn *Conn) InsertWebStatsResourceEvent(sessionID uint64, e *ResourceEvent $8, $9, NULLIF($10, '')::events.resource_method, NULLIF($11, 0), NULLIF($12, 0), NULLIF($13, 0), NULLIF($14, 0), NULLIF($15, 0) - )`, + )` + urlQuery := url.DiscardURLQuery(e.URL) + urlMethod := url.EnsureMethod(e.Method) + conn.batchQueue(sessionID, sqlRequest, sessionID, e.Timestamp, e.MessageID, e.Type, - e.URL, host, url.DiscardURLQuery(e.URL), + e.URL, host, urlQuery, e.Success, e.Status, - url.EnsureMethod(e.Method), + urlMethod, e.Duration, e.TTFB, e.HeaderSize, e.EncodedBodySize, e.DecodedBodySize, ) + + // Record approximate message size + conn.updateBatchSize(sessionID, len(sqlRequest)+len(e.Type)+len(e.URL)+len(host)+len(urlQuery)+len(urlMethod)+8*9+1) + return nil }