Der Server mysqld arbeitet mit einer ganzen
          Reihe von Systemvariablen, die angeben, wie er konfiguriert
          ist. Für alle diese Variablen gibt es Vorgabewerte. Diese
          können beim Serverstart über Optionen auf der Befehlszeile
          oder in Optionsdateien eingestellt werden. Die meisten
          Variablen lassen sich zur Laufzeit des Servers dynamisch
          mithilfe der SET-Anweisung ändern; auf
          diese Weise können Sie den Betrieb des Servers beeinflussen,
          ohne ihn beenden und neu starten zu müssen. Ferner können
          Sie die Werte auch in Ausdrücken verwenden.
        
          Hinweis: Verschiedene Systemvariablen lassen sich mit der
          Anweisung SET aktivieren, indem sie auf
          ON bzw. 1 gesetzt
          werden. Ähnlich können Sie sie mit SET
          deaktivieren, indem Sie sie auf OFF bzw.
          0 setzen. Um solche Variablen über die
          Befehlszeile oder in Optionsdateien einstellen zu können,
          müssen Sie sie auf 1 oder
          0 setzen (d. h. die Einstellungen
          ON und OFF funktionieren
          nicht). So führt beispielsweise auf der Befehlszeile die
          Option --delay_key_write=1 zum gewünschten
          Ergebnis – anders als --delay_key_write=ON.
        
Der Server verwendet zwei Arten von Systemvariablen. Globale Variablen beeinflussen den Gesamtbetrieb des Servers. Sitzungsvariablen hingegen wirken sich auf seinen Betrieb bezogen auf jeweils individuelle Clientverbindungen aus. Eine gegebene Systemvariable kann sowohl einen globalen als auch einen sitzungsbezogenen Wert haben.
Wenn der Server startet, setzt er alle globalen Variablen auf ihr jeweiligen Standardwerte. Diese Vorgaben können mithilfe von Optionen geändert werden, die in Optionsdateien oder über die Befehlszeile angegeben werden.
          Wenn Sie eine Variable, die einen numerischen Wert annimmt,
          über eine Startoption konfigurieren, dann kann dieser Wert
          mit den Suffixen K, M
          oder G (in Groß- oder Kleinschreibung)
          angegeben werden, um einen Multiplikator von 1.024,
          1.0242 oder
          1.0243 anzuzeigen. Bei der
          Einstellung von key_buffer_size etwa
          würden hiermit die Werte als Kbyte, Mbyte oder Gbyte
          angegeben. Der folgende Befehl startet den Server also mit
          einem Abfrage-Cache, der eine Größe von 16 Mbyte hat.
        
mysqld --query_cache_size=16M
          Die Groß-/Kleinschreibung der Suffixbuchstaben ist
          irrelevant: 16M und 16m
          sind gleichwertig.
        
          Wenn Sie den Maximalwert, auf den eine Systemvariable zur
          Laufzeit mit der SET-Anweisung gesetzt
          werden kann, beschränken wollen, können Sie das gewünschte
          Maximum mithilfe einer Option des Typs
          --maximum-
          beim Serverstart festlegen. Um beispielsweise eine Erhöhung
          des Wertes von var_namequery_cache_size auf mehr
          als 32 Mbyte zu verhindern, benutzen Sie die Option
          --maximum-query_cache_size=32M.
        
          Wenn der Server gestartet wurde, können diejenigen Variablen,
          die dynamisch sind, geändert werden, indem Sie eine
          Verbindung mit dem Server herstellen und eine SET
          GLOBAL -Anweisung absetzen.
          Um eine globale Variable ändern zu können, benötigen Sie
          die Berechtigung var_name =
          valueSUPER.
        
          Der Server verwendet zudem einen Satz von Sitzungsvariablen
          für jeden Client, der eine Verbindung herstellt. Die
          Sitzungsvariablen des Clients werden zum Zeitpunkt der
          Verbindungsherstellung unter Verwendung der aktuellen Werte
          der entsprechenden globalen Variablen initialisiert. So wird
          z. B. der SQL-Modus des Clients von der Sitzungsvariable
          sql_mode gesteuert, die, wenn der Client
          die Verbindung herstellt, mit dem Wert der globalen Variable
          sql_mode initialisiert wird.
        
          Sitzungsvariablen, die dynamisch sind, kann der Client durch
          Absetzen einer SET SESSION
          -Anweisung ändern.
          Das Einstellen einer Sitzungsvariable erfordert keine
          speziellen Berechtigungen, aber ein Client kann nur seine
          eigenen Sitzungsvariablen einstellen, nicht jedoch die anderer
          Clients.
        var_name =
          value
          Eine Änderung einer globalen Variable ist für alle Clients
          sichtbar, die auf diese globale Variable zugreifen. Allerdings
          wirkt sich diese Änderung nur auf die entsprechenden
          Sitzungsvariablen derjenigen Clients aus, die nach ihrer
          Durchführung eine Verbindung herstellen. Änderungen an
          globalen Variablen haben hingegen keinen Einfluss auf die
          betreffende Sitzungsvariable derjenigen Clients, die bereits
          eine Verbindung hergestellt haben (dies gilt sogar für
          Clients, die die SET GLOBAL-Anweisung
          absetzen).
        
          Es gibt unterschiedliche Möglichkeiten, globale und
          Sitzungsvariablen zur Laufzeit einzustellen. Die folgenden
          Beispiele verwenden sort_buffer_size als
          Beispiel für einen Variablennamen.
        
          Um den Wert einer GLOBAL-Variable
          einzustellen, verwenden Sie eine der folgenden Syntaxen:
        
SET GLOBAL sort_buffer_size =value; SET @@global.sort_buffer_size =value;
          Um den Wert einer SESSION-Variable
          einzustellen, verwenden Sie eine der folgenden Syntaxen:
        
SET SESSION sort_buffer_size =value; SET @@session.sort_buffer_size =value; SET sort_buffer_size =value;
          LOCAL ist ein Synonym für
          SESSION, und @@local.
          ist ein Synonym für @@session..
        
          Wenn Sie beim Einstellen einer Variable keinen
          GLOBAL- oder
          SESSION-Modifikator angeben, stellt die
          Anweisung den Sitzungswert ein.
        
          Um eine falsche Verwendung zu verhindern, erzeugt MySQL einen
          Fehler, wenn Sie SET GLOBAL für eine
          Variable verwenden, für die nur SET
          SESSION zulässig ist, oder
          GLOBAL (bzw. @@global.)
          beim Einstellen einer globalen Variable nicht angeben.
        
          Wenn Sie einer Systemvariablen mit SET
          einen Wert zuweisen, dann können Sie in diesem Wert keine
          Suffixbuchstaben verwenden. Allerdings kann der Wert die Form
          eines Ausdrucks annehmen:
        
SET sort_buffer_size = 10 * 1024 * 1024;
          Um explizit anzugeben, ob Sie die globale oder die
          Sitzungsvariable einstellen wollen, verwenden Sie die
          Modifikatoren GLOBAL oder
          SESSION:
        
SET GLOBAL sort_buffer_size = 10 * 1024 * 1024; SET SESSION sort_buffer_size = 10 * 1024 * 1024;
          Systemvariablen und ihre Werte zeigen Sie mit der
          SHOW VARIABLES-Anweisung an.
        
mysql> SHOW VARIABLES;
+---------------------------------+--------------------------------------+
| Variable_name                   | Value                                |
+---------------------------------+--------------------------------------+
| auto_increment_increment        | 1                                    |
| auto_increment_offset           | 1                                    |
| automatic_sp_privileges         | ON                                   |
| back_log                        | 50                                   |
| basedir                         | /home/jon/bin/mysql/                 |
| binlog_cache_size               | 32768                                |
| bulk_insert_buffer_size         | 8388608                              |
| character_set_client            | latin1                               |
| character_set_connection        | latin1                               |
| character_set_database          | latin1                               |
| character_set_results           | latin1                               |
| character_set_server            | latin1                               |
| character_set_system            | utf8                                 |
| character_sets_dir              | /usr/bin/mysql/share/mysql/charsets/ |
| collation_connection            | latin1_swedish_ci                    |
| collation_database              | latin1_swedish_ci                    |
| collation_server                | latin1_swedish_ci                    |
...
| innodb_additional_mem_pool_size | 1048576                              |
| innodb_autoextend_increment     | 8                                    |
| innodb_buffer_pool_awe_mem_mb   | 0                                    |
| innodb_buffer_pool_size         | 8388608                              |
| innodb_checksums                | ON                                   |
| innodb_commit_concurrency       | 0                                    |
| innodb_concurrency_tickets      | 500                                  |
| innodb_data_file_path           | ibdata1:10M:autoextend               |
| innodb_data_home_dir            |                                      |
...
| version                         | 5.1.6-alpha-log                      |
| version_comment                 | Source distribution                  |
| version_compile_machine         | i686                                 |
| version_compile_os              | suse-linux                           |
| wait_timeout                    | 28800                                |
+---------------------------------+--------------------------------------+
          Um den Wert einer bestimmten
          GLOBAL-Variable abzurufen, geben Sie eine
          der folgenden Anweisungen ein:
        
SELECT @@global.sort_buffer_size; SHOW GLOBAL VARIABLES like 'sort_buffer_size';
          Um den Wert einer SESSION-Variable
          abzurufen, geben Sie eine der folgenden Anweisungen ein:
        
SELECT @@sort_buffer_size; SELECT @@session.sort_buffer_size; SHOW SESSION VARIABLES like 'sort_buffer_size';
          Wenn Sie eine Variable mit SELECT
          @@ abrufen
          (d. h. var_nameglobal. oder
          session. nicht angeben), gibt MySQL den
          SESSION-Wert zurück, sofern dieser
          vorhanden ist, ansonsten den GLOBAL-Wert.
        
          Wenn Sie bei SHOW VARIABLES weder
          GLOBAL noch SESSION
          angeben, gibt MySQL die SESSION-Werte
          zurück.
        
          Der Grund dafür, warum das Schlüsselwort
          GLOBAL bei der Einstellung von Variablen
          angegeben werden muss, die ohnehin nur global verfügbar sind,
          nicht jedoch bei deren Abrufen, besteht darin, zukünftige
          Probleme von vornherein auszuschließen. Wenn wir in Zukunft
          eine SESSION-Variable entfernen müssten,
          die denselben Namen wie eine
          GLOBAL-Variable hat, würde ein Client mit
          der Berechtigung SUPER möglicherweise
          ungewollt die GLOBAL-Variable ändern –
          und nicht die SESSION-Variable für die
          eigene Verbindung. Würden wir ein
          SESSION-Variable mit demselben Namen
          hinzufügen, den auch eine GLOBAL-Variable
          hat, dann könnte ein Client, der eigentlich die
          GLOBAL-Variable ändern sollte, am Ende
          seine eigene SESSION-Variable modifizieren.
        
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.

