| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
| 10.4.1 Dynamic System Variables | ||
| 10.4.2 Structured System Variables |
Starting from MySQL 4.0.3, we provide better access to a lot of system and connection variables. Many variables can be changed dynamically while the server is running. This allows you to modify server operation without having to stop and restart it.
The mysqld server maintains two kinds of variables while it runs.
Global variables affect the overall operation of the server.
Session variables affect its operation for individual client connections.
When the server starts, it initializes all global variables to their default
values. These defaults may be changed by options specified in option files
or on the command line. After the server starts, those global variables
that are dynamic can be changed by connecting to the server and issuing
a SET GLOBAL var_name statement. To change a global variable,
you must have the SUPER privilege.
The server also maintains a set of session variables for each client
that connects. The client's session variables are initialized at connect
time using the current values of the corresponding global variables. For
those session variables that are dynamic, the client can change them
by issuing a SET SESSION var_name statement. Setting a session
variable requires no special privilege, but a client can change only its
own session variables, not those of any other client.
A change to a global variable affects only client connections that occur
after the change. It does not affect session variables for any client
that is already connected (not even those of the client that issues the
SET GLOBAL statement).
Global or session variables may be set or retrieved using several syntax
forms. The following examples use sort_buffer_size as a sample variable
name.
To set the value of a GLOBAL variable, use one
of the following syntaxes:
mysql> SET GLOBAL sort_buffer_size=value; mysql> SET @@global.sort_buffer_size=value; |
To set the value of a SESSION variable, use one of the
following syntaxes:
mysql> SET SESSION sort_buffer_size=value; mysql> SET @@session.sort_buffer_size=value; mysql> SET sort_buffer_size=value; |
LOCAL is a synonym for SESSION.
If you don't specify GLOBAL, SESSION, or LOCAL when
setting a variable, SESSION is the default.
See section SET OPTION.
To retrieve the value of a GLOBAL variable, use one of the
following statements:
mysql> SELECT @@global.sort_buffer_size; mysql> SHOW GLOBAL VARIABLES like 'sort_buffer_size'; |
To retrieve the value of a SESSION variable, use one of the
following statements:
mysql> SELECT @@session.sort_buffer_size; mysql> SHOW SESSION VARIABLES like 'sort_buffer_size'; |
Here, too, LOCAL is a synonym for SESSION.
If you don't specify @@global, @@session, or
@@local when retrieving a variable with SELECT, MySQL returns
the SESSION value if it exists and the GLOBAL value otherwise.
If you don't specify GLOBAL, SESSION, or LOCAL for
SHOW VARIABLES, MySQL returns the SESSION value.
The reason for requiring the GLOBAL keyword when setting
GLOBAL-only variables but not when retrieving them is to ensure that
we don't later run into problems if we would introduce a SESSION
variable with the same name or remove a SESSION variable. In that
case, a client with the SUPER privilege might change the
GLOBAL variable by accident, rather than just the SESSION
variable for the client's own connection.
Further information about system variables can be found in the
startup options section, and in the descriptions of the SHOW VARIABLES
and SET statements.
See section 5.2.1 mysqld Command-line Options.
See section SHOW VARIABLES.
See section SET OPTION.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |