The mysql server maintains many system
variables that indicate how it is configured. Each system
variable has a default value. System variables can be set at
server startup using options on the command line or in an
option file. As of MySQL 4.0.3, most of them can be changed
dynamically while the server is running by means of the
SET statement, which enables you to modify
operation of the server without having to stop and restart it.
You can refer to system variable values in expressions.
There are several ways to see the names and values of system variables:
To see the values that a server will use based on its
compiled-in defaults and any option files that it reads,
use this command (omit --verbose before
MySQL 4.1.1):
mysqld --verbose --help
To see the values that a server will use based on its
compiled-in defaults, ignoring the settings in any option
files, use this command (omit --verbose
before MySQL 4.1.1):
mysqld --no-defaults --verbose --help
To see the current values used by a running server, use
the SHOW VARIABLES statement.
This section provides a description of each system variable. Variables with no version indicated have been present since at least MySQL 3.22.
For additional system variable information, see these sections:
Section 5.2.4, “Using System Variables”, discusses the syntax for setting and displaying system variable values.
Section 5.2.4.2, “Dynamic System Variables”, lists the variables that can be set at runtime.
Information on tuning sytem variables can be found in Section 7.5.2, “Tuning Server Parameters”.
Section 14.2.5, “InnoDB Startup Options and System Variables”, lists
InnoDB system variables.
Note: Some of the following variable
descriptions refer to “enabling” or
“disabling” a variable. These variables can be
enabled with the SET statement by setting
them to ON or 1, or
disabled by setting them to OFF or
0. However, to set such a variable on the
command line or in an option file, you must set it to
1 or 0; setting it to
ON or OFF will not work.
For example, on the command line,
--delay_key_write=1 works but
--delay_key_write=ON does not.
Values for buffer sizes, lengths, and stack sizes are given in bytes unless otherwise specified.
ansi_mode
This is ON if mysqld
was started with --ansi. See
Section 1.9.3, “Running MySQL in ANSI Mode”. This variable was added in
MySQL 3.23.6 and removed in 3.23.41. See the description
for sql_mode.
back_log
The number of outstanding connection requests MySQL can
have. This comes into play when the main MySQL thread gets
very many connection requests in a very short time. It
then takes some time (although very little) for the main
thread to check the connection and start a new thread. The
back_log value indicates how many
requests can be stacked during this short time before
MySQL momentarily stops answering new requests. You need
to increase this only if you expect a large number of
connections in a short period of time.
In other words, this value is the size of the listen queue
for incoming TCP/IP connections. Your operating system has
its own limit on the size of this queue. The manual page
for the Unix listen() system call
should have more details. Check your OS documentation for
the maximum value for this variable.
back_log cannot be set higher than your
operating system limit.
basedir
The MySQL installation base directory. This variable can
be set with the --basedir option.
bdb_cache_size
The size of the buffer that is allocated for caching
indexes and rows for BDB tables. If you
do not use BDB tables, you should start
mysqld with --skip-bdb
to not allocate memory for this cache. This variable was
added in MySQL 3.23.14.
bdb_home
The base directory for BDB tables. This
should be assigned the same value as the
datadir variable. This variable was
added in MySQL 3.23.14.
bdb_log_buffer_size
The size of the buffer that is allocated for caching
indexes and rows for BDB tables. If you
do not use BDB tables, you should set
this to 0 or start mysqld with
--skip-bdb in order not to allocate
memory for this cache. This variable was added in MySQL
3.23.31.
bdb_logdir
The directory where the BDB storage
engine writes its log files. This variable can be set with
the --bdb-logdir option. This variable
was added in MySQL 3.23.14.
bdb_max_lock
The maximum number of locks that can be active for a
BDB table (10,000 by default). You
should increase this value if errors such as the following
occur when you perform long transactions or when
mysqld has to examine many rows to
calculate a query:
bdb: Lock table is out of available locks Got error 12 from ...
This variable was added in MySQL 3.23.29.
bdb_shared_data
This is ON if you are using
--bdb-shared-data to start Berkeley DB in
multi-process mode. (Do not use
DB_PRIVATE when initializing Berkeley
DB.) This variable was added in MySQL 3.23.29.
bdb_tmpdir
The BDB temporary file directory. This
variable was added in MySQL 3.23.14.
bdb_version
See the description for version_bdb.
binlog_cache_size
The size of the cache to hold the SQL statements for the
binary log during a transaction. A binary log cache is
allocated for each client if the server supports any
transactional storage engines and, starting from MySQL
4.1.2, if the server has the binary log enabled
(--log-bin option). If you often use
large, multiple-statement transactions, you can increase
this cache size to get more performance. The
Binlog_cache_use and
Binlog_cache_disk_use status variables
can be useful for tuning the size of this variable. This
variable was added in MySQL 3.23.29. See
Section 5.11.4, “The Binary Log”.
bulk_insert_buffer_size
MyISAM uses a special tree-like cache
to make bulk inserts faster for INSERT ...
SELECT, INSERT ... VALUES (...), (...),
..., and LOAD DATA INFILE
when adding data to non-empty tables. This variable limits
the size of the cache tree in bytes per thread. Setting it
to 0 disables this optimization. The default value is 8MB.
Before MySQL 4.0.3. this variable was named
myisam_bulk_insert_tree_size.
character_set
The default character set. This variable was added in
MySQL 3.23.3, then removed in MySQL 4.1.1 and replaced by
the various
character_set_
variables.
xxx
character_set_client
The character set for statements that arrive from the client. This variable was added in MySQL 4.1.1.
character_set_connection
The character set used for literals that do not have a character set introducer and for number-to-string conversion. This variable was added in MySQL 4.1.1.
character_set_database
The character set used by the default database. The server
sets this variable whenever the default database changes.
If there is no default database, the variable has the same
value as character_set_server. This
variable was added in MySQL 4.1.1.
character_set_results
The character set used for returning query results to the client. This variable was added in MySQL 4.1.1.
character_set_server
The server default character set. This variable was added in MySQL 4.1.1.
character_set_system
The character set used by the server for storing
identifiers. The value is always utf8.
This variable was added in MySQL 4.1.1.
character_sets
The supported character sets. This variable was added in
MySQL 3.23.15 and removed in MySQL 4.1.1. (Use
SHOW CHARACTER SET for a list of
character sets.)
character_sets_dir
The directory where character sets are installed. This variable was added in MySQL 4.1.2.
collation_connection
The collation of the connection character set. This variable was added in MySQL 4.1.1.
collation_database
The collation used by the default database. The server
sets this variable whenever the default database changes.
If there is no default database, the variable has the same
value as collation_server. This
variable was added in MySQL 4.1.1.
collation_server
The server default collation. This variable was added in MySQL 4.1.1.
concurrent_insert
If ON (the default), MySQL allows
INSERT and SELECT
statements to run concurrently for
MyISAM tables that have no free blocks
in the middle of the data file. You can turn this option
off by starting mysqld with
--safe or --skip-new.
This variable was added in MySQL 3.23.7.
See also Section 7.3.3, “Concurrent Inserts”.
The number of seconds that the mysqld
server waits for a connect packet before responding with
Bad handshake.
convert_character_set
The current character set mapping that was set by
SET CHARACTER SET. This variable was
removed in MySQL 4.1.
datadir
The MySQL data directory. This variable can be set with
the --datadir option.
date_format
This variable is not implemented.
datetime_format
This variable is not implemented.
default_week_format
The default mode value to use for the
WEEK() function. See
Section 12.6, “Date and Time Functions”. This variable
is available as of MySQL 4.0.14.
delay_key_write
This option applies only to MyISAM
tables. It can have one of the following values to affect
handling of the DELAY_KEY_WRITE table
option that can be used in CREATE TABLE
statements.
| Option | Description |
OFF |
DELAY_KEY_WRITE is ignored. |
ON |
MySQL honors any DELAY_KEY_WRITE option specified in
CREATE TABLE statements. This
is the default value. |
ALL |
All new opened tables are treated as if they were created with the
DELAY_KEY_WRITE option enabled. |
If DELAY_KEY_WRITE is enabled for a
table, the key buffer is not flushed for the table on
every index update, but only when the table is closed.
This speeds up writes on keys a lot, but if you use this
feature, you should add automatic checking of all
MyISAM tables by starting the server
with the --myisam-recover option (for
example, --myisam-recover=BACKUP,FORCE).
See Section 5.2.2, “Command Options”, and
Section 14.1.1, “MyISAM Startup Options”.
Note that if you enable external locking with
--external-locking, there is no
protection against index corruption for tables that use
delayed key writes.
This variable was added in MySQL 3.23.8.
delayed_insert_limit
After inserting delayed_insert_limit
delayed rows, the INSERT DELAYED
handler thread checks whether there are any
SELECT statements pending. If so, it
allows them to execute before continuing to insert delayed
rows.
delayed_insert_timeout
How many seconds an INSERT DELAYED
handler thread should wait for INSERT
statements before terminating.
delayed_queue_size
This is a per-table limit on the number of rows to queue
when handling INSERT DELAYED
statements. If the queue becomes full, any client that
issues an INSERT DELAYED statement
waits until there is room in the queue again.
expire_logs_days
The number of days for automatic binary log removal. The default is 0, which means “no automatic removal.” Possible removals happen at startup and at binary log rotation. This variable was added in MySQL 4.1.0.
flush
If ON, the server flushes
(synchronizes) all changes to disk after each SQL
statement. Normally, MySQL does a write of all changes to
disk only after each SQL statement and lets the operating
system handle the synchronizing to disk. See
Section A.1.4.2, “What to Do If MySQL Keeps Crashing”. This variable is set to
ON if you start
mysqld with the
--flush option. This variable was added
in MySQL 3.22.9.
flush_time
If this is set to a non-zero value, all tables are closed
every flush_time seconds to free up
resources and synchronize unflushed data to disk. We
recommend that this option be used only on Windows 9x or
Me, or on systems with minimal resources. This variable
was added in MySQL 3.22.18.
ft_boolean_syntax
The list of operators supported by boolean full-text
searches performed using IN BOOLEAN
MODE. See Section 12.8.1, “Boolean Full-Text Searches”.
This variable was added as a read-only variable in MySQL
4.0.1. It can be modified as of MySQL 4.1.2.
The default variable value is
'+ -><()~*:""&|'. The
rules for changing the value are as follows:
Operator function is determined by position within the string.
The replacement value must be 14 characters.
Each character must be an ASCII non-alphanumeric character.
Either the first or second character must be a space.
No duplicates are allowed except the phrase quoting operators in positions 11 and 12. These two characters are not required to be the same, but they are the only two that may be.
Positions 10, 13, and 14 (which by default are set to
‘:’,
‘&’, and
‘|’) are reserved for
future extensions.
ft_max_word_len
The maximum length of the word to be included in a
FULLTEXT index. This variable was added
in MySQL 4.0.0.
Note:
FULLTEXT indexes must be rebuilt after
changing this variable. Use REPAIR TABLE
.
tbl_name QUICK
ft_min_word_len
The minimum length of the word to be included in a
FULLTEXT index. This variable was added
in MySQL 4.0.0.
Note:
FULLTEXT indexes must be rebuilt after
changing this variable. Use REPAIR TABLE
.
tbl_name QUICK
ft_query_expansion_limit
The number of top matches to use for full-text searches
performed using WITH QUERY EXPANSION.
This variable was added in MySQL 4.1.1.
ft_stopword_file
The file from which to read the list of stopwords for
full-text searches. All the words from the file are used;
comments are not honored. By default,
a built-in list of stopwords is used (as defined in the
myisam/ft_static.c file). Setting
this variable to the empty string ('')
disables stopword filtering. This variable was added in
MySQL 4.0.10.
Note:
FULLTEXT indexes must be rebuilt after
changing this variable or the contents of the stopword
file. Use REPAIR TABLE
.
tbl_name QUICK
group_concat_max_len
The maximum allowed result length for the
GROUP_CONCAT() function. The default is
1024. This variable was added in MySQL 4.1.0.
have_archive
YES if mysqld
supports ARCHIVE tables,
NO if not. This variable was added in
MySQL 4.1.3.
have_bdb
YES if mysqld
supports BDB tables.
DISABLED if --skip-bdb
is used. This variable was added in MySQL 3.23.30.
have_blackhole_engine
YES if mysqld
supports BLACKHOLE tables,
NO if not. This variable was added in
MySQL 4.1.11.
have_compress
YES if the zlib
compression library is available to the server,
NO if not. If not, the
COMPRESS() and
UNCOMPRESS() functions cannot be used.
This variable was added in MySQL 4.1.1.
have_crypt
YES if the crypt()
system call is available to the server,
NO if not. If not, the
ENCRYPT() function cannot be used. This
variable was added in MySQL 4.0.10.
have_csv
YES if mysqld
supports ARCHIVE tables,
NO if not. This variable was added in
MySQL 4.1.4.
have_example_engine
YES if mysqld
supports EXAMPLE tables,
NO if not. This variable was added in
MySQL 4.1.4.
have_geometry
YES if the server supports spatial data
types, NO if not. This variable was
added in MySQL 4.1.3.
have_innodb
YES if mysqld
supports InnoDB tables.
DISABLED if
--skip-innodb is used. This variable was
added in MySQL 3.23.37.
have_isam
YES if mysqld
supports ISAM tables.
DISABLED if
--skip-isam is used. This variable was
added in MySQL 3.23.30.
have_ndbcluster
YES if mysqld
supports NDB Cluster tables.
DISABLED if
--skip-ndbcluster is used. This variable
was added in MySQL 4.1.2.
have_openssl
YES if mysqld
supports SSL (encryption) connections,
NO if not. This variable was added in
MySQL 3.23.43.
have_query_cache
YES if mysqld
supports the query cache, NO if not.
This variable was added in MySQL 4.0.2.
have_raid
YES if mysqld
supports the RAID option,
NO if not. This variable was added in
MySQL 3.23.30.
have_rtree_keys
YES if RTREE indexes
are available, NO if not. (These are
used for spatial indexes in MyISAM
tables.) This variable was added in MySQL 4.1.3.
have_symlink
YES if symbolic link support is
enabled, NO if not. This is required on
Unix for support of the DATA DIRECTORY
and INDEX DIRECTORY table options, and
on Windows for support of data directory symlinks.
This variable was added in MySQL 4.0.0.
init_connect
A string to be executed by the server for each client that
connects. The string consists of one or more SQL
statements. To specify multiple statements, separate them
by semicolon characters. For example, each client begins
by default with autocommit mode enabled. There is no
global system variable to specify that autocommit should
be disabled by default, but
init_connect can be used to achieve the
same effect:
SET GLOBAL init_connect='SET AUTOCOMMIT=0';
This variable can also be set on the command line or in an option file. To set the variable as just shown using an option file, include these lines:
[mysqld] init_connect='SET AUTOCOMMIT=0'
Note that the content of init_connect
is not executed for users that have the
SUPER privilege. This is done so that
an erroneous value for init_connect
does not prevent all clients from connecting. For example,
the value might contain a statement that has a syntax
error, thus causing client connections to fail. Not
executing init_connect for users that
have the SUPER privilege enables them
to open a connection and fix the
init_connect value.
This variable was added in MySQL 4.1.2.
init_file
The name of the file specified with the
--init-file option when you start the
server. This should be a file containing SQL statements
that you want the server to execute when it starts. Each
statement must be on a single line and should not include
comments. This variable was added in MySQL 3.23.2.
init_slave
This variable is similar to
init_connect, but is a string to be
executed by a slave server each time the SQL thread
starts. The format of the string is the same as for the
init_connect variable. This variable
was added in MySQL 4.1.2.
innodb_
xxx
InnoDB system variables are listed in
Section 14.2.5, “InnoDB Startup Options and System Variables”.
interactive_timeout
The number of seconds the server waits for activity on an
interactive connection before closing it. An interactive
client is defined as a client that uses the
CLIENT_INTERACTIVE option to
mysql_real_connect(). See also
wait_timeout.
join_buffer_size
The size of the buffer that is used for joins that do not
use indexes and thus perform full table scans. Normally,
the best way to get fast joins is to add indexes. Increase
the value of join_buffer_size to get a
faster full join when adding indexes is not possible. One
join buffer is allocated for each full join between two
tables. For a complex join between several tables for
which indexes are not used, multiple join buffers might be
necessary.
Index blocks for MyISAM and
ISAM tables are buffered and are shared
by all threads. key_buffer_size is the
size of the buffer used for index blocks. The key buffer
is also known as the key cache.
The maximum allowable setting for
key_buffer_size is 4GB. The effective
maximum size might be less, depending on your available
physical RAM and per-process RAM limits imposed by your
operating system or hardware platform.
Increase the value to get better index handling (for all reads and multiple writes) to as much as you can afford. Using a value that is 25% of total memory on a machine that mainly runs MySQL is quite common. However, if you make the value too large (for example, more than 50% of your total memory) your system might start to page and become extremely slow. MySQL relies on the operating system to perform filesystem caching for data reads, so you must leave some room for the filesystem cache. Consider also the memory requirements of other storage engines.
For even more speed when writing many rows at the same
time, use LOCK TABLES. See
Section 7.2.13, “Speed of INSERT Statements”.
You can check the performance of the key buffer by issuing
a SHOW STATUS statement and examining
the Key_read_requests,
Key_reads,
Key_write_requests, and
Key_writes status variables. (See
Section 13.5.4, “SHOW Syntax”.) The
Key_reads/Key_read_requests ratio
should normally be less than 0.01. The
Key_writes/Key_write_requests ratio is
usually near 1 if you are using mostly updates and
deletes, but might be much smaller if you tend to do
updates that affect many rows at the same time or if you
are using the DELAY_KEY_WRITE table
option.
The fraction of the key buffer in use can be determined
using key_buffer_size in conjunction
with the Key_blocks_unused status
variable and the buffer block size. From MySQL 4.1.1 on,
the buffer block size is available from the
key_cache_block_size server variable.
The fraction of the buffer in use is:
1 - ((Key_blocks_unused × key_cache_block_size) / key_buffer_size)
This value is an approximation because some space in the key buffer may be allocated internally for administrative structures.
Before MySQL 4.1.1, key cache blocks are 1024 bytes, and
before MySQL 4.1.2, Key_blocks_unused
is unavailable. The Key_blocks_used
variable can be used as follows to determine the fraction
of the key buffer in use:
(Key_blocks_used × 1024) / key_buffer_size
However, Key_blocks_used indicates the
maximum number of blocks that have ever been in use at
once, so this formula does not necessarily represent the
current fraction of the buffer that is in use.
As of MySQL 4.1, it is possible to create multiple
MyISAM key caches. The size limit of
4GB applies to each cache individually, not as a group.
See Section 7.4.6, “The MyISAM Key Cache”.
key_cache_age_threshold
This value controls the demotion of buffers from the hot
sub-chain of a key cache to the warm sub-chain. Lower
values cause demotion to happen more quickly. The minimum
value is 100. The default value is 300. This variable was
added in MySQL 4.1.1. See
Section 7.4.6, “The MyISAM Key Cache”.
key_cache_block_size
The size in bytes of blocks in the key cache. The default
value is 1024. This variable was added in MySQL 4.1.1. See
Section 7.4.6, “The MyISAM Key Cache”.
key_cache_division_limit
The division point between the hot and warm sub-chains of
the key cache buffer chain. The value is the percentage of
the buffer chain to use for the warm sub-chain. Allowable
values range from 1 to 100. The default value is 100. This
variable was added in MySQL 4.1.1. See
Section 7.4.6, “The MyISAM Key Cache”.
language
The language used for error messages.
large_file_support
Whether mysqld was compiled with options for large file support. This variable was added in MySQL 3.23.28.
lc_time_names
This variable specifies the locale that controls the
language used to display day and month names and
abbreviations. This variable affects the output from the
DATE_FORMAT(),
DAYNAME() and
MONTHNAME() functions. Locale names are
POSIX-style values such as 'ja_JP' or
'pt_BR'. The default value is
'en_US' regardless of your system's
locale setting. For further information, see
Section 5.10.9, “MySQL Server Locale Support”. This variable was added
in MySQL 4.1.21.
license
The type of license the server has. This variable was added in MySQL 4.0.19.
local_infile
Whether LOCAL is supported for
LOAD DATA INFILE statements. See
Section 5.6.4, “Security Issues with LOAD DATA LOCAL”. This variable was added
in MySQL 4.0.3.
locked_in_memory
Whether mysqld was locked in memory
with --memlock. This variable was added
in MySQL 3.23.25.
log
Whether logging of all statements to the general query log is enabled. See Section 5.11.2, “The General Query Log”.
log_bin
Whether the binary log is enabled. This variable was added in MySQL 3.23.14. See Section 5.11.4, “The Binary Log”.
log_error
The location of the error log. This variable was added in MySQL 4.0.10.
log_slave_updates
Whether updates received by a slave server from a master server should be logged to the slave's own binary log. Binary logging must be enabled on the slave for this variable to have any effect. This variable was added in MySQL 3.23.17. See Section 6.8, “Replication Startup Options”.
log_slow_queries
Whether slow queries should be logged. “Slow”
is determined by the value of the
long_query_time variable. This variable
was added in MySQL 4.0.2. See
Section 5.11.5, “The Slow Query Log”.
log_update
Whether the update log is enabled. This variable was added in MySQL 3.22.18. Note that the binary log is preferable to the update log, which is unavailable as of MySQL 5.0. See Section 5.11.3, “The Update Log”.
log_warnings
Whether to produce additional warning messages. This variable was added in MySQL 4.0.3. It is enabled by default as of MySQL 4.0.19 and 4.1.2. As of MySQL 4.0.21 and 4.1.3, the variable can take values greater than 1 and aborted connections are not logged to the error log unless the value is greater than 1.
long_query_time
If a query takes longer than this many seconds, the server
increments the Slow_queries status
variable. If you are using the
--log-slow-queries option, the query is
logged to the slow query log file. This value is measured
in real time, not CPU time, so a query that is under the
threshold on a lightly loaded system might be above the
threshold on a heavily loaded one. The minimum value is 1.
The default is 10. See Section 5.11.5, “The Slow Query Log”.
low_priority_updates
If set to 1, all
INSERT, UPDATE,
DELETE, and LOCK TABLE
WRITE statements wait until there is no pending
SELECT or LOCK TABLE
READ on the affected table. Before MySQL 3.22.5,
this variable was named
sql_low_priority_updates.
lower_case_file_system
This variable describes the case sensitivity of filenames
on the filesystem where the data directory is located.
OFF means filenames are case sensitive,
ON means they are not case sensitive.
This variable was added in MySQL 4.0.19.
lower_case_table_names
If set to 1 table names are stored in lowercase on disk and table name comparisons are not case sensitive. This variable was added in MySQL 3.23.6. If set to 2 (new in 4.0.18), table names are stored as given but compared in lowercase. From MySQL 4.0.2, this option also applies to database names. From 4.1.1, it also applies to table aliases. See Section 9.2.2, “Identifier Case Sensitivity”.
Note: If you are using
InnoDB tables, you should set this
variable to 1 on all platforms to force names to be
converted to lowercase.
You should not set this variable to 0
if you are running MySQL on a system that does not have
case-sensitive filenames (such as Windows or Mac OS X).
New in 4.0.18: If this variable is
not set at startup and the filesystem on which the data
directory is located does not have case-sensitive
filenames, MySQL automatically sets
lower_case_table_names to 2.
max_allowed_packet
The maximum size of one packet or any generated/intermediate string.
The packet message buffer is initialized to
net_buffer_length bytes, but can grow
up to max_allowed_packet bytes when
needed. This value by default is small, to catch large
(possibly incorrect) packets.
You must increase this value if you are using large
BLOB columns or long strings. It should
be as big as the largest BLOB you want
to use. The protocol limit for
max_allowed_packet is 16MB before MySQL
4.0 and 1GB thereafter.
max_binlog_cache_size
If a multiple-statement transaction requires more than
this many bytes of memory, the server generates a
Multi-statement transaction required more than
'max_binlog_cache_size' bytes of storage error.
The minimum value is 4096, the maximum and default values
are 4GB. This variable was added in MySQL 3.23.29.
max_binlog_size
If a write to the binary log causes the current log file size to exceed the value of this variable, the server rotates the binary logs (closes the current file and opens the next one). You cannot set this variable to more than 1GB or to less than 4096 bytes. (The minimum before MYSQL 4.0.14 is 1024 bytes.) The default value is 1GB. This variable was added in MySQL 3.23.33.
A transaction is written in one chunk to the binary log,
so it is never split between several binary logs.
Therefore, if you have big transactions, you might see
binary logs larger than
max_binlog_size.
If max_relay_log_size is 0, the value
of max_binlog_size applies to relay
logs as well. max_relay_log_size was
added in MySQL 4.0.14.
max_connect_errors
If there are more than this number of interrupted
connections from a host, that host is blocked from further
connections. You can unblock blocked hosts with the
FLUSH HOSTS statement.
The number of simultaneous client connections allowed. By
default, this is 100. See
Section A.1.2.6, “Too many connections”, for more
information.
MySQL Enterprise.
For notification that the maximum number of connections
is getting dangerously high and for advice on setting
the optimum value for max_connections
subscribe to the MySQL Network Monitoring and Advisory
Service. For more information, see
http://www.mysql.com/products/enterprise/advisors.html.
Increasing this value increases the number of file descriptors that mysqld requires. See Section 7.4.8, “How MySQL Opens and Closes Tables”, for comments on file descriptor limits.
max_delayed_threads
Do not start more than this number of threads to handle
INSERT DELAYED statements. If you try
to insert data into a new table after all INSERT
DELAYED threads are in use, the row is inserted
as if the DELAYED attribute wasn't
specified. If you set this to 0, MySQL never creates a
thread to handle DELAYED rows; in
effect, doing so disables DELAYED
entirely. This variable was added in MySQL 3.23.0.
max_error_count
The maximum number of error, warning, and note messages to
be stored for display by the SHOW
ERRORS or SHOW WARNINGS
statements. This variable was added in MySQL 4.1.0.
max_heap_table_size
This variable sets the maximum size to which
MEMORY (HEAP) tables
are allowed to grow. The value of the variable is used to
calculate MEMORY table
MAX_ROWS values. Setting this variable
has no effect on any existing MEMORY
table, unless the table is re-created with a statement
such as CREATE TABLE, or altered with
ALTER TABLE or TRUNCATE
TABLE. This variable was added in MySQL 3.23.0.
MySQL Enterprise.
Subscribers to the MySQL Network Monitoring and Advisory
Service receive recommendations for the optimum setting
for max_heap_table_size. For more
information see,
http://www.mysql.com/products/enterprise/advisors.html.
max_insert_delayed_threads
This variable is a synonym for
max_delayed_threads. It was added in
MySQL 4.0.19.
max_join_size
Do not allow SELECT statements that
probably need to examine more than
max_join_size rows (for single-table
statements) or row combinations (for multiple-table
statements) or that are likely to do more than
max_join_size disk seeks. By setting
this value, you can catch SELECT
statements where keys are not used properly and that would
probably take a long time. Set it if your users tend to
perform joins that lack a WHERE clause,
that take a long time, or that return millions of rows.
Setting this variable to a value other than
DEFAULT resets the value of
SQL_BIG_SELECTS to
0. If you set the
SQL_BIG_SELECTS value again, the
max_join_size variable is ignored.
If a query result is in the query cache, no result size check is performed, because the result has previously been computed and it does not burden the server to send it to the client.
This variable previously was named
sql_max_join_size.
max_length_for_sort_data
The cutoff on the size of index values that determines
which filesort algorithm to use. See
Section 7.2.9, “ORDER BY Optimization”. This variable was
added in MySQL 4.1.1
max_prepared_stmt_count
This variable limits the total number of prepared statements in the server. It can be used in environments where there is the potential for denial-of-service attacks based on running the server out of memory by preparing huge numbers of statements. The default value is 16,382. The allowable range of values is from 0 to 1 million. If the value is set lower than the current number of prepared statements, existing statements are not affected and can be used, but no new statements can be prepared until the current number drops below the limit. This variable was added in MySQL 4.1.19.
max_relay_log_size
If a write by a replication slave to its relay log causes
the current log file size to exceed the value of this
variable, the slave rotates the relay logs (closes the
current file and opens the next one). If
max_relay_log_size is 0, the server
uses max_binlog_size for both the
binary log and the relay log. If
max_relay_log_size is greater than 0,
it constrains the size of the relay log, which enables you
to have different sizes for the two logs. You must set
max_relay_log_size to between 4096
bytes and 1GB (inclusive), or to 0. The
default value is 0. This variable was
added in MySQL 4.0.14. See
Section 6.3, “Replication Implementation Details”.
max_seeks_for_key
Limit the assumed maximum number of seeks when looking up
rows based on a key. The MySQL optimizer assumes that no
more than this number of key seeks are required when
searching for matching rows in a table by scanning an
index, regardless of the actual cardinality of the index
(see Section 13.5.4.11, “SHOW INDEX Syntax”). By setting this to a
low value (say, 100), you can force MySQL to prefer
indexes instead of table scans.
This variable was added in MySQL 4.0.14.
max_sort_length
The number of bytes to use when sorting
BLOB or TEXT values.
Only the first max_sort_length bytes of
each value are used; the rest are ignored.
max_tmp_tables
The maximum number of temporary tables a client can keep open at the same time. (This option does not yet do anything.)
max_user_connections
The maximum number of simultaneous connections allowed to
any given MySQL account. A value of 0
means “no limit.” This variable was added in
MySQL 3.23.34.
This variable has only a global form.
max_write_lock_count
After this many write locks, allow some pending read lock requests to be processed in between. This variable was added in MySQL 3.23.7.
The block size to be used for MyISAM
index pages.
The default pointer size in bytes, to be used by
CREATE TABLE for
MyISAM tables when no
MAX_ROWS option is specified. This
variable cannot be less than 2 or larger than 7. The
default value is 4. This variable was
added in MySQL 4.1.2. See Section A.1.2.11, “The table is full”.
myisam_max_extra_sort_file_size
If the temporary file used for fast
MyISAM index creation would be larger
than using the key cache by the amount specified here,
prefer the key cache method. This is mainly used to force
long character keys in large tables to use the slower key
cache method to create the index. This variable was added
in MySQL 3.23.37. Note:
The value is given in megabytes before 4.0.3 and in bytes
thereafter.
myisam_max_sort_file_size
The maximum size of the temporary file that MySQL is
allowed to use while re-creating a
MyISAM index (during REPAIR
TABLE, ALTER TABLE, or
LOAD DATA INFILE). If the file size
would be larger than this value, the index is created
using the key cache instead, which is slower. This
variable was added in MySQL 3.23.37.
Note: The value is given
in megabytes before 4.0.3 and in bytes thereafter.
The default value is 2GB. If MyISAM
index files exceed this size and disk space is available,
increasing the value may help performance.
myisam_recover_options
The value of the --myisam-recover option.
See Section 5.2.2, “Command Options”. This variable was
added in MySQL 3.23.36.
myisam_repair_threads
If this value is greater than 1, MyISAM
table indexes are created in parallel (each index in its
own thread) during the Repair by
sorting process. The default value is 1.
Note: Multi-threaded repair is still beta-quality code. This variable was added in MySQL 4.0.13.
myisam_sort_buffer_size
The size of the buffer that is allocated when sorting
MyISAM indexes during a REPAIR
TABLE or when creating indexes with
CREATE INDEX or ALTER
TABLE. This variable was added in MySQL 3.23.16.
myisam_stats_method
How the server treats NULL values when
collecting statistics about the distribution of index
values for MyISAM tables. This variable
has two possible values, nulls_equal
and nulls_unequal. For
nulls_equal, all
NULL index values are considered equal
and form a single value group that has a size equal to the
number of NULL values. For
nulls_unequal, NULL
values are considered unequal, and each
NULL forms a distinct value group of
size 1.
The method that is used for generating table statistics
influences how the optimizer chooses indexes for query
execution, as described in
Section 7.4.7, “MyISAM Index Statistics Collection”.
This variable was added in MySQL 4.1.15/5.0.14. For older
versions, the statistics collection method is equivalent
to nulls_equal.
named_pipe
On Windows, indicates whether the server supports connections over named pipes. This variable was added in MySQL 3.23.50.
ndb_autoincrement_prefetch_sz
Determines the probability of gaps in an autoincremented
column. Set to 1 to minimize this. Set
to a high value for optimization — makes inserts
faster, but decreases the likelihood that consecutive
autoincrement numbers will be used in a batch of inserts.
Default value: 32. Mimimum value:
1.
ndb_cache_check_time
The number of milliseconds to wait before checking the
NDB query cache. Setting this to
0 (the default and minimum value) means
that the NDB query cache will be
checked for validation on every query.
The recommended maximum value for this variable is
1000, which means that the query cache
is checked once per second. A larger value means the
NDB query cache is less often checked
and invalidated due to updates on a different
mysqld. It is generally not desirable
to set this to a value greater than
2000.
ndb_force_send
Forces sending of buffers to NDB
immediately, without waiting for other threads. Defaults
to ON.
ndb_index_stat_cache_entries
Sets the granularity of the statistics by determining the
number of starting and ending keys to store in the
statistics memory cache. Zero means no caching takes
place; in this case, the data nodes are always queried
directly. Default value: 32.
ndb_index_stat_enable
Use NDB index statistics in query
optimization. Defaults to ON.
ndb_index_stat_update_freq
How often to query data nodes instead of the statistics
cache. For example, a value of 20 (the
default) means to direct every
20th query to the data nodes.
ndb_report_thresh_binlog_epoch_slip
This is a threshold on the number of epochs to be behind
before reporting binlog status. For example, a value of
3 (the default) means that if the
difference between which epoch has been received from the
storage nodes and which epoch has been applied to the
binlog is 3 or more, a status message will be sent to the
cluster log.
ndb_report_thresh_binlog_mem_usage
This is a threshold on the percentage of free memory
remaining before reporting binlog status. For example, a
value of 10 (the default) means that if
the amount of available memory for receiving binlog data
from the data nodes falls below 10%, a status message will
be sent to the cluster log.
ndb_use_exact_count
Forces NDB to use a count of records
during SELECT COUNT(*) query planning
to speed up this type of query. The default value is
ON. For faster queries overall, disable
this feature by setting the value of
ndb_use_exact_count to
OFF.
ndb_use_transactions
You can disable NDB transaction support
by setting this variable's values to
OFF (not recommended). The default is
ON.
net_buffer_length
Each client thread is associated with a connection buffer
and result buffer. Both begin with a size given by
net_buffer_length but are dynamically
enlarged up to max_allowed_packet bytes
as needed. The result buffer shrinks to
net_buffer_length after each SQL
statement.
This variable should not normally be changed, but if you
have very little memory, you can set it to the expected
length of statements sent by clients. If statements exceed
this length, the connection buffer is automatically
enlarged. The maximum value to which
net_buffer_length can be set is 1MB.
net_read_timeout
The number of seconds to wait for more data from a
connection before aborting the read. This timeout applies
only to TCP/IP connections, not to connections made via
Unix socket files, named pipes, or shared memory. When the
server is reading from the client,
net_read_timeout is the timeout value
controlling when to abort. When the server is writing to
the client, net_write_timeout is the
timeout value controlling when to abort. See also
slave_net_timeout. This variable was
added in MySQL 3.23.20.
net_retry_count
If a read on a communication port is interrupted, retry this many times before giving up. This value should be set quite high on FreeBSD because internal interrupts are sent to all threads. This variable was added in MySQL 3.23.7.
net_write_timeout
The number of seconds to wait for a block to be written to
a connection before aborting the write. This timeout
applies only to TCP/IP connections, not to connections
made via Unix socket files, named pipes, or shared memory.
See also net_read_timeout. This
variable was added in MySQL 3.23.20.
new
This variable is used in MySQL 4.0 to turn on some 4.1 behaviors. This variable was added in MySQL 4.0.12.
old_passwords
Whether the server should use pre-4.1-style passwords for MySQL user accounts. This variable was added in MySQL 4.1.1.
one_shot
This is not a variable, but it can be used when setting
some variables. It is described in
Section 13.5.3, “SET Syntax”.
open_files_limit
The number of files that the operating system allows
mysqld to open. This is the real value
allowed by the system and might be different from the
value you gave using the
--open-files-limit option to
mysqld or
mysqld_safe. The value is 0 on systems
where MySQL can't change the number of open files. This
variable was added in MySQL 3.23.20.
pid_file
The pathname of the process ID (PID) file. This variable
can be set with the --pid-file option.
This variable was added in MySQL 3.23.23.
port
The number of the port on which the server listens for
TCP/IP connections. This variable can be set with the
--port option.
preload_buffer_size
The size of the buffer that is allocated when preloading indexes. This variable was added in MySQL 4.1.1.
prepared_stmt_count
The current number of prepared statements. (The maximum
number of statements is given by the
max_prepared_stmt_count system
variable.) This variable was added in MySQL 4.1.19. In
MySQL 4.1.23, it was converted to the global
Prepared_stmt_count status variable.
protocol_version
The version of the client/server protocol used by the MySQL server. This variable was added in MySQL 3.23.18.
query_alloc_block_size
The allocation size of memory blocks that are allocated for objects created during statement parsing and execution. If you have problems with memory fragmentation, it might help to increase this a bit. This variable was added in MySQL 4.0.16.
query_cache_limit
Don't cache results that are larger than this number of bytes. The default value is 1MB. This variable was added in MySQL 4.0.1.
query_cache_min_res_unit
The minimum size for blocks allocated by the query cache. The default value is 4KB. Tuning information for this variable is given in Section 5.13.3, “Query Cache Configuration”. This variable is present from MySQL 4.1.
query_cache_size
The amount of memory allocated for caching query results.
The default value is 0, which disables
the query cache. The allowable values are multiples of
1024; other values are rounded down to the nearest
multiple. Note that query_cache_size
bytes of memory are allocated even if
query_cache_type is set to
0. This variable was added in MySQL
4.0.1.
query_cache_type
Set the query cache type. Setting the
GLOBAL value sets the type for all
clients that connect thereafter. Individual clients can
set the SESSION value to affect their
own use of the query cache.
| Option | Description |
0 or OFF
|
Don't cache results in or retrieve results from the query cache. Note
that this does not deallocate the query cache
buffer. To do that, you should set
query_cache_size to
0. |
1 or ON
|
Cache all query results except for those that begin with SELECT
SQL_NO_CACHE. |
2 or DEMAND
|
Cache results only for queries that begin with SELECT
SQL_CACHE. |
This variable was added in MySQL 4.0.3.
query_cache_wlock_invalidate
Normally, when one client acquires a
WRITE lock on a
MyISAM table, other clients are not
blocked from issuing statements that read from the table
if the query results are present in the query cache.
Setting this variable to 1 causes acquisition of a
WRITE lock for a table to invalidate
any queries in the query cache that refer to the table.
This forces other clients that attempt to access the table
to wait while the lock is in effect. This variable was
added in MySQL 4.0.19.
query_prealloc_size
The size of the persistent buffer used for statement
parsing and execution. This buffer is not freed between
statements. If you are running complex queries, a larger
query_prealloc_size value might be
helpful in improving performance, because it can reduce
the need for the server to perform memory allocation
during query execution operations.
This variable was added in MySQL 4.0.16.
range_alloc_block_size
The size of blocks that are allocated when doing range optimization. This variable was added in MySQL 4.0.16.
read_buffer_size
Each thread that does a sequential scan allocates a buffer of this size for each table it scans. If you do many sequential scans, you might want to increase this value.
read_buffer_size and
read_rnd_buffer_size are not specific
to any storage engine and apply in a general manner for
optimization. See Section 7.5.4, “How MySQL Uses Memory”, for
example.
Before MySQL 4.0.3, this variable was named
record_buffer.
read_only
When this variable is set to ON, the
server allows no updates except from users that have the
SUPER privilege or (on a slave server)
from updates performed by slave threads. On a slave
server, this can be useful to ensure that the slave
accepts updates only from its master server and not from
clients.
read_only exists only as a
GLOBAL variable, so changes to its
value require the SUPER privilege.
Changes to read_only on a master server
are not replicated to slave servers. The value can be set
on a slave server independent of the setting on the
master.
This variable was added in MySQL 4.0.14.
read_rnd_buffer_size
When reading rows in sorted order following a key-sorting
operation, the rows are read through this buffer to avoid
disk seeks. Setting the variable to a large value can
improve ORDER BY performance by a lot.
However, this is a buffer allocated for each client, so
you should not set the global variable to a large value.
Instead, change the session variable only from within
those clients that need to run large queries.
read_buffer_size and
read_rnd_buffer_size are not specific
to any storage engine and apply in a general manner for
optimization. See Section 7.5.4, “How MySQL Uses Memory”, for
example.
Before MySQL 4.0.3, this variable was named
record_rnd_buffer.
relay_log_purge
Disables or enables automatic purging of relay logs as
soon as they are not needed any more. The default value is
1 (ON). This variable was added in
MySQL 4.1.1.
safe_show_database
Do not show databases for which the user has no database
or table privileges. This can improve security if you are
concerned about people being able to see what databases
other users have. See also
skip_show_database.
This variable was removed in MySQL 4.0.5. Beginning with
this version, you should instead use the SHOW
DATABASES privilege to control access by MySQL
accounts to databases.
rpl_recovery_rank
This variable is unused.
secure_auth
If the MySQL server has been started with the
--secure-auth option, it blocks
connections from all accounts that have passwords stored
in the old (pre-4.1) format. In that case, the value of
this variable is ON, otherwise it is
OFF.
You should enable this option if you want to prevent all use of passwords in the old format (and hence insecure communication over the network). This variable was added in MySQL 4.1.1.
Server startup fails with an error if this option is enabled and the privilege tables are in pre-4.1 format.
server_id
The server ID. This value is set by the
--server-id option. It is used for
replication to enable master and slave servers to identify
themselves uniquely. This variable was added in MySQL
3.23.26.
shared_memory
(Windows only.) Whether the server allows shared-memory connections. This variable was added in MySQL 4.1.1.
shared_memory_base_name
(Windows only.) The name of shared memory to use for shared-memory connections. This is useful when running multiple MySQL instances on a single physical machine. This variable was added in MySQL 4.1.0.
This is OFF if
mysqld uses external locking,
ON if external locking is disabled.
Before MySQL 4.0.3, this variable was named
skip_locking.
skip_networking
This is ON if the server allows only
local (non-TCP/IP) connections. On Unix, local connections
use a Unix socket file. On Windows, local connections use
a named pipe or shared memory. On NetWare, only TCP/IP
connections are supported, so do not set this variable to
ON. This variable can be set to
ON with the
--skip-networking option. This variable
was added in MySQL 3.22.23.
skip_show_database
This prevents people from using the SHOW
DATABASES statement if they do not have the
SHOW DATABASES privilege. This can
improve security if you are concerned about people being
able to see what databases other users have. See also
safe_show_database. This variable was
added in MySQL 3.23.4. As of MySQL 4.0.2, its effect also
depends on the SHOW DATABASES
privilege: If the variable value is ON,
the SHOW DATABASES statement is allowed
only to users who have the SHOW
DATABASES privilege, and the statement displays
all database names. If the value is
OFF, SHOW DATABASES
is allowed to all users, but displays each database name
only if the user has the SHOW DATABASES
privilege or some privilege for the database. Note that
any global privilege is a privilege for the database.
slave_compressed_protocol
Whether to use compression of the master/slave protocol if both the slave and the master support it. This variable was added in MySQL 4.0.3.
slave_load_tmpdir
The name of the directory where the slave creates
temporary files for replicating LOAD DATA
INFILE statements. This variable was added in
MySQL 4.0.0.
slave_net_timeout
The number of seconds to wait for more data from a master/slave connection before aborting the read. This timeout applies only to TCP/IP connections, not to connections made via Unix socket files, named pipes, or shared memory. This variable was added in MySQL 3.23.40.
slave_skip_errors
The replication errors that the slave should skip (ignore). This variable was added in MySQL 3.23.47.
slave_transaction_retries
If a replication slave SQL thread fails to execute a
transaction because of an InnoDB
deadlock or InnoDB's
innodb_lock_wait_timeout or
NDB Cluster's
TransactionDeadlockDetectionTimeout or
TransactionInactiveTimeout was
exceeded, it automatically retries
slave_transaction_retries times before
stopping with an error. The default in MySQL 4.1 is
0. You must explicitly set the value to
greater than 0 to enable the “retry”
behavior, which is probably a good idea.
slow_launch_time
If creating a thread takes longer than this many seconds,
the server increments the
Slow_launch_threads status variable.
This variable was added in MySQL 3.23.15.
socket
On Unix platforms, this variable is the name of the socket
file that is used for local client connections. The
default is /tmp/mysql.sock. (For some
distribution formats, the directory might be different,
such as /var/lib/mysql for RPMs.)
On Windows, this variable is the name of the named pipe
that is used for local client connections. The default
value is MySQL (not case sensitive).
sort_buffer_size
Each thread that needs to do a sort allocates a buffer of
this size. Increase this value for faster ORDER
BY or GROUP BY operations.
See Section A.1.4.4, “Where MySQL Stores Temporary Files”.
sql_mode
The current server SQL mode. This variable was added in MySQL 3.23.41. It can be set dynamically as of MySQL 4.1.1. See Section 5.2.6, “SQL Modes”.
sql_slave_skip_counter
The number of events from the master that a slave server
should skip. See
Section 13.6.2.6, “SET GLOBAL SQL_SLAVE_SKIP_COUNTER Syntax”. This
variable was added in MySQL 3.23.33.
storage_engine
This variable is a synonym for
table_type. It was added in MySQL
4.1.2.
sync_binlog
If the value of this variable is positive, the MySQL
server synchronizes its binary log to disk (using
fdatasync()) after every
sync_binlog writes to the binary log.
Note that there is one write to the binary log per
statement if autocommit is enabled, and one write per
transaction otherwise. The default value is 0, which does
no synchronizing to disk. A value of 1 is the safest
choice, because in the event of a crash you lose at most
one statement or transaction from the binary log. However,
it is also the slowest choice (unless the disk has a
battery-backed cache, which makes synchronization very
fast). This variable was added in MySQL 4.1.3.
If the value of sync_binlog is 0 (the
default), no extra flushing is done. The server relies on
the operating system to flush the file contents
occasionaly as for any other file.
sync_frm
If this variable is set to 1, when any non-temporary table
is created its .frm file is
synchronized to disk (using
fdatasync()). This is slower but safer
in case of a crash. The default is 1. This was added as a
command-line option in MySQL 4.0.18. It is also a settable
global variable as of MySQL 4.1.3.
system_time_zone
The server system time zone. When the server begins
executing, it inherits a time zone setting from the
machine defaults, possibly modified by the environment of
the account used for running the server or the startup
script. The value is used to set
system_time_zone. Typically the time
zone is specified by the TZ environment
variable. It also can be specified using the
--timezone option of the
mysqld_safe script.
The system_time_zone variable differs
from time_zone. Although they might
have the same value, the latter variable is used to
initialize the time zone for each client that connects.
See Section 5.10.8, “MySQL Server Time Zone Support”.
system_time_zone was added in MySQL
4.1.3.
table_cache
The number of open tables for all threads. Increasing this
value increases the number of file descriptors that
mysqld requires. You can check whether
you need to increase the table cache by checking the
Opened_tables status variable. See
Section 5.2.5, “Status Variables”. If the value of
Opened_tables is large and you do not
do FLUSH TABLES often (which just
forces all tables to be closed and reopened), then you
should increase the value of the
table_cache variable. For more
information about the table cache, see
Section 7.4.8, “How MySQL Opens and Closes Tables”.
table_type
The default table type (storage engine). To set the table
type at server startup, use the
--default-table-type option. This
variable was added in MySQL 3.23.0. See
Section 5.2.2, “Command Options”.
thread_cache_size
How many threads the server should cache for reuse. When a
client disconnects, the client's threads are put in the
cache if there are fewer than
thread_cache_size threads there.
Requests for threads are satisfied by reusing threads
taken from the cache if possible, and only when the cache
is empty is a new thread created. This variable can be
increased to improve performance if you have a lot of new
connections. (Normally, this doesn't provide a notable
performance improvement if you have a good thread
implementation.) By examining the difference between the
Connections and
Threads_created status variables, you
can see how efficient the thread cache is. For details,
see Section 5.2.5, “Status Variables”. This
variable was added in MySQL 3.23.16.
thread_concurrency
On Solaris, mysqld calls
thr_setconcurrency() with this value.
This function enables applications to give the threads
system a hint about the desired number of threads that
should be run at the same time. This variable was added in
MySQL 3.23.7.
thread_stack
The stack size for each thread. Many of the limits
detected by the crash-me test are
dependent on this value. The default is large enough for
normal operation. See Section 7.1.4, “The MySQL Benchmark Suite”.
The default is 64KB before MySQL 4.0.10 and 192KB
thereafter.
time_format
This variable is not implemented.
time_zone
The current time zone. This variable is used to initialize
the time zone for each client that connects. By default,
the initial value of this is 'SYSTEM'
(which means, “use the value of
system_time_zone”). The value
can be specified explicitly at server startup with the
--default-time-zone option. See
Section 5.10.8, “MySQL Server Time Zone Support”. This variable was
added in MySQL 4.1.3.
timezone
The time zone for the server. This is set from the
TZ environment variable when
mysqld is started. The time zone also
can be set by giving a --timezone
argument to mysqld_safe. This variable
was added in MySQL 3.23.15. As of MySQL 4.1.3, it is
obsolete and has been replaced by the
system_time_zone variable. See
Section A.1.4.6, “Time Zone Problems”.
tmp_table_size
The maximum size of in-memory temporary tables. (The
actual limit is determined as the smaller of
max_heap_table_size and
tmp_table_size.) If an in-memory
temporary table exceeds the limit, MySQL automatically
converts it to an on-disk MyISAM table.
Increase the value of tmp_table_size
(and max_heap_table_size if necessary)
if you do many advanced GROUP BY
queries and you have lots of memory.
tmpdir
The directory used for temporary files and temporary
tables. Starting from MySQL 4.1, this variable can be set
to a list of several paths that are used in round-robin
fashion. Paths should be separated by colon characters
(‘:’) on Unix and semicolon
characters (‘;’) on
Windows, NetWare, and OS/2.
The multiple-directory feature can be used to spread the
load between several physical disks. If the MySQL server
is acting as a replication slave, you should not set
tmpdir to point to a directory on a
memory-based filesystem or to a directory that is cleared
when the server host restarts. A replication slave needs
some of its temporary files to survive a machine restart
so that it can replicate temporary tables or LOAD
DATA INFILE operations. If files in the
temporary file directory are lost when the server
restarts, replication fails. However, if you are using
MySQL 4.0.0 or later, you can set the slave's temporary
directory using the slave_load_tmpdir
variable. In that case, the slave won't use the general
tmpdir value and you can set
tmpdir to a non-permanent location.
This variable was added in MySQL 3.22.4.
transaction_alloc_block_size
The amount in bytes by which to increase a per-transaction
memory pool which needs memory. See the description of
transaction_prealloc_size. This
variable was added in MySQL 4.0.16.
transaction_prealloc_size
There is a per-transaction memory pool from which various
transaction-related allocations take memory. The initial
size of the pool in bytes is
transaction_prealloc_size. For every
allocation that cannot be satisfied from the pool because
it has insufficient memory available, the pool is
increased by
transaction_alloc_block_size bytes.
When the transaction ends, the pool is truncated to
transaction_prealloc_size bytes.
By making transaction_prealloc_size
sufficiently large to contain all statements within a
single transaction, you can avoid many
malloc() calls. This variable was added
in MySQL 4.0.16.
tx_isolation
The default transaction isolation level. This variable was added in MySQL 4.0.3.
This variable is set by the SET TRANSACTION
ISOLATION LEVEL statement. See
Section 13.4.6, “SET TRANSACTION Syntax”. If you set
tx_isolation directly to an isolation
level name that contains a space, the name should be
enclosed within quotes, with the space replaced by a dash.
For example:
SET tx_isolation = 'READ-COMMITTED';
version
The version number for the server.
version_bdb
The BDB storage engine version. This
variable was added in MySQL 3.23.31 with the name
bdb_version and renamed to
version_bdb in MySQL 4.1.1.
version_comment
The configure script has a
--with-comment option that allows a
comment to be specified when building MySQL. This variable
contains the value of that comment. This variable was
added in MySQL 4.0.17.
version_compile_machine
The type of machine or architecture on which MySQL was built. This variable was added in MySQL 4.1.1.
version_compile_os
The type of operating system on which MySQL was built. This variable was added in MySQL 4.0.19.
wait_timeout
The number of seconds the server waits for activity on a non-interactive connection before closing it. This timeout applies only to TCP/IP and Unix socket file connections, not to connections made via named pipes, or shared memory.
On thread startup, the session
wait_timeout value is initialized from
the global wait_timeout value or from
the global interactive_t
