You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
COALESCE(SUM(CASE WHEN SQL_TEXT LIKE '%START TRANSACTION WITH CONSISTENT SNAPSHOT%' THEN 1 ELSE 0 END), 0)
118
119
+ COALESCE(SUM(CASE WHEN SQL_TEXT LIKE '%FLUSH TABLES%WITH READ LOCK%' THEN 1 ELSE 0 END), 0)
119
-
+ COALESCE(SUM(CASE WHEN SQL_TEXT LIKE '%LOCK TABLES%' THEN 1 ELSE 0 END), 0) AS total_backup_history,
120
-
SUM(CASE WHEN SQL_TEXT LIKE '%START TRANSACTION WITH CONSISTENT SNAPSHOT%' THEN 1 ELSE 0 END) AS logical_backup_count,
121
-
AVG(CASE WHEN SQL_TEXT LIKE '%START TRANSACTION WITH CONSISTENT SNAPSHOT%' THEN TIMER_WAIT/1000000000000 ELSE NULL END) AS logical_backup_avg_duration,
122
-
MAX(CASE WHEN SQL_TEXT LIKE '%START TRANSACTION WITH CONSISTENT SNAPSHOT%' THEN TIMER_WAIT/1000000000000 ELSE NULL END) AS logical_backup_max_duration,
123
-
SUM(CASE WHEN SQL_TEXT LIKE '%FLUSH TABLES%WITH READ LOCK%' THEN 1 ELSE 0 END) AS physical_backup_count,
124
-
AVG(CASE WHEN SQL_TEXT LIKE '%FLUSH TABLES%WITH READ LOCK%' THEN TIMER_WAIT/1000000000000 ELSE NULL END) AS physical_backup_avg_duration,
125
-
MAX(CASE WHEN SQL_TEXT LIKE '%FLUSH TABLES%WITH READ LOCK%' THEN TIMER_WAIT/1000000000000 ELSE NULL END) AS physical_backup_max_duration,
126
-
SUM(CASE WHEN SQL_TEXT LIKE '%LOCK TABLES%' THEN 1 ELSE 0 END) AS table_lock_count,
127
-
AVG(CASE WHEN SQL_TEXT LIKE '%LOCK TABLES%' THEN TIMER_WAIT/1000000000000 ELSE NULL END) AS table_lock_avg_duration,
128
-
MAX(CASE WHEN SQL_TEXT LIKE '%LOCK TABLES%' THEN TIMER_WAIT/1000000000000 ELSE NULL END) AS table_lock_max_duration
120
+
+ COALESCE(SUM(CASE WHEN SQL_TEXT LIKE 'LOCK TABLES%' THEN 1 ELSE 0 END), 0) AS total_backup_history,
121
+
COALESCE(SUM(CASE WHEN SQL_TEXT LIKE '%START TRANSACTION WITH CONSISTENT SNAPSHOT%' THEN 1 ELSE 0 END), 0) AS logical_backup_count,
122
+
COALESCE(AVG(CASE WHEN SQL_TEXT LIKE '%START TRANSACTION WITH CONSISTENT SNAPSHOT%' THEN TIMER_WAIT/1000000000000 ELSE NULL END), 0) AS logical_backup_avg_duration,
123
+
COALESCE(MAX(CASE WHEN SQL_TEXT LIKE '%START TRANSACTION WITH CONSISTENT SNAPSHOT%' THEN TIMER_WAIT/1000000000000 ELSE NULL END), 0) AS logical_backup_max_duration,
124
+
COALESCE(SUM(CASE WHEN SQL_TEXT LIKE '%FLUSH TABLES%WITH READ LOCK%' THEN 1 ELSE 0 END), 0) AS physical_backup_count,
125
+
COALESCE(AVG(CASE WHEN SQL_TEXT LIKE '%FLUSH TABLES%WITH READ LOCK%' THEN TIMER_WAIT/1000000000000 ELSE NULL END), 0) AS physical_backup_avg_duration,
126
+
COALESCE(MAX(CASE WHEN SQL_TEXT LIKE '%FLUSH TABLES%WITH READ LOCK%' THEN TIMER_WAIT/1000000000000 ELSE NULL END), 0) AS physical_backup_max_duration,
127
+
COALESCE(SUM(CASE WHEN SQL_TEXT LIKE 'LOCK TABLES%' THEN 1 ELSE 0 END), 0) AS table_lock_count,
128
+
COALESCE(AVG(CASE WHEN SQL_TEXT LIKE 'LOCK TABLES%' THEN TIMER_WAIT/1000000000000 ELSE NULL END), 0) AS table_lock_avg_duration,
129
+
COALESCE(MAX(CASE WHEN SQL_TEXT LIKE 'LOCK TABLES%' THEN TIMER_WAIT/1000000000000 ELSE NULL END), 0) AS table_lock_max_duration
129
130
FROM performance_schema.events_statements_history
130
-
WHERE (SQL_TEXT LIKE '%LOCK TABLES%'
131
+
WHERE (SQL_TEXT LIKE 'LOCK TABLES%'
131
132
OR SQL_TEXT LIKE '%FLUSH TABLES%WITH READ LOCK%'
132
133
OR SQL_TEXT LIKE '%START TRANSACTION WITH CONSISTENT SNAPSHOT%')
133
134
`
@@ -145,18 +146,16 @@ SELECT
145
146
COALESCE(p.table_lock_active, 0) + COALESCE(t.logical_backup_active, 0) AS total_backup_active,
146
147
COALESCE(t.logical_backup_active, 0) AS logical_backup_active,
147
148
0 AS physical_backup_active,
148
-
COALESCE(p.table_lock_active, 0) AS table_lock_active,
149
-
0 AS other_backup_active
149
+
COALESCE(p.table_lock_active, 0) AS table_lock_active
assert.Contains(t, backupMetricsQuery, "logical_backup_active", "Query should count logical backups")
39
38
assert.Contains(t, backupMetricsQuery, "physical_backup_active", "Query should count physical backups")
40
39
assert.Contains(t, backupMetricsQuery, "table_lock_active", "Query should count table locks")
41
-
assert.Contains(t, backupMetricsQuery, "other_backup_active", "Query should count other backups")
42
40
assert.Contains(t, backupMetricsQuery, "performance_schema.metadata_locks", "Query should use metadata_locks for detection")
43
41
assert.Contains(t, backupMetricsQuery, "information_schema.innodb_trx", "Query should detect logical backups")
44
42
assert.Contains(t, backupMetricsQuery, "BACKUP_FTWRL%", "Query should detect physical backups via FTWRL backup lock")
45
43
assert.Contains(t, backupMetricsQuery, "LOCK_TYPE", "Query should detect table locks")
44
+
assert.Contains(t, backupMetricsQuery, "LOCK_DURATION IN ('EXPLICIT', 'TRANSACTION')", "Query should cover both MySQL (EXPLICIT) and MariaDB (TRANSACTION) LOCK TABLES behaviour")
46
45
assert.Contains(t, backupMetricsQuery, "OWNER_THREAD_ID", "Query should identify backup sessions by thread ID")
0 commit comments