SQL - PorcessList
This commit is contained in:
@@ -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
|
)ref1 offset 247 rows fetch
|
||||||
next 100 rows only;
|
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**.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user