SQL - PorcessList

This commit is contained in:
Sven Riwoldt
2026-07-30 10:46:45 +02:00
parent 9eeea3eed1
commit 755297cad7
+125
View File
@@ -704,3 +704,128 @@ INSERT INTO isys_catg_sid_stid_list(custom_fields__data__id,isys_catg_sid_stid_l
)ref1 offset 247 rows fetch
next 100 rows only;
########################################################################################################################
# Kurze SQL-Queries in MariaDB erfassen
`SHOW PROCESSLIST` eignet sich **nicht**, um sehr kurze SQL-Statements zu erfassen. Diese sind häufig bereits beendet, bevor sie in der Prozessliste erscheinen.
## Aktuelle Konfiguration prüfen
### General Log
Prüfen, ob das General Log aktiviert ist:
```sql
SHOW VARIABLES LIKE 'general_log';
SHOW VARIABLES LIKE 'log_output';
```
Oder beide Werte gemeinsam anzeigen:
```sql
SHOW VARIABLES
WHERE Variable_name IN ('general_log', 'log_output');
```
Beispiel:
| Variable_name | Value |
|----------------|-------|
| general_log | ON |
| log_output | TABLE |
---
### Performance Schema
Prüfen, ob das Performance Schema aktiviert ist:
```sql
SHOW VARIABLES LIKE 'performance_schema';
```
Zusätzlich prüfen, ob die Statement-Historie verfügbar ist:
```sql
SHOW TABLES FROM performance_schema LIKE 'events_statements%';
```
oder:
```sql
SELECT COUNT(*)
FROM performance_schema.events_statements_history;
```
---
## General Log aktivieren
> **Hinweis:** Das General Log erzeugt zusätzlichen Overhead und sollte nur für eine kurzfristige Analyse aktiviert werden.
```sql
SET GLOBAL general_log = ON;
SET GLOBAL log_output = 'TABLE';
```
Abfragen anzeigen:
```sql
SELECT
event_time,
user_host,
argument
FROM mysql.general_log
WHERE command_type = 'Query'
ORDER BY event_time DESC
LIMIT 100;
```
General Log wieder deaktivieren:
```sql
SET GLOBAL general_log = OFF;
```
---
## Performance Schema verwenden (empfohlen)
Falls das Performance Schema aktiviert ist, können ausgeführte Statements ohne das General Log analysiert werden:
```sql
SELECT
SQL_TEXT,
TIMER_WAIT / 1000000000 AS duration_ms
FROM performance_schema.events_statements_history
ORDER BY EVENT_ID DESC;
```
Je nach Konfiguration kann auch die Tabelle `events_statements_history_long` verwendet werden.
---
## Slow Query Log
Das Slow Query Log ist für sehr kurze Queries normalerweise ungeeignet. Es kann zwar so konfiguriert werden, dass alle Abfragen protokolliert werden:
```sql
SET GLOBAL long_query_time = 0;
```
Für eine kurzfristige Analyse ist jedoch das **General Log** meist die bessere Wahl.
---
## Empfehlung
| Ziel | Empfehlung |
|------|------------|
| Alle SQL-Statements für kurze Zeit mitschneiden | General Log |
| Regelmäßige Analyse mit geringem Overhead | Performance Schema |
| Aktive, aktuell laufende Queries anzeigen | `SHOW FULL PROCESSLIST` |
> **Fazit:** Für sehr kurze Queries ist `SHOW PROCESSLIST` ungeeignet. Verwende stattdessen das **General Log** oder – falls verfügbar – das **Performance Schema**.