2016-07-07 21 views
0

In MySQL gibt es zwei Werte für einige Parameter:MySQL wait_timeout globale und Session-Einstellung Ausgabe

1) Für Sitzung.
2) Für global.

können wir die Werte für solche Parameter überprüfen wie:

1) zeigen Variablen wie 'wait_timeout'
2) zeigen, globale Variablen wie 'wait_timeout'

Jetzt gibt es die Werte:
1) für session = 500
2) für global = 28800

Ich kann die Variablen per Befehl ändern:
set global wait_timeout = 100;
Sitzung einstellen wait_timeout = 200;

Aber wenn ich angemeldet wieder in ich bin die folgenden Werte erhalten:
für session = 500
für global = 100.

Es bedeutet, globale Werte behalten und Sitzung nicht, was absolut richtig ist . Aber meine Sorge ist, wie können wir die Sitzungsvariablen dann für alle Sitzungen ändern? Da global ist nicht, dass die Werte von jeder Sitzung in diesem Fall genommen werden.

+0

in docs, las ich, dass jede Sitzung den Wert von globalen Variablen bekommt aber warum zeigt es anders, eine Idee? –

Antwort

0

Ich habe die Genaue Beschreibung:

Auf Thread-Start die Sitzung wait_timeout Wert aus dem globalen wait_timeout Wert initialisiert wird, oder aus dem globalen interactive_timeout Wert, abhängig von der Art des Kunden (wie durch die CLIENT_INTERACTIVE Verbindungsoption definiert mysql_real_connect())

in MySQL doc wait_timeout description

1

Ja,

gibt es 2 Timeouts in MySQL. Welche Verbindung Sie für Ihre Verbindung benötigen, hängt vom Verbindungstyp ab. eine ist für die BATCH-Verarbeitung und die andere für interaktive

die zweite Variable ist das interaktive_timeout.

Blick auf die Einstellung von interactive_timeout

SHOW VARIABLES LIKE 'interactive_timeout'; 
SHOW GLOBAL VARIABLES LIKE 'interactive_timeout'; 

Probe Login über mysql-Client

# mysql -uroot -p 
Enter password: 
Welcome to the MariaDB monitor. Commands end with ; or \g. 
Your MariaDB connection id is 106426 
Server version: 10.1.10-MariaDB-log Homebrew 

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others. 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 

MariaDB [(none)]> show variables like 'wait_timeout'; 
+---------------+-------+ 
| Variable_name | Value | 
+---------------+-------+ 
| wait_timeout | 500 | 
+---------------+-------+ 
1 row in set (0.00 sec) 

MariaDB [(none)]> show global variables like 'wait_timeout'; 
+---------------+-------+ 
| Variable_name | Value | 
+---------------+-------+ 
| wait_timeout | 28800 | 
+---------------+-------+ 
1 row in set (0.00 sec) 

MariaDB [(none)]> show variables like 'interactive_timeout'; 
+---------------------+-------+ 
| Variable_name  | Value | 
+---------------------+-------+ 
| interactive_timeout | 500 | 
+---------------------+-------+ 
1 row in set (0.01 sec) 

MariaDB [(none)]> show global variables like 'interactive_timeout'; 
+---------------------+-------+ 
| Variable_name  | Value | 
+---------------------+-------+ 
| interactive_timeout | 500 | 
+---------------------+-------+ 
1 row in set (0.00 sec) 

MariaDB [(none)]> 

jetzt das gleiche im Batch-Modus

# mysql -uroot -p -e "show variables like 'wait_timeout';" 
Enter password: 
+---------------+-------+ 
| Variable_name | Value | 
+---------------+-------+ 
| wait_timeout | 28800 | 
+---------------+-------+ 
# 
+0

Sie meinen also, wenn wir eine Verbindung über die Shell herstellen, wird der wait_timeout-Wert gleich wie bei interactive_timeout sein. –

+0

normal ja, aber es ist nur ein Parameter in der Verbindung und ich kann sagen, wie Ihre Werkzeuge verbinden. Überprüfen Sie die Einstellungen in der /etc/mysql/my.cnf und testen Sie die Einstellung oder setzen Sie Bot-Werte auf die gleiche in der my.cnf –

+0

Ich bin über einen normalen MySQL-Client im interaktiven Modus in Linux verbunden. –