Author: jstephens
Date: 2008-12-07 14:48:24 +0100 (Sun, 07 Dec 2008)
New Revision: 12826
Log:
Divide 5.0 Server Administration chapter file
Rebuild dependencies
Reformat
Added:
trunk/refman-5.0/dba-log-files.xml
trunk/refman-5.0/dba-multiple-servers.xml
trunk/refman-5.0/dba-mysqld-server-core.xml
trunk/refman-5.0/dba-privilege-system.xml
trunk/refman-5.0/dba-security-core.xml
trunk/refman-5.0/dba-user-management-core.xml
Removed:
trunk/refman-5.0/dba-core.xml
Renamed/Moved:
trunk/refman-5.0/dba.xml (from rev 12825, trunk/refman-5.0/dba-core.xml)
Modified:
trunk/mysqlqb/Makefile.depends
trunk/refman-5.0/Makefile.depends
trunk/refman-5.0/manual.xml
trunk/refman-common/Makefile.depends
trunk/topic-guides/topics-5.0/Makefile.depends
trunk/topic-guides/topics-common/Makefile.depends
Modified: trunk/mysqlqb/Makefile.depends
===================================================================
--- trunk/mysqlqb/Makefile.depends 2008-12-07 12:17:02 UTC (rev 12825)
+++ trunk/mysqlqb/Makefile.depends 2008-12-07 13:48:24 UTC (rev 12826)
Changed blocks: 1, Lines Added: 6, Lines Deleted: 1; 880 bytes
@@ -27,7 +27,12 @@
../refman-5.0/metadata/backup.idmap \
../refman-5.0/metadata/connectors-apis.idmap \
../refman-5.0/metadata/data-types.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
+ ../refman-5.0/metadata/dba-privilege-system.idmap \
+ ../refman-5.0/metadata/dba-security-core.idmap \
+ ../refman-5.0/metadata/dba-user-management-core.idmap \
+ ../refman-5.0/metadata/dba.idmap \
../refman-5.0/metadata/errors-problems.idmap \
../refman-5.0/metadata/extending-mysql.idmap \
../refman-5.0/metadata/information-schema.idmap \
Modified: trunk/refman-5.0/Makefile.depends
===================================================================
--- trunk/refman-5.0/Makefile.depends 2008-12-07 12:17:02 UTC (rev 12825)
+++ trunk/refman-5.0/Makefile.depends 2008-12-07 13:48:24 UTC (rev 12826)
Changed blocks: 58, Lines Added: 375, Lines Deleted: 95; 43698 bytes
@@ -10,7 +10,7 @@
../refman-5.0/metadata/apis-c.idmap \
../refman-5.0/metadata/apis-libmysqld.idmap \
../refman-5.0/metadata/connectors-apis.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
../refman-5.0/metadata/errors-problems.idmap \
../refman-5.0/metadata/functions-core.idmap \
../refman-5.0/metadata/internationalization.idmap \
@@ -59,7 +59,8 @@
backup_SOURCES = backup.xml $(backup_INCLUDES)
backup_IDMAPS = \
../refman-5.0/metadata/backup.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
../refman-5.0/metadata/errors-problems.idmap \
../refman-5.0/metadata/mysql-cluster-backup.idmap \
../refman-5.0/metadata/mysql-cluster.idmap \
@@ -221,7 +222,9 @@
../refman-5.0/metadata/apis-libmysqld.idmap \
../refman-5.0/metadata/connectors-apis.idmap \
../refman-5.0/metadata/data-types.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
+ ../refman-5.0/metadata/dba-security-core.idmap \
+ ../refman-5.0/metadata/dba-user-management-core.idmap \
../refman-5.0/metadata/errors-problems.idmap \
../refman-5.0/metadata/functions-core.idmap \
../refman-5.0/metadata/installing-core.idmap \
@@ -260,7 +263,7 @@
data_types_SOURCES = data-types.xml $(data_types_INCLUDES)
data_types_IDMAPS = \
../refman-5.0/metadata/data-types.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
../refman-5.0/metadata/errors-problems.idmap \
../refman-5.0/metadata/extending-mysql.idmap \
../refman-5.0/metadata/functions-core.idmap \
@@ -282,19 +285,161 @@
data-types-manprepped.xml: $(data_types_SOURCES) $(data_types_IDMAPS)
data-types-remprepped.xml: $(data_types_SOURCES) $(data_types_IDMAPS)
-dba_core_INCLUDES =
-dba_core_IMAGES =
-dba_core_SOURCES = dba-core.xml $(dba_core_INCLUDES)
-dba_core_IDMAPS =
-dba-core.validpure: $(dba_core_SOURCES)
-dba-core.titles: $(dba_core_SOURCES)
-dba-core.useless: $(dba_core_SOURCES)
-dba-core.valid: $(dba_core_SOURCES) $(dba_core_IDMAPS)
-dba-core.validwarn: $(dba_core_SOURCES) $(dba_core_IDMAPS)
-dba-core-prepped.xml: $(dba_core_SOURCES) $(dba_core_IDMAPS)
-dba-core-manprepped.xml: $(dba_core_SOURCES) $(dba_core_IDMAPS)
-dba-core-remprepped.xml: $(dba_core_SOURCES) $(dba_core_IDMAPS)
+dba_log_files_INCLUDES = \
+ ../common/fixedchars.ent \
+ ../common/phrases.ent \
+ ../refman-common/urls.ent \
+ all-entities.ent \
+ versions.ent
+dba_log_files_IMAGES =
+dba_log_files_SOURCES = dba-log-files.xml $(dba_log_files_INCLUDES)
+dba_log_files_IDMAPS = \
+ ../refman-5.0/metadata/backup.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
+ ../refman-5.0/metadata/errors-problems.idmap \
+ ../refman-5.0/metadata/programs-admin-util-core.idmap \
+ ../refman-5.0/metadata/programs-client-core.idmap \
+ ../refman-5.0/metadata/replication-implementation.idmap \
+ ../refman-5.0/metadata/replication-notes.idmap \
+ ../refman-5.0/metadata/replication-options-core.idmap \
+ ../refman-5.0/metadata/replication.idmap \
+ ../refman-5.0/metadata/sql-syntax-replication.idmap \
+ ../refman-5.0/metadata/sql-syntax-server-administration.idmap \
+ ../refman-5.0/metadata/stored-programs-views.idmap
+dba-log-files.validpure: $(dba_log_files_SOURCES)
+dba-log-files.titles: $(dba_log_files_SOURCES)
+dba-log-files.useless: $(dba_log_files_SOURCES)
+dba-log-files.valid: $(dba_log_files_SOURCES) $(dba_log_files_IDMAPS)
+dba-log-files.validwarn: $(dba_log_files_SOURCES) $(dba_log_files_IDMAPS)
+dba-log-files-prepped.xml: $(dba_log_files_SOURCES) $(dba_log_files_IDMAPS)
+dba-log-files-manprepped.xml: $(dba_log_files_SOURCES) $(dba_log_files_IDMAPS)
+dba-log-files-remprepped.xml: $(dba_log_files_SOURCES) $(dba_log_files_IDMAPS)
+dba_multiple_servers_INCLUDES = \
+ ../common/fixedchars.ent \
+ ../common/phrases.ent \
+ ../refman-common/urls.ent \
+ all-entities.ent \
+ versions.ent
+dba_multiple_servers_IMAGES =
+dba_multiple_servers_SOURCES = dba-multiple-servers.xml $(dba_multiple_servers_INCLUDES)
+dba_multiple_servers_IDMAPS = \
+ ../refman-5.0/metadata/apis-c.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
+ ../refman-5.0/metadata/dba-multiple-servers.idmap \
+ ../refman-5.0/metadata/installing-core.idmap \
+ ../refman-5.0/metadata/programs-server-core.idmap \
+ ../refman-5.0/metadata/programs-using.idmap \
+ ../refman-common/metadata/apis-perl.idmap
+dba-multiple-servers.validpure: $(dba_multiple_servers_SOURCES)
+dba-multiple-servers.titles: $(dba_multiple_servers_SOURCES)
+dba-multiple-servers.useless: $(dba_multiple_servers_SOURCES)
+dba-multiple-servers.valid: $(dba_multiple_servers_SOURCES) $(dba_multiple_servers_IDMAPS)
+dba-multiple-servers.validwarn: $(dba_multiple_servers_SOURCES) $(dba_multiple_servers_IDMAPS)
+dba-multiple-servers-prepped.xml: $(dba_multiple_servers_SOURCES) $(dba_multiple_servers_IDMAPS)
+dba-multiple-servers-manprepped.xml: $(dba_multiple_servers_SOURCES) $(dba_multiple_servers_IDMAPS)
+dba-multiple-servers-remprepped.xml: $(dba_multiple_servers_SOURCES) $(dba_multiple_servers_IDMAPS)
+
+dba_mysqld_server_core_INCLUDES =
+dba_mysqld_server_core_IMAGES =
+dba_mysqld_server_core_SOURCES = dba-mysqld-server-core.xml $(dba_mysqld_server_core_INCLUDES)
+dba_mysqld_server_core_IDMAPS =
+dba-mysqld-server-core.validpure: $(dba_mysqld_server_core_SOURCES)
+dba-mysqld-server-core.titles: $(dba_mysqld_server_core_SOURCES)
+dba-mysqld-server-core.useless: $(dba_mysqld_server_core_SOURCES)
+dba-mysqld-server-core.valid: $(dba_mysqld_server_core_SOURCES) $(dba_mysqld_server_core_IDMAPS)
+dba-mysqld-server-core.validwarn: $(dba_mysqld_server_core_SOURCES) $(dba_mysqld_server_core_IDMAPS)
+dba-mysqld-server-core-prepped.xml: $(dba_mysqld_server_core_SOURCES) $(dba_mysqld_server_core_IDMAPS)
+dba-mysqld-server-core-manprepped.xml: $(dba_mysqld_server_core_SOURCES) $(dba_mysqld_server_core_IDMAPS)
+dba-mysqld-server-core-remprepped.xml: $(dba_mysqld_server_core_SOURCES) $(dba_mysqld_server_core_IDMAPS)
+
+dba_privilege_system_INCLUDES = \
+ ../common/fixedchars.ent \
+ ../common/phrases.ent \
+ ../refman-common/urls.ent \
+ all-entities.ent \
+ versions.ent
+dba_privilege_system_IMAGES =
+dba_privilege_system_SOURCES = dba-privilege-system.xml $(dba_privilege_system_INCLUDES)
+dba_privilege_system_IDMAPS = \
+ ../refman-5.0/metadata/dba-privilege-system.idmap \
+ ../refman-5.0/metadata/dba-security-core.idmap \
+ ../refman-5.0/metadata/dba-user-management-core.idmap \
+ ../refman-5.0/metadata/errors-problems.idmap \
+ ../refman-5.0/metadata/functions-core.idmap \
+ ../refman-5.0/metadata/installing-core.idmap \
+ ../refman-5.0/metadata/optimization.idmap \
+ ../refman-5.0/metadata/programs-installation.idmap \
+ ../refman-5.0/metadata/programs-using.idmap \
+ ../refman-5.0/metadata/sql-syntax-server-administration.idmap \
+ ../refman-5.0/metadata/stored-programs-views.idmap \
+ ../refman-common/metadata/apis-php.idmap \
+ ../refman-common/metadata/bug-reports.idmap
+dba-privilege-system.validpure: $(dba_privilege_system_SOURCES)
+dba-privilege-system.titles: $(dba_privilege_system_SOURCES)
+dba-privilege-system.useless: $(dba_privilege_system_SOURCES)
+dba-privilege-system.valid: $(dba_privilege_system_SOURCES) $(dba_privilege_system_IDMAPS)
+dba-privilege-system.validwarn: $(dba_privilege_system_SOURCES) $(dba_privilege_system_IDMAPS)
+dba-privilege-system-prepped.xml: $(dba_privilege_system_SOURCES) $(dba_privilege_system_IDMAPS)
+dba-privilege-system-manprepped.xml: $(dba_privilege_system_SOURCES) $(dba_privilege_system_IDMAPS)
+dba-privilege-system-remprepped.xml: $(dba_privilege_system_SOURCES) $(dba_privilege_system_IDMAPS)
+
+dba_security_core_INCLUDES =
+dba_security_core_IMAGES =
+dba_security_core_SOURCES = dba-security-core.xml $(dba_security_core_INCLUDES)
+dba_security_core_IDMAPS =
+dba-security-core.validpure: $(dba_security_core_SOURCES)
+dba-security-core.titles: $(dba_security_core_SOURCES)
+dba-security-core.useless: $(dba_security_core_SOURCES)
+dba-security-core.valid: $(dba_security_core_SOURCES) $(dba_security_core_IDMAPS)
+dba-security-core.validwarn: $(dba_security_core_SOURCES) $(dba_security_core_IDMAPS)
+dba-security-core-prepped.xml: $(dba_security_core_SOURCES) $(dba_security_core_IDMAPS)
+dba-security-core-manprepped.xml: $(dba_security_core_SOURCES) $(dba_security_core_IDMAPS)
+dba-security-core-remprepped.xml: $(dba_security_core_SOURCES) $(dba_security_core_IDMAPS)
+
+dba_user_management_core_INCLUDES =
+dba_user_management_core_IMAGES =
+dba_user_management_core_SOURCES = dba-user-management-core.xml $(dba_user_management_core_INCLUDES)
+dba_user_management_core_IDMAPS =
+dba-user-management-core.validpure: $(dba_user_management_core_SOURCES)
+dba-user-management-core.titles: $(dba_user_management_core_SOURCES)
+dba-user-management-core.useless: $(dba_user_management_core_SOURCES)
+dba-user-management-core.valid: $(dba_user_management_core_SOURCES) $(dba_user_management_core_IDMAPS)
+dba-user-management-core.validwarn: $(dba_user_management_core_SOURCES) $(dba_user_management_core_IDMAPS)
+dba-user-management-core-prepped.xml: $(dba_user_management_core_SOURCES) $(dba_user_management_core_IDMAPS)
+dba-user-management-core-manprepped.xml: $(dba_user_management_core_SOURCES) $(dba_user_management_core_IDMAPS)
+dba-user-management-core-remprepped.xml: $(dba_user_management_core_SOURCES) $(dba_user_management_core_IDMAPS)
+
+dba_INCLUDES = \
+ ../common/fixedchars.ent \
+ ../common/phrases.ent \
+ ../dynamic-docs/command-optvars/mysqld.xml \
+ ../dynamic-docs/metadata-titles.en.xml \
+ ../refman-common/urls.ent \
+ all-entities.ent \
+ dba-log-files.xml \
+ dba-multiple-servers.xml \
+ dba-mysqld-server-core.xml \
+ dba-privilege-system.xml \
+ dba-security-core.xml \
+ dba-user-management-core.xml \
+ dynxml-local-dba-mysqld-server.xml \
+ dynxml-local-dba-security.xml \
+ dynxml-local-dba-user-management.xml \
+ versions.ent
+dba_IMAGES =
+dba_SOURCES = dba.xml $(dba_INCLUDES)
+dba_IDMAPS =
+dba.validpure: $(dba_SOURCES)
+dba.titles: $(dba_SOURCES)
+dba.useless: $(dba_SOURCES)
+dba.valid: $(dba_SOURCES) $(dba_IDMAPS)
+dba.validwarn: $(dba_SOURCES) $(dba_IDMAPS)
+dba-prepped.xml: $(dba_SOURCES) $(dba_IDMAPS)
+dba-manprepped.xml: $(dba_SOURCES) $(dba_IDMAPS)
+dba-remprepped.xml: $(dba_SOURCES) $(dba_IDMAPS)
+
dynxml_common_news_cj_INCLUDES = \
../common/fixedchars.ent \
../common/phrases.ent \
@@ -423,22 +568,24 @@
dynxml-common-news-vstudioplugin-manprepped.xml: $(dynxml_common_news_vstudioplugin_SOURCES) $(dynxml_common_news_vstudioplugin_IDMAPS)
dynxml-common-news-vstudioplugin-remprepped.xml: $(dynxml_common_news_vstudioplugin_SOURCES) $(dynxml_common_news_vstudioplugin_IDMAPS)
dynxml-common-news-vstudioplugin.xml: $(dynxml_common_news_vstudioplugin_INCLUDES)
-dynxml_local_dba_INCLUDES = \
+dynxml_local_dba_mysqld_server_INCLUDES = \
../common/fixedchars.ent \
../common/phrases.ent \
../dynamic-docs/command-optvars/mysqld.xml \
../dynamic-docs/metadata-titles.en.xml \
../refman-common/urls.ent \
all-entities.ent \
- dba-core.xml \
+ dba-mysqld-server-core.xml \
versions.ent
-dynxml_local_dba_IMAGES =
-dynxml_local_dba_SOURCES = dynxml-local-dba.xml $(dynxml_local_dba_INCLUDES)
-dynxml_local_dba_IDMAPS = \
- ../refman-5.0/metadata/apis-c.idmap \
- ../refman-5.0/metadata/backup.idmap \
+dynxml_local_dba_mysqld_server_IMAGES =
+dynxml_local_dba_mysqld_server_SOURCES = dynxml-local-dba-mysqld-server.xml $(dynxml_local_dba_mysqld_server_INCLUDES)
+dynxml_local_dba_mysqld_server_IDMAPS = \
../refman-5.0/metadata/data-types.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
+ ../refman-5.0/metadata/dba-privilege-system.idmap \
+ ../refman-5.0/metadata/dba-security-core.idmap \
+ ../refman-5.0/metadata/dba-user-management-core.idmap \
../refman-5.0/metadata/errors-problems.idmap \
../refman-5.0/metadata/extending-mysql.idmap \
../refman-5.0/metadata/faqs.idmap \
@@ -449,36 +596,89 @@
../refman-5.0/metadata/language-structure-core.idmap \
../refman-5.0/metadata/mysql-cluster-optvar-core.idmap \
../refman-5.0/metadata/optimization.idmap \
- ../refman-5.0/metadata/programs-admin-util-core.idmap \
- ../refman-5.0/metadata/programs-client-core.idmap \
- ../refman-5.0/metadata/programs-installation.idmap \
../refman-5.0/metadata/programs-server-core.idmap \
../refman-5.0/metadata/programs-using.idmap \
../refman-5.0/metadata/replication-implementation.idmap \
- ../refman-5.0/metadata/replication-notes.idmap \
../refman-5.0/metadata/replication-options-core.idmap \
- ../refman-5.0/metadata/replication.idmap \
../refman-5.0/metadata/se-bdb-core.idmap \
../refman-5.0/metadata/se-innodb-core.idmap \
../refman-5.0/metadata/se-myisam-core.idmap \
- ../refman-5.0/metadata/sql-syntax-replication.idmap \
../refman-5.0/metadata/sql-syntax-server-administration.idmap \
../refman-5.0/metadata/sql-syntax-transactions.idmap \
../refman-5.0/metadata/sql-syntax-utility.idmap \
../refman-5.0/metadata/storage-engines.idmap \
- ../refman-5.0/metadata/stored-programs-views.idmap \
- ../refman-common/metadata/apis-perl.idmap \
- ../refman-common/metadata/apis-php.idmap \
- ../refman-common/metadata/bug-reports.idmap
-dynxml-local-dba.validpure: $(dynxml_local_dba_SOURCES)
-dynxml-local-dba.titles: $(dynxml_local_dba_SOURCES)
-dynxml-local-dba.useless: $(dynxml_local_dba_SOURCES)
-dynxml-local-dba.valid: $(dynxml_local_dba_SOURCES) $(dynxml_local_dba_IDMAPS)
-dynxml-local-dba.validwarn: $(dynxml_local_dba_SOURCES) $(dynxml_local_dba_IDMAPS)
-dynxml-local-dba-prepped.xml: $(dynxml_local_dba_SOURCES) $(dynxml_local_dba_IDMAPS)
-dynxml-local-dba-manprepped.xml: $(dynxml_local_dba_SOURCES) $(dynxml_local_dba_IDMAPS)
-dynxml-local-dba-remprepped.xml: $(dynxml_local_dba_SOURCES) $(dynxml_local_dba_IDMAPS)
-dynxml-local-dba.xml: $(dynxml_local_dba_INCLUDES)
+ ../refman-5.0/metadata/stored-programs-views.idmap
+dynxml-local-dba-mysqld-server.validpure: $(dynxml_local_dba_mysqld_server_SOURCES)
+dynxml-local-dba-mysqld-server.titles: $(dynxml_local_dba_mysqld_server_SOURCES)
+dynxml-local-dba-mysqld-server.useless: $(dynxml_local_dba_mysqld_server_SOURCES)
+dynxml-local-dba-mysqld-server.valid: $(dynxml_local_dba_mysqld_server_SOURCES) $(dynxml_local_dba_mysqld_server_IDMAPS)
+dynxml-local-dba-mysqld-server.validwarn: $(dynxml_local_dba_mysqld_server_SOURCES) $(dynxml_local_dba_mysqld_server_IDMAPS)
+dynxml-local-dba-mysqld-server-prepped.xml: $(dynxml_local_dba_mysqld_server_SOURCES) $(dynxml_local_dba_mysqld_server_IDMAPS)
+dynxml-local-dba-mysqld-server-manprepped.xml: $(dynxml_local_dba_mysqld_server_SOURCES) $(dynxml_local_dba_mysqld_server_IDMAPS)
+dynxml-local-dba-mysqld-server-remprepped.xml: $(dynxml_local_dba_mysqld_server_SOURCES) $(dynxml_local_dba_mysqld_server_IDMAPS)
+dynxml-local-dba-mysqld-server.xml: $(dynxml_local_dba_mysqld_server_INCLUDES)
+dynxml_local_dba_security_INCLUDES = \
+ ../common/fixedchars.ent \
+ ../common/phrases.ent \
+ ../dynamic-docs/command-optvars/mysqld.xml \
+ ../dynamic-docs/metadata-titles.en.xml \
+ ../refman-common/urls.ent \
+ all-entities.ent \
+ dba-security-core.xml \
+ versions.ent
+dynxml_local_dba_security_IMAGES =
+dynxml_local_dba_security_SOURCES = dynxml-local-dba-security.xml $(dynxml_local_dba_security_INCLUDES)
+dynxml_local_dba_security_IDMAPS = \
+ ../refman-5.0/metadata/apis-c.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
+ ../refman-5.0/metadata/dba-privilege-system.idmap \
+ ../refman-5.0/metadata/dba-security-core.idmap \
+ ../refman-5.0/metadata/dba-user-management-core.idmap \
+ ../refman-5.0/metadata/extending-mysql.idmap \
+ ../refman-5.0/metadata/faqs.idmap \
+ ../refman-5.0/metadata/installing-core.idmap \
+ ../refman-5.0/metadata/optimization.idmap \
+ ../refman-5.0/metadata/sql-syntax-server-administration.idmap
+dynxml-local-dba-security.validpure: $(dynxml_local_dba_security_SOURCES)
+dynxml-local-dba-security.titles: $(dynxml_local_dba_security_SOURCES)
+dynxml-local-dba-security.useless: $(dynxml_local_dba_security_SOURCES)
+dynxml-local-dba-security.valid: $(dynxml_local_dba_security_SOURCES) $(dynxml_local_dba_security_IDMAPS)
+dynxml-local-dba-security.validwarn: $(dynxml_local_dba_security_SOURCES) $(dynxml_local_dba_security_IDMAPS)
+dynxml-local-dba-security-prepped.xml: $(dynxml_local_dba_security_SOURCES) $(dynxml_local_dba_security_IDMAPS)
+dynxml-local-dba-security-manprepped.xml: $(dynxml_local_dba_security_SOURCES) $(dynxml_local_dba_security_IDMAPS)
+dynxml-local-dba-security-remprepped.xml: $(dynxml_local_dba_security_SOURCES) $(dynxml_local_dba_security_IDMAPS)
+dynxml-local-dba-security.xml: $(dynxml_local_dba_security_INCLUDES)
+dynxml_local_dba_user_management_INCLUDES = \
+ ../common/fixedchars.ent \
+ ../common/phrases.ent \
+ ../dynamic-docs/command-optvars/mysqld.xml \
+ ../dynamic-docs/metadata-titles.en.xml \
+ ../refman-common/urls.ent \
+ all-entities.ent \
+ dba-user-management-core.xml \
+ versions.ent
+dynxml_local_dba_user_management_IMAGES =
+dynxml_local_dba_user_management_SOURCES = dynxml-local-dba-user-management.xml $(dynxml_local_dba_user_management_INCLUDES)
+dynxml_local_dba_user_management_IDMAPS = \
+ ../refman-5.0/metadata/apis-c.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
+ ../refman-5.0/metadata/dba-privilege-system.idmap \
+ ../refman-5.0/metadata/dba-user-management-core.idmap \
+ ../refman-5.0/metadata/functions-core.idmap \
+ ../refman-5.0/metadata/installing-core.idmap \
+ ../refman-5.0/metadata/programs-installation.idmap \
+ ../refman-5.0/metadata/programs-using.idmap \
+ ../refman-5.0/metadata/replication-options-core.idmap \
+ ../refman-5.0/metadata/sql-syntax-server-administration.idmap
+dynxml-local-dba-user-management.validpure: $(dynxml_local_dba_user_management_SOURCES)
+dynxml-local-dba-user-management.titles: $(dynxml_local_dba_user_management_SOURCES)
+dynxml-local-dba-user-management.useless: $(dynxml_local_dba_user_management_SOURCES)
+dynxml-local-dba-user-management.valid: $(dynxml_local_dba_user_management_SOURCES) $(dynxml_local_dba_user_management_IDMAPS)
+dynxml-local-dba-user-management.validwarn: $(dynxml_local_dba_user_management_SOURCES) $(dynxml_local_dba_user_management_IDMAPS)
+dynxml-local-dba-user-management-prepped.xml: $(dynxml_local_dba_user_management_SOURCES) $(dynxml_local_dba_user_management_IDMAPS)
+dynxml-local-dba-user-management-manprepped.xml: $(dynxml_local_dba_user_management_SOURCES) $(dynxml_local_dba_user_management_IDMAPS)
+dynxml-local-dba-user-management-remprepped.xml: $(dynxml_local_dba_user_management_SOURCES) $(dynxml_local_dba_user_management_IDMAPS)
+dynxml-local-dba-user-management.xml: $(dynxml_local_dba_user_management_INCLUDES)
dynxml_local_functions_INCLUDES = \
../common/fixedchars.ent \
../common/phrases.ent \
@@ -495,7 +695,9 @@
dynxml_local_functions_IDMAPS = \
../refman-5.0/metadata/apis-c.idmap \
../refman-5.0/metadata/data-types.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
+ ../refman-5.0/metadata/dba-privilege-system.idmap \
+ ../refman-5.0/metadata/dba-user-management-core.idmap \
../refman-5.0/metadata/errors-problems.idmap \
../refman-5.0/metadata/extending-mysql.idmap \
../refman-5.0/metadata/functions-core.idmap \
@@ -565,7 +767,12 @@
../refman-5.0/metadata/backup.idmap \
../refman-5.0/metadata/connectors-apis.idmap \
../refman-5.0/metadata/data-types.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
+ ../refman-5.0/metadata/dba-multiple-servers.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
+ ../refman-5.0/metadata/dba-privilege-system.idmap \
+ ../refman-5.0/metadata/dba-security-core.idmap \
+ ../refman-5.0/metadata/dba-user-management-core.idmap \
../refman-5.0/metadata/errors-problems.idmap \
../refman-5.0/metadata/extending-mysql.idmap \
../refman-5.0/metadata/faqs.idmap \
@@ -681,7 +888,7 @@
dynxml_local_language_structure_IDMAPS = \
../quick-guides/metadata/reservedwords-core.idmap \
../refman-5.0/metadata/apis-c.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
../refman-5.0/metadata/errors-problems.idmap \
../refman-5.0/metadata/functions-core.idmap \
../refman-5.0/metadata/internationalization.idmap \
@@ -711,7 +918,7 @@
dynxml_local_mysql_cluster_optvar_IMAGES =
dynxml_local_mysql_cluster_optvar_SOURCES = dynxml-local-mysql-cluster-optvar.xml $(dynxml_local_mysql_cluster_optvar_INCLUDES)
dynxml_local_mysql_cluster_optvar_IDMAPS = \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
../refman-5.0/metadata/mysql-cluster-configuration.idmap \
../refman-5.0/metadata/mysql-cluster-optvar-core.idmap
dynxml-local-mysql-cluster-optvar.validpure: $(dynxml_local_mysql_cluster_optvar_SOURCES)
@@ -738,7 +945,9 @@
dynxml_local_news_5_0_IDMAPS = \
../refman-5.0/metadata/apis-c.idmap \
../refman-5.0/metadata/data-types.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
+ ../refman-5.0/metadata/dba-user-management-core.idmap \
../refman-5.0/metadata/errors-problems.idmap \
../refman-5.0/metadata/extending-mysql.idmap \
../refman-5.0/metadata/functions-core.idmap \
@@ -795,7 +1004,11 @@
dynxml_local_programs_admin_util_SOURCES = dynxml-local-programs-admin-util.xml $(dynxml_local_programs_admin_util_INCLUDES)
dynxml_local_programs_admin_util_IDMAPS = \
../refman-5.0/metadata/backup.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
+ ../refman-5.0/metadata/dba-multiple-servers.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
+ ../refman-5.0/metadata/dba-security-core.idmap \
+ ../refman-5.0/metadata/dba-user-management-core.idmap \
../refman-5.0/metadata/information-schema.idmap \
../refman-5.0/metadata/installing-core.idmap \
../refman-5.0/metadata/internationalization.idmap \
@@ -832,7 +1045,10 @@
dynxml_local_programs_client_IDMAPS = \
../refman-5.0/metadata/apis-c.idmap \
../refman-5.0/metadata/backup.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
+ ../refman-5.0/metadata/dba-privilege-system.idmap \
+ ../refman-5.0/metadata/dba-user-management-core.idmap \
../refman-5.0/metadata/internationalization.idmap \
../refman-5.0/metadata/optimization.idmap \
../refman-5.0/metadata/programs-admin-util-core.idmap \
@@ -862,7 +1078,11 @@
dynxml_local_programs_server_IMAGES =
dynxml_local_programs_server_SOURCES = dynxml-local-programs-server.xml $(dynxml_local_programs_server_INCLUDES)
dynxml_local_programs_server_IDMAPS = \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
+ ../refman-5.0/metadata/dba-multiple-servers.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
+ ../refman-5.0/metadata/dba-privilege-system.idmap \
+ ../refman-5.0/metadata/dba-security-core.idmap \
../refman-5.0/metadata/installing-core.idmap \
../refman-5.0/metadata/programs-admin-util-core.idmap \
../refman-5.0/metadata/programs-server-core.idmap \
@@ -890,7 +1110,7 @@
dynxml_local_releasenotes_cs_5_0_SOURCES = dynxml-local-releasenotes-cs-5.0.xml $(dynxml_local_releasenotes_cs_5_0_INCLUDES)
dynxml_local_releasenotes_cs_5_0_IDMAPS = \
../ndbapi/metadata/mgm-api.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
../refman-5.0/metadata/information-schema.idmap \
../refman-5.0/metadata/installing-core.idmap \
../refman-5.0/metadata/internationalization.idmap \
@@ -925,7 +1145,7 @@
dynxml_local_releasenotes_es_5_0_SOURCES = dynxml-local-releasenotes-es-5.0.xml $(dynxml_local_releasenotes_es_5_0_INCLUDES)
dynxml_local_releasenotes_es_5_0_IDMAPS = \
../ndbapi/metadata/mgm-api.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
../refman-5.0/metadata/installing-core.idmap \
../refman-5.0/metadata/internationalization.idmap \
../refman-5.0/metadata/mysql-cluster-backup.idmap \
@@ -957,7 +1177,9 @@
dynxml_local_replication_options_IMAGES =
dynxml_local_replication_options_SOURCES = dynxml-local-replication-options.xml $(dynxml_local_replication_options_INCLUDES)
dynxml_local_replication_options_IDMAPS = \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
+ ../refman-5.0/metadata/dba-user-management-core.idmap \
../refman-5.0/metadata/errors-problems.idmap \
../refman-5.0/metadata/replication-implementation.idmap \
../refman-5.0/metadata/replication-notes.idmap \
@@ -986,7 +1208,8 @@
dynxml_local_se_bdb_SOURCES = dynxml-local-se-bdb.xml $(dynxml_local_se_bdb_INCLUDES)
dynxml_local_se_bdb_IDMAPS = \
../refman-5.0/metadata/backup.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
../refman-5.0/metadata/installing-core.idmap \
../refman-5.0/metadata/se-bdb-core.idmap \
../refman-5.0/metadata/sql-syntax-server-administration.idmap \
@@ -1014,7 +1237,8 @@
dynxml_local_se_innodb_IDMAPS = \
../refman-5.0/metadata/backup.idmap \
../refman-5.0/metadata/data-types.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
../refman-5.0/metadata/errors-problems.idmap \
../refman-5.0/metadata/installing-core.idmap \
../refman-5.0/metadata/news-5.0-core.idmap \
@@ -1046,7 +1270,8 @@
dynxml_local_se_myisam_SOURCES = dynxml-local-se-myisam.xml $(dynxml_local_se_myisam_INCLUDES)
dynxml_local_se_myisam_IDMAPS = \
../refman-5.0/metadata/backup.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-multiple-servers.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
../refman-5.0/metadata/errors-problems.idmap \
../refman-5.0/metadata/installing-core.idmap \
../refman-5.0/metadata/internationalization.idmap \
@@ -1102,7 +1327,11 @@
errors_problems_SOURCES = errors-problems.xml $(errors_problems_INCLUDES)
errors_problems_IDMAPS = \
../refman-5.0/metadata/apis-c.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
+ ../refman-5.0/metadata/dba-privilege-system.idmap \
+ ../refman-5.0/metadata/dba-security-core.idmap \
+ ../refman-5.0/metadata/dba.idmap \
../refman-5.0/metadata/errors-problems.idmap \
../refman-5.0/metadata/extending-mysql.idmap \
../refman-5.0/metadata/installing-core.idmap \
@@ -1138,7 +1367,9 @@
extending_mysql_IMAGES =
extending_mysql_SOURCES = extending-mysql.xml $(extending_mysql_INCLUDES)
extending_mysql_IDMAPS = \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
+ ../refman-5.0/metadata/dba.idmap \
../refman-5.0/metadata/errors-problems.idmap \
../refman-5.0/metadata/extending-mysql.idmap \
../refman-5.0/metadata/installing-core.idmap \
@@ -1175,7 +1406,9 @@
../ndbapi/metadata/overview.idmap \
../refman-5.0/metadata/apis-c.idmap \
../refman-5.0/metadata/data-types.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
+ ../refman-5.0/metadata/dba-security-core.idmap \
+ ../refman-5.0/metadata/dba-user-management-core.idmap \
../refman-5.0/metadata/errors-problems.idmap \
../refman-5.0/metadata/extending-mysql.idmap \
../refman-5.0/metadata/faqs.idmap \
@@ -1251,7 +1484,7 @@
information_schema_IMAGES =
information_schema_SOURCES = information-schema.xml $(information_schema_INCLUDES)
information_schema_IDMAPS = \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
../refman-5.0/metadata/faqs.idmap \
../refman-5.0/metadata/information-schema.idmap \
../refman-5.0/metadata/internationalization.idmap \
@@ -1321,7 +1554,7 @@
installing_version_IMAGES =
installing_version_SOURCES = installing-version.xml $(installing_version_INCLUDES)
installing_version_IDMAPS = \
- ../refman-5.0/metadata/dba-core.idmap
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap
installing-version.validpure: $(installing_version_SOURCES)
installing-version.titles: $(installing_version_SOURCES)
installing-version.useless: $(installing_version_SOURCES)
@@ -1341,7 +1574,7 @@
internationalization_SOURCES = internationalization.xml $(internationalization_INCLUDES)
internationalization_IDMAPS = \
../refman-5.0/metadata/data-types.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
../refman-5.0/metadata/faqs.idmap \
../refman-5.0/metadata/functions-core.idmap \
../refman-5.0/metadata/information-schema.idmap \
@@ -1379,7 +1612,10 @@
../refman-5.0/metadata/apis-c.idmap \
../refman-5.0/metadata/connectors-apis.idmap \
../refman-5.0/metadata/data-types.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
+ ../refman-5.0/metadata/dba-privilege-system.idmap \
+ ../refman-5.0/metadata/dba.idmap \
../refman-5.0/metadata/errors-problems.idmap \
../refman-5.0/metadata/faqs.idmap \
../refman-5.0/metadata/functions-core.idmap \
@@ -1752,14 +1988,22 @@
backup.xml \
connectors-apis.xml \
data-types.xml \
- dba-core.xml \
+ dba-log-files.xml \
+ dba-multiple-servers.xml \
+ dba-mysqld-server-core.xml \
+ dba-privilege-system.xml \
+ dba-security-core.xml \
+ dba-user-management-core.xml \
+ dba.xml \
dynxml-common-news-cj.xml \
dynxml-common-news-cmxj.xml \
dynxml-common-news-cnet.xml \
dynxml-common-news-codbc.xml \
dynxml-common-news-mysql-proxy.xml \
dynxml-common-news-vstudioplugin.xml \
- dynxml-local-dba.xml \
+ dynxml-local-dba-mysqld-server.xml \
+ dynxml-local-dba-security.xml \
+ dynxml-local-dba-user-management.xml \
dynxml-local-functions.xml \
dynxml-local-installing.xml \
dynxml-local-language-structure.xml \
@@ -2039,7 +2283,13 @@
../refman-5.0/metadata/backup.idmap \
../refman-5.0/metadata/connectors-apis.idmap \
../refman-5.0/metadata/data-types.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
+ ../refman-5.0/metadata/dba-multiple-servers.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
+ ../refman-5.0/metadata/dba-privilege-system.idmap \
+ ../refman-5.0/metadata/dba-security-core.idmap \
+ ../refman-5.0/metadata/dba-user-management-core.idmap \
+ ../refman-5.0/metadata/dba.idmap \
../refman-5.0/metadata/errors-problems.idmap \
../refman-5.0/metadata/extending-mysql.idmap \
../refman-5.0/metadata/faqs.idmap \
@@ -2164,7 +2414,7 @@
mysql_cluster_configuration_IMAGES =
mysql_cluster_configuration_SOURCES = mysql-cluster-configuration.xml $(mysql_cluster_configuration_INCLUDES)
mysql_cluster_configuration_IDMAPS = \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
../refman-5.0/metadata/installing-core.idmap \
../refman-5.0/metadata/mysql-cluster-backup.idmap \
../refman-5.0/metadata/mysql-cluster-configuration.idmap \
@@ -2262,7 +2512,7 @@
../ndbapi/metadata/mgm-api.idmap \
../ndbapi/metadata/ndb-errors.idmap \
../ndbapi/metadata/ndb-internals.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
../refman-5.0/metadata/mysql-cluster-backup.idmap \
../refman-5.0/metadata/mysql-cluster-configuration.idmap \
../refman-5.0/metadata/mysql-cluster-management.idmap \
@@ -2411,7 +2661,7 @@
../refman-common/images/published/cluster-security-network-3.png
mysql_cluster_security_SOURCES = mysql-cluster-security.xml $(mysql_cluster_security_INCLUDES)
mysql_cluster_security_IDMAPS = \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-security-core.idmap \
../refman-5.0/metadata/mysql-cluster-configuration.idmap \
../refman-5.0/metadata/mysql-cluster-security.idmap \
../refman-5.0/metadata/mysql-cluster-utilities.idmap
@@ -2528,7 +2778,8 @@
../ndbapi/metadata/ndb-errors.idmap \
../ndbapi/metadata/ndb-internals.idmap \
../ndbapi/metadata/ndbapi.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
+ ../refman-5.0/metadata/dba-security-core.idmap \
../refman-5.0/metadata/faqs.idmap \
../refman-5.0/metadata/installing-core.idmap \
../refman-5.0/metadata/mysql-cluster-backup.idmap \
@@ -2627,7 +2878,9 @@
news_IDMAPS = \
../refman-5.0/metadata/apis-c.idmap \
../refman-5.0/metadata/data-types.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
+ ../refman-5.0/metadata/dba-user-management-core.idmap \
../refman-5.0/metadata/errors-problems.idmap \
../refman-5.0/metadata/extending-mysql.idmap \
../refman-5.0/metadata/functions-core.idmap \
@@ -2680,7 +2933,8 @@
../refman-5.0/metadata/apis-c.idmap \
../refman-5.0/metadata/backup.idmap \
../refman-5.0/metadata/connectors-apis.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
../refman-5.0/metadata/errors-problems.idmap \
../refman-5.0/metadata/extending-mysql.idmap \
../refman-5.0/metadata/functions-core.idmap \
@@ -2720,7 +2974,7 @@
precision_math_IMAGES =
precision_math_SOURCES = precision-math.xml $(precision_math_INCLUDES)
precision_math_IDMAPS = \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
../refman-5.0/metadata/precision-math.idmap
precision-math.validpure: $(precision_math_SOURCES)
precision-math.titles: $(precision_math_SOURCES)
@@ -2844,7 +3098,9 @@
programs_using_IMAGES =
programs_using_SOURCES = programs-using.xml $(programs_using_INCLUDES)
programs_using_IDMAPS = \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-multiple-servers.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
+ ../refman-5.0/metadata/dba-user-management-core.idmap \
../refman-5.0/metadata/installing-core.idmap \
../refman-5.0/metadata/mysql-cluster-configuration.idmap \
../refman-5.0/metadata/mysql-cluster-multi-computer.idmap \
@@ -2891,7 +3147,12 @@
programs_IDMAPS = \
../refman-5.0/metadata/apis-c.idmap \
../refman-5.0/metadata/backup.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
+ ../refman-5.0/metadata/dba-multiple-servers.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
+ ../refman-5.0/metadata/dba-privilege-system.idmap \
+ ../refman-5.0/metadata/dba-security-core.idmap \
+ ../refman-5.0/metadata/dba-user-management-core.idmap \
../refman-5.0/metadata/information-schema.idmap \
../refman-5.0/metadata/installing-core.idmap \
../refman-5.0/metadata/internationalization.idmap \
@@ -2950,7 +3211,7 @@
releasenotes_cs_SOURCES = releasenotes-cs.xml $(releasenotes_cs_INCLUDES)
releasenotes_cs_IDMAPS = \
../ndbapi/metadata/mgm-api.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
../refman-5.0/metadata/information-schema.idmap \
../refman-5.0/metadata/installing-core.idmap \
../refman-5.0/metadata/installing-version.idmap \
@@ -3000,7 +3261,7 @@
releasenotes_es_SOURCES = releasenotes-es.xml $(releasenotes_es_INCLUDES)
releasenotes_es_IDMAPS = \
../ndbapi/metadata/mgm-api.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
../refman-5.0/metadata/installing-core.idmap \
../refman-5.0/metadata/installing-version.idmap \
../refman-5.0/metadata/internationalization.idmap \
@@ -3034,7 +3295,9 @@
replication_configuration_IMAGES =
replication_configuration_SOURCES = replication-configuration.xml $(replication_configuration_INCLUDES)
replication_configuration_IDMAPS = \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
+ ../refman-5.0/metadata/dba-user-management-core.idmap \
../refman-5.0/metadata/errors-problems.idmap \
../refman-5.0/metadata/optimization.idmap \
../refman-5.0/metadata/replication-configuration.idmap \
@@ -3062,7 +3325,7 @@
replication_implementation_IMAGES =
replication_implementation_SOURCES = replication-implementation.xml $(replication_implementation_INCLUDES)
replication_implementation_IDMAPS = \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
../refman-5.0/metadata/optimization.idmap \
../refman-5.0/metadata/replication-notes.idmap \
../refman-5.0/metadata/replication-options-core.idmap \
@@ -3085,7 +3348,8 @@
replication_notes_IMAGES =
replication_notes_SOURCES = replication-notes.xml $(replication_notes_INCLUDES)
replication_notes_IDMAPS = \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
../refman-5.0/metadata/errors-problems.idmap \
../refman-5.0/metadata/functions-core.idmap \
../refman-5.0/metadata/replication-implementation.idmap \
@@ -3139,7 +3403,7 @@
../refman-common/images/published/submaster-performance.png
replication_solutions_SOURCES = replication-solutions.xml $(replication_solutions_INCLUDES)
replication_solutions_IDMAPS = \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-user-management-core.idmap \
../refman-5.0/metadata/programs-client-core.idmap \
../refman-5.0/metadata/replication-configuration.idmap \
../refman-5.0/metadata/replication-solutions.idmap \
@@ -3181,7 +3445,9 @@
../refman-common/images/published/submaster-performance.png
replication_SOURCES = replication.xml $(replication_INCLUDES)
replication_IDMAPS = \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
+ ../refman-5.0/metadata/dba-user-management-core.idmap \
../refman-5.0/metadata/errors-problems.idmap \
../refman-5.0/metadata/functions-core.idmap \
../refman-5.0/metadata/mysql-cluster.idmap \
@@ -3366,7 +3632,7 @@
se_memory_IMAGES =
se_memory_SOURCES = se-memory.xml $(se_memory_INCLUDES)
se_memory_IDMAPS = \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
../refman-5.0/metadata/optimization.idmap \
../refman-5.0/metadata/sql-syntax-data-manipulation.idmap
se-memory.validpure: $(se_memory_SOURCES)
@@ -3471,7 +3737,8 @@
../refman-4.1/metadata/sql-syntax-data-definition.idmap \
../refman-5.0/metadata/apis-c.idmap \
../refman-5.0/metadata/data-types.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
+ ../refman-5.0/metadata/dba-user-management-core.idmap \
../refman-5.0/metadata/errors-problems.idmap \
../refman-5.0/metadata/extending-mysql.idmap \
../refman-5.0/metadata/functions-core.idmap \
@@ -3522,7 +3789,9 @@
sql_syntax_data_manipulation_IDMAPS = \
../refman-5.0/metadata/apis-c.idmap \
../refman-5.0/metadata/data-types.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
+ ../refman-5.0/metadata/dba-privilege-system.idmap \
+ ../refman-5.0/metadata/dba-security-core.idmap \
../refman-5.0/metadata/errors-problems.idmap \
../refman-5.0/metadata/extending-mysql.idmap \
../refman-5.0/metadata/functions-core.idmap \
@@ -3581,7 +3850,7 @@
sql_syntax_replication_IMAGES =
sql_syntax_replication_SOURCES = sql-syntax-replication.xml $(sql_syntax_replication_INCLUDES)
sql_syntax_replication_IDMAPS = \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
../refman-5.0/metadata/functions-core.idmap \
../refman-5.0/metadata/replication-configuration.idmap \
../refman-5.0/metadata/replication-options-core.idmap \
@@ -3609,7 +3878,11 @@
../refman-5.0/metadata/backup.idmap \
../refman-5.0/metadata/connectors-apis.idmap \
../refman-5.0/metadata/data-types.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
+ ../refman-5.0/metadata/dba-privilege-system.idmap \
+ ../refman-5.0/metadata/dba-user-management-core.idmap \
+ ../refman-5.0/metadata/dba.idmap \
../refman-5.0/metadata/errors-problems.idmap \
../refman-5.0/metadata/extending-mysql.idmap \
../refman-5.0/metadata/information-schema.idmap \
@@ -3653,7 +3926,8 @@
sql_syntax_transactions_IDMAPS = \
../refman-5.0/metadata/apis-c.idmap \
../refman-5.0/metadata/connectors-apis.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
../refman-5.0/metadata/errors-problems.idmap \
../refman-5.0/metadata/functions-core.idmap \
../refman-5.0/metadata/introduction.idmap \
@@ -3681,7 +3955,7 @@
sql_syntax_utility_IMAGES =
sql_syntax_utility_SOURCES = sql-syntax-utility.xml $(sql_syntax_utility_INCLUDES)
sql_syntax_utility_IDMAPS = \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
../refman-5.0/metadata/optimization.idmap \
../refman-5.0/metadata/sql-syntax-data-definition.idmap \
../refman-5.0/metadata/sql-syntax-server-administration.idmap \
@@ -3749,7 +4023,9 @@
storage_engines_IDMAPS = \
../refman-5.0/metadata/backup.idmap \
../refman-5.0/metadata/data-types.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
+ ../refman-5.0/metadata/dba-multiple-servers.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
../refman-5.0/metadata/errors-problems.idmap \
../refman-5.0/metadata/faqs.idmap \
../refman-5.0/metadata/installing-core.idmap \
@@ -3792,7 +4068,8 @@
stored_programs_views_IDMAPS = \
../refman-5.0/metadata/apis-c.idmap \
../refman-5.0/metadata/backup.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-log-files.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
../refman-5.0/metadata/faqs.idmap \
../refman-5.0/metadata/functions-core.idmap \
../refman-5.0/metadata/information-schema.idmap \
@@ -3824,7 +4101,7 @@
stored_routines_SOURCES = stored-routines.xml $(stored_routines_INCLUDES)
stored_routines_IDMAPS = \
../refman-5.0/metadata/apis-c.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
../refman-5.0/metadata/faqs.idmap \
../refman-5.0/metadata/functions-core.idmap \
../refman-5.0/metadata/information-schema.idmap \
@@ -3879,7 +4156,10 @@
tutorial_SOURCES = tutorial.xml $(tutorial_INCLUDES)
tutorial_IDMAPS = \
../refman-5.0/metadata/data-types.idmap \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
+ ../refman-5.0/metadata/dba-privilege-system.idmap \
+ ../refman-5.0/metadata/dba-security-core.idmap \
+ ../refman-5.0/metadata/dba.idmap \
../refman-5.0/metadata/errors-problems.idmap \
../refman-5.0/metadata/functions-core.idmap \
../refman-5.0/metadata/installing-core.idmap \
@@ -3913,7 +4193,7 @@
views_IMAGES =
views_SOURCES = views.xml $(views_INCLUDES)
views_IDMAPS = \
- ../refman-5.0/metadata/dba-core.idmap \
+ ../refman-5.0/metadata/dba-mysqld-server-core.idmap \
../refman-5.0/metadata/faqs.idmap \
../refman-5.0/metadata/information-schema.idmap \
../refman-5.0/metadata/programs-installation.idmap \
Added: trunk/refman-5.0/dba-log-files.xml
===================================================================
--- trunk/refman-5.0/dba-log-files.xml (rev 0)
+++ trunk/refman-5.0/dba-log-files.xml 2008-12-07 13:48:24 UTC (rev 12826)
Changed blocks: 1, Lines Added: 1042, Lines Deleted: 0; 38835 bytes
@@ -0,0 +1,1042 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+<!ENTITY % all.entities SYSTEM "all-entities.ent">
+ %all.entities;
+]>
+<section id="log-files">
+
+ <title>MySQL Server Logs</title>
+
+ <indexterm>
+ <primary>log files</primary>
+ </indexterm>
+
+ <para>
+ MySQL has several different logs that can help you find out what is
+ going on inside <command>mysqld</command>:
+ </para>
+
+ <informaltable>
+ <tgroup cols="2">
+ <colspec colwidth="30*"/>
+ <colspec colwidth="70*"/>
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Log Type</emphasis></entry>
+ <entry><emphasis role="bold">Information Written to Log</emphasis></entry>
+ </row>
+ <row>
+ <entry>The error log</entry>
+ <entry>Problems encountered starting, running, or stopping
+ <command>mysqld</command></entry>
+ </row>
+ <row>
+ <entry>The general query log</entry>
+ <entry>Established client connections and statements received from clients</entry>
+ </row>
+ <row>
+ <entry>The binary log</entry>
+ <entry>All statements that change data (also used for replication)</entry>
+ </row>
+ <row>
+ <entry>The slow query log</entry>
+ <entry>All queries that took more than
+ <literal role="sysvar">long_query_time</literal> seconds to
+ execute or didn't use indexes</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>
+ By default, all log files are created in the
+ <command>mysqld</command> data directory. You can force
+ <command>mysqld</command> to close and reopen the log files (or in
+ some cases switch to a new log) by flushing the logs. Log flushing
+ occurs when you issue a <literal role="stmt" condition="flush">FLUSH
+ LOGS</literal> statement or execute <command>mysqladmin
+ flush-logs</command> or <command>mysqladmin refresh</command>. See
+ <xref linkend="flush"/>, and <xref linkend="mysqladmin"/>.
+ </para>
+
+ <para>
+ If you are using MySQL replication capabilities, slave replication
+ servers maintain additional log files called relay logs.
+ <xref linkend="replication"/>, discusses relay log contents and
+ configuration.
+ </para>
+
+ <formalpara role="mnmas">
+
+ <title>MySQL Enterprise</title>
+
+ <para>
+ The MySQL Enterprise Monitor provides a number of advisors
+ specifically related to the various log files. For more
+ information see <ulink url="advisors.html"/>.
+ </para>
+
+ </formalpara>
+
+ <section id="error-log">
+
+ <title>The Error Log</title>
+
+ <para>
+ The error log contains information indicating when
+ <command>mysqld</command> was started and stopped and also any
+ critical errors that occur while the server is running. If
+ <command>mysqld</command> notices a table that needs to be
+ automatically checked or repaired, it writes a message to the
+ error log.
+ </para>
+
+ <para>
+ On some operating systems, the error log contains a stack trace if
+ <command>mysqld</command> dies. The trace can be used to determine
+ where <command>mysqld</command> died. See
+ <ulink url="http://forge.mysql.com/wiki/MySQL_Internals_Porting">MySQL
+ Internals: Porting</ulink>.
+ </para>
+
+ <para>
+ You can specify where <command>mysqld</command> writes the error
+ log with the
+ <option>--log-error[=<replaceable>file_name</replaceable>]</option>
+ option. If no <replaceable>file_name</replaceable> value is given,
+ <command>mysqld</command> uses the name
+ <filename><replaceable>host_name</replaceable>.err</filename> by
+ default and writes the file in the data directory. If you execute
+ <literal role="stmt" condition="flush">FLUSH LOGS</literal>, the
+ error log is renamed with the suffix <literal>-old</literal> and
+ <command>mysqld</command> creates a new empty log file. (No
+ renaming occurs if the <option>--log-error</option> option was not
+ given to <command>mysqld</command>.)
+ </para>
+
+ <para>
+ If you do not specify <option>--log-error</option>, or (on
+ Windows) if you use the <option>--console</option> option, errors
+ are written to <literal>stderr</literal>, the standard error
+ output. Usually this is your terminal.
+ </para>
+
+ <para>
+ On Windows, error output is always written to the
+ <literal>.err</literal> file if <option>--console</option> is not
+ given.
+ </para>
+
+ <para>
+ The <option>--log-warnings</option> option or
+ <literal role="sysvar">log_warnings</literal> system variable can
+ be used to control warning logging to the error log. The default
+ value is enabled (1). Warning logging can be disabled using a
+ value of 0. If the value is greater than 1, aborted connections
+ are written to the error log. See
+ <xref linkend="communication-errors"/>.
+ </para>
+
+ <para>
+ If you use <command>mysqld_safe</command> to start
+ <command>mysqld</command>, <command>mysqld_safe</command> arranges
+ for <command>mysqld</command> to write error messages to a log
+ file. If you specify a filename via <option>--log-error</option>
+ to <command>mysqld_safe</command> or <command>mysqld</command>,
+ that filename is used. Otherwise, <command>mysqld_safe</command>
+ uses the default error log file.
+ </para>
+
+ <para>
+ If <command>mysqld_safe</command> is used to start
+ <command>mysqld</command> and <command>mysqld</command> dies
+ unexpectedly, <command>mysqld_safe</command> notices that it needs
+ to restart <command>mysqld</command> and writes a
+ <literal>restarted mysqld</literal> message to the error log.
+ </para>
+
+ </section>
+
+ <section id="query-log">
+
+ <title>The General Query Log</title>
+
+ <indexterm>
+ <primary>general query log</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>files</primary>
+ <secondary>general query log</secondary>
+ </indexterm>
+
+ <para>
+ The general query log is a general record of what
+ <command>mysqld</command> is doing. The server writes information
+ to this log when clients connect or disconnect, and it logs each
+ SQL statement received from clients. The general query log can be
+ very useful when you suspect an error in a client and want to know
+ exactly what the client sent to <command>mysqld</command>.
+ </para>
+
+ <para>
+ <command>mysqld</command> writes statements to the query log in
+ the order that it receives them, which might differ from the order
+ in which they are executed. This logging order contrasts to the
+ binary log, for which statements are written after they are
+ executed but before any locks are released. (Also, the query log
+ contains all statements, whereas the binary log does not contain
+ statements that only select data.)
+ </para>
+
+ <para>
+ To enable the general query log, start <command>mysqld</command>
+ with the
+ <option>--log[=<replaceable>file_name</replaceable>]</option> or
+ <option>-l [<replaceable>file_name</replaceable>]</option> option.
+ </para>
+
+ <para>
+ If no <replaceable>file_name</replaceable> value is given for
+ <option>--log</option> or <option>-l</option>, the default name is
+ <filename><replaceable>host_name</replaceable>.log</filename> in
+ the data directory.
+ </para>
+
+ <para>
+ Server restarts and log flushing do not cause a new general query
+ log file to be generated (although flushing closes and reopens
+ it). On Unix, you can rename the file and create a new one by
+ using the following commands:
+ </para>
+
+<programlisting>
+shell> <userinput>mv <replaceable>host_name</replaceable>.log <replaceable>host_name</replaceable>-old.log</userinput>
+shell> <userinput>mysqladmin flush-logs</userinput>
+shell> <userinput>cp <replaceable>host_name</replaceable>-old.log <replaceable>backup-directory</replaceable></userinput>
+shell> <userinput>rm <replaceable>host_name</replaceable>-old.log</userinput>
+</programlisting>
+
+ <para>
+ Before 5.0.17, you cannot rename a log file on Windows while the
+ server has it open. You must stop the server and rename the file,
+ and then restart the server to create a new log file. As of
+ 5.0.17, this applies only to the error log. However, a stop and
+ restart can be avoided by using
+ <literal role="stmt" condition="flush">FLUSH LOGS</literal>, which
+ causes the server to rename the error log with an
+ <filename>-old</filename> suffix and open a new error log.
+ </para>
+
+ </section>
+
+ <section id="binary-log">
+
+ <title>The Binary Log</title>
+
+ <indexterm>
+ <primary>binary log</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>files</primary>
+ <secondary>binary log</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>files</primary>
+ <secondary>update log (obsolete)</secondary>
+ </indexterm>
+
+ <para>
+ The binary log contains all statements that update data or
+ potentially could have updated it (for example, a
+ <literal role="stmt">DELETE</literal> which matched no rows).
+ Statements are stored in the form of <quote>events</quote> that
+ describe the modifications. The binary log also contains
+ information about how long each statement took that updated data.
+ The binary log has two important purposes:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ For replication, the binary log is used on master replication
+ servers as a record of the statements to be sent to slave
+ servers. The master server sends the events contained in its
+ binary log to its slaves, which execute those events to make
+ the same data changes that were made on the master. See
+ <xref linkend="replication-implementation"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Certain data recovery operations require use of the binary
+ log. After a backup file has been restored, the events in the
+ binary log that were recorded after the backup was made are
+ re-executed. These events bring databases up to date from the
+ point of the backup. See
+ <xref linkend="recovery-from-backups"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <note>
+ <para>
+ The binary log has replaced the old update log, which is no
+ longer available as of MySQL 5.0. The binary log contains all
+ information that is available in the update log in a more
+ efficient format and in a manner that is transaction-safe. If
+ you are using transactions, you must use the MySQL binary log
+ for backups instead of the old update log.
+ </para>
+ </note>
+
+ <para>
+ For information about server options and variables affecting the
+ operation of binary logging, see
+ <xref linkend="replication-options-binary-log"/>.
+ </para>
+
+ <para>
+ The binary log is not used for statements such as
+ <literal role="stmt">SELECT</literal> or <literal>SHOW</literal>
+ that do not modify data. If you want to log all statements (for
+ example, to identify a problem query), use the general query log.
+ See <xref linkend="query-log"/>.
+ </para>
+
+ <formalpara role="mnmas">
+
+ <title>MySQL Enterprise</title>
+
+ <para>
+ The binary log can also be used to track significant DDL events.
+ Analyzing the binary log in this way is an integral part of the
+ MySQL Enterprise Monitor. For more information, see
+ <ulink url="advisors.html"/>.
+ </para>
+
+ </formalpara>
+
+ <para>
+ Running the server with the binary log enabled makes performance
+ about 1% slower. However, the benefits of the binary log for
+ restore operations and in allowing you to set up replication
+ generally outweigh this minor performance decrement.
+ </para>
+
+ <para>
+ When started with the
+ <option>--log-bin[=<replaceable>base_name</replaceable>]</option>
+ option, <command>mysqld</command> writes a log file containing all
+ SQL statements that update data (both DDL and DML statements). If
+ no <replaceable>base_name</replaceable> value is given, the
+ default name is the value of the <literal>pid-file</literal>
+ option (which by default is the name of host machine) followed by
+ <literal>-bin</literal>. If the basename is given, but not as an
+ absolute pathname, the server writes the file in the data
+ directory. It is recommended that you specify a basename; see
+ <xref linkend="open-bugs"/>, for the reason.
+ </para>
+
+ <note>
+ <para>
+ From MySQL 5.0.41 through 5.0.52, <quote>mysql</quote> was used
+ when no <replaceable>base_name</replaceable> was specified. Also
+ in these versions, a path given as part of the
+ <option>--log-bin</option> options was treated as absolute
+ rather than relative. The previous behaviors were restored in
+ MySQL 5.0.54. (See Bug #28603 and Bug #28597.)
+ </para>
+ </note>
+
+ <para>
+ If you supply an extension in the log name (for example,
+ <option>--log-bin=<replaceable>base_name.extension</replaceable></option>),
+ the extension is silently removed and ignored.
+ </para>
+
+ <para>
+ <command>mysqld</command> appends a numeric extension to the
+ binary log basename to generate binary log filenames. The number
+ increases each time the server creates a new log file, thus
+ creating an ordered series of files. The server creates a new file
+ in the series each time it starts or flushes the logs. The server
+ also creates a new binary log file automatically when the current
+ log's size reaches
+ <literal role="sysvar">max_binlog_size</literal>. A binary log
+ file may become larger than
+ <literal role="sysvar">max_binlog_size</literal> if you are using
+ large transactions because a transaction is written to the file in
+ one piece, never split between files.
+ </para>
+
+ <para>
+ To keep track of which binary log files have been used,
+ <command>mysqld</command> also creates a binary log index file
+ that contains the names of all used binary log files. By default,
+ this has the same basename as the binary log file, with the
+ extension <literal>'.index'</literal>. You can change the name of
+ the binary log index file with the
+ <option>--log-bin-index[=<replaceable>file_name</replaceable>]</option>
+ option. You should not manually edit this file while
+ <command>mysqld</command> is running; doing so would confuse
+ <command>mysqld</command>.
+ </para>
+
+ <para>
+ You can delete all binary log files with the
+ <literal role="stmt">RESET MASTER</literal> statement, or a subset
+ of them with <literal role="stmt">PURGE BINARY LOGS</literal>. See
+ <xref linkend="reset"/>, and <xref linkend="purge-binary-logs"/>.
+ </para>
+
+ <para>
+ Writes to the binary log file and binary log index file are
+ handled in the same way as writes to <literal>MyISAM</literal>
+ tables. See <xref linkend="full-disk"/>.
+ </para>
+
+ <para>
+ The binary log format has some known limitations that can affect
+ recovery from backups. See <xref linkend="replication-features"/>.
+ </para>
+
+ <para>
+ Binary logging for stored routines and triggers is done as
+ described in <xref linkend="stored-programs-logging"/>.
+ </para>
+
+ <para>
+ A replication slave server by default does not write to its own
+ binary log any data modifications that are received from the
+ replication master. To log these modifications, start the slave
+ with the <option>--log-slave-updates</option> option (see also
+ <xref linkend="replication-options-slave"/>).
+ </para>
+
+ <formalpara>
+
+ <title>Evaluation of update selection options</title>
+
+ <para>
+ The server evaluates the options for logging or ignoring updates
+ to the binary log according to the following rules:
+ </para>
+
+ </formalpara>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ Are there <option>--binlog-do-db</option> or
+ <option>--binlog-ignore-db</option> rules?
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ No: Write the statement to the binary log and exit.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Yes: Go to the next step.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ There are some rules (<option>--binlog-do-db</option>,
+ <option>--binlog-ignore-db</option>, or both). Is there a
+ default database (has any database been selected by
+ <literal role="stmt">USE</literal>?)?
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ No: Do <emphasis>not</emphasis> write the statement, and
+ exit.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Yes: Go to the next step.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ There is a default database. Are there some
+ <option>--binlog-do-db</option> rules?
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Yes: Does the default database match any of the
+ <option>--binlog-do-db</option> rules?
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Yes: Write the statement and exit.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ No: Do <emphasis>not</emphasis> write the statement,
+ and exit.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ No: Go to the next step.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ There are some <option>--binlog-ignore-db</option> rules. Does
+ the default database match any of the
+ <option>--binlog-ignore-db</option> rules?
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Yes: Do not write the statement, and exit.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ No: Write the query and exit.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ </orderedlist>
+
+ <important>
+ <para>
+ An exception is made in the rules just given for the
+ <literal role="stmt">CREATE DATABASE</literal>,
+ <literal role="stmt">ALTER DATABASE</literal>, and
+ <literal role="stmt">DROP DATABASE</literal> statements (see
+ <xref linkend="replication-options-binary-log"/>). In those
+ cases, the database being <emphasis>created, altered, or
+ dropped</emphasis> replaces the default database when
+ determining whether to log or ignore updates.
+ </para>
+ </important>
+
+ <para>
+ For example, a slave running with only
+ <option>--binlog-do-db=sales</option> does not write to the binary
+ log any statement for which the default database is different from
+ <literal>sales</literal> (in other words,
+ <option>--binlog-do-db</option> can sometimes mean <quote>ignore
+ other databases</quote>).
+ </para>
+
+ <para>
+ If you are using replication, you should not delete old binary log
+ files until you are sure that no slave still needs to use them.
+ For example, if your slaves never run more than three days behind,
+ once a day you can execute <command>mysqladmin
+ flush-logs</command> on the master and then remove any logs that
+ are more than three days old. You can remove the files manually,
+ but it is preferable to use <literal role="stmt">PURGE BINARY
+ LOGS</literal>, which also safely updates the binary log index
+ file for you (and which can take a date argument). See
+ <xref linkend="purge-binary-logs"/>.
+ </para>
+
+ <para>
+ A client that has the <literal role="priv">SUPER</literal>
+ privilege can disable binary logging of its own statements by
+ using a <literal>SET sql_log_bin=0</literal> statement. See
+ <xref linkend="server-session-variables"/>.
+ </para>
+
+ <para>
+ You can display the contents of binary log files with the
+ <command>mysqlbinlog</command> utility. This can be useful when
+ you want to reprocess statements in the log. For example, you can
+ update a MySQL server from the binary log as follows:
+ </para>
+
+<programlisting>
+shell> <userinput>mysqlbinlog <replaceable>log_file</replaceable> | mysql -h <replaceable>server_name</replaceable></userinput>
+</programlisting>
+
+ <para>
+ See <xref linkend="mysqlbinlog"/>, for more information on the
+ <command>mysqlbinlog</command> utility and how to use it.
+ <command>mysqlbinlog</command> also can be used with relay log
+ files because they are written using the same format as binary log
+ files.
+ </para>
+
+ <para>
+ Binary logging is done immediately after a statement completes but
+ before any locks are released or any commit is done. This ensures
+ that the log is logged in execution order.
+ </para>
+
+ <para>
+ Updates to non-transactional tables are stored in the binary log
+ immediately after execution. In MySQL 5.0.53 and earlier versions
+ of MySQL ¤t-series;, an
+ <literal role="stmt">UPDATE</literal> statement using a stored
+ function that modified a non-transactional table was not logged if
+ it failed, and an <literal>INSERT ... ON DUPLICATE KEY
+ UPDATE</literal> statement that encountered a duplicate key
+ constraint — but which did not actually change any data
+ — was not logged. Beginning with MySQL 5.0.54, both of these
+ statements are written to the binary log. (Bug #23333)
+ </para>
+
+ <para>
+ Within an uncommitted transaction, all updates
+ (<literal role="stmt">UPDATE</literal>,
+ <literal role="stmt">DELETE</literal>, or
+ <literal role="stmt">INSERT</literal>) that change transactional
+ tables such as <literal>BDB</literal> or <literal>InnoDB</literal>
+ tables are cached until a <literal role="stmt">COMMIT</literal>
+ statement is received by the server. At that point,
+ <command>mysqld</command> writes the entire transaction to the
+ binary log before the <literal role="stmt">COMMIT</literal> is
+ executed. When the thread that handles the transaction starts, it
+ allocates a buffer of
+ <literal role="sysvar">binlog_cache_size</literal> to buffer
+ statements. If a statement is bigger than this, the thread opens a
+ temporary file to store the transaction. The temporary file is
+ deleted when the thread ends.
+ </para>
+
+ <para>
+ Modifications to non-transactional tables cannot be rolled back.
+ If a transaction that is rolled back includes modifications to
+ non-transactional tables, the entire transaction is logged with a
+ <literal role="stmt" condition="commit">ROLLBACK</literal>
+ statement at the end to ensure that the modifications to those
+ tables are replicated.
+ </para>
+
+ <para>
+ The <literal role="statvar">Binlog_cache_use</literal> status
+ variable shows the number of transactions that used this buffer
+ (and possibly a temporary file) for storing statements. The
+ <literal role="statvar">Binlog_cache_disk_use</literal> status
+ variable shows how many of those transactions actually had to use
+ a temporary file. These two variables can be used for tuning
+ <literal role="sysvar">binlog_cache_size</literal> to a large
+ enough value that avoids the use of temporary files.
+ </para>
+
+ <para>
+ The <literal role="sysvar">max_binlog_cache_size</literal> system
+ variable (default 4GB, which is also the maximum) can be used to
+ restrict the total size used to cache a multiple-statement
+ transaction. If a transaction is larger than this many bytes, it
+ fails and rolls back. The minimum value is 4096.
+ </para>
+
+ <para>
+ Note that the binary log format is different in MySQL
+ ¤t-series; from previous versions of MySQL, due to
+ enhancements in replication. See
+ <xref linkend="replication-compatibility"/>.
+ </para>
+
+ <para>
+ By default, the binary log is not synchronized to disk at each
+ write. So if the operating system or machine (not only the MySQL
+ server) crashes, there is a chance that the last statements of the
+ binary log are lost. To prevent this, you can make the binary log
+ be synchronized to disk after every <replaceable>N</replaceable>
+ writes to the binary log, with the <literal>sync_binlog</literal>
+ system variable. See <xref linkend="server-system-variables"/>. 1
+ is the safest value for <literal>sync_binlog</literal>, but also
+ the slowest. Even with <literal>sync_binlog</literal> set to 1,
+ there is still the chance of an inconsistency between the table
+ content and binary log content in case of a crash. For example, if
+ you are using <literal>InnoDB</literal> tables and the MySQL
+ server processes a <literal role="stmt">COMMIT</literal>
+ statement, it writes the whole transaction to the binary log and
+ then commits this transaction into <literal>InnoDB</literal>. If
+ the server crashes between those two operations, the transaction
+ is rolled back by <literal>InnoDB</literal> at restart but still
+ exists in the binary log. This problem can be solved with the
+ <option>--innodb-safe-binlog</option> option, which adds
+ consistency between the content of <literal>InnoDB</literal>
+ tables and the binary log. (Note:
+ <option>--innodb-safe-binlog</option> is unneeded as of MySQL 5.0;
+ it was made obsolete by the introduction of XA transaction
+ support.)
+ </para>
+
+ <para>
+ For this option to provide a greater degree of safety, the MySQL
+ server should also be configured to synchronize the binary log and
+ the <literal>InnoDB</literal> logs to disk at every transaction.
+ The <literal>InnoDB</literal> logs are synchronized by default,
+ and <literal>sync_binlog=1</literal> can be used to synchronize
+ the binary log. The effect of this option is that at restart after
+ a crash, after doing a rollback of transactions, the MySQL server
+ cuts rolled back <literal>InnoDB</literal> transactions from the
+ binary log. This ensures that the binary log reflects the exact
+ data of <literal>InnoDB</literal> tables, and so, that the slave
+ remains in synchrony with the master (not receiving a statement
+ which has been rolled back).
+ </para>
+
+ <para>
+ Note that <option>--innodb-safe-binlog</option> can be used even
+ if the MySQL server updates other storage engines than
+ <literal>InnoDB</literal>. Only statements and transactions that
+ affect <literal>InnoDB</literal> tables are subject to removal
+ from the binary log at <literal>InnoDB</literal>'s crash recovery.
+ If the MySQL server discovers at crash recovery that the binary
+ log is shorter than it should have been, it lacks at least one
+ successfully committed <literal>InnoDB</literal> transaction. This
+ should not happen if <literal>sync_binlog=1</literal> and the
+ disk/filesystem do an actual sync when they are requested to (some
+ don't), so the server prints an error message <literal>The binary
+ log <name> is shorter than its expected size</literal>. In
+ this case, this binary log is not correct and replication should
+ be restarted from a fresh snapshot of the master's data.
+ </para>
+
+ <para>
+ For MySQL 5.0.46, the session values of the following system
+ variables are written to the binary log and honored by the
+ replication slave when parsing the binary log:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal role="sysvar">sql_mode</literal>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal role="sysvar">foreign_key_checks</literal>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal role="sysvar">unique_checks</literal>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal role="sysvar">character_set_client</literal>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal role="sysvar">collation_connection</literal>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal role="sysvar">collation_database</literal>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal role="sysvar">collation_server</literal>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal role="sysvar">sql_auto_is_null</literal>
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </section>
+
+ <section id="slow-query-log">
+
+ <title>The Slow Query Log</title>
+
+ <indexterm>
+ <primary>slow query log</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>files</primary>
+ <secondary>slow query log</secondary>
+ </indexterm>
+
+ <para>
+ The slow query log consists of all SQL statements that took more
+ than <literal role="sysvar">long_query_time</literal> seconds to
+ execute. The time to acquire the initial table locks is not
+ counted as execution time. <command>mysqld</command> writes a
+ statement to the slow query log after it has been executed and
+ after all locks have been released, so log order might be
+ different from execution order. The minimum and default values of
+ <literal role="sysvar">long_query_time</literal> are 1 and 10,
+ respectively.
+ </para>
+
+ <para>
+ To enable the slow query log, start <command>mysqld</command> with
+ the
+ <option>--log-slow-queries[=<replaceable>file_name</replaceable>]</option>
+ option.
+ </para>
+
+ <para>
+ If no <replaceable>file_name</replaceable> value is given for
+ <option>--log-slow-queries</option>, the default name is
+ <filename><replaceable>host_name</replaceable>-slow.log</filename>.
+ If a filename is given, but not as an absolute pathname, the
+ server writes the file in the data directory.
+ </para>
+
+ <para>
+ The slow query log can be used to find queries that take a long
+ time to execute and are therefore candidates for optimization.
+ However, examining a long slow query log can become a difficult
+ task. To make this easier, you can process the slow query log
+ using the <command>mysqldumpslow</command> command to summarize
+ the queries that appear in the log. Use <command>mysqldumpslow
+ --help</command> to see the options that this command supports.
+ </para>
+
+ <para>
+ In MySQL ¤t-series;, queries that do not use indexes are
+ logged in the slow query log if the
+ <option>--log-queries-not-using-indexes</option> option is
+ specified. See <xref linkend="server-options"/>.
+ </para>
+
+ <formalpara role="mnmas">
+
+ <title>MySQL Enterprise</title>
+
+ <para>
+ Excessive table scans are indicative of missing or poorly
+ optimized indexes. Using an advisor specifically designed for
+ the task, the MySQL Enterprise Monitor can identify such
+ problems and offer advice on resolution. For more information,
+ see <ulink url="advisors.html"/>.
+ </para>
+
+ </formalpara>
+
+ <para>
+ In MySQL ¤t-series;, the
+ <option>--log-slow-admin-statements</option> server option enables
+ you to request logging of slow administrative statements such as
+ <literal role="stmt">OPTIMIZE TABLE</literal>,
+ <literal role="stmt">ANALYZE TABLE</literal>, and
+ <literal role="stmt">ALTER TABLE</literal> to the slow query log.
+ </para>
+
+ <para>
+ Queries handled by the query cache are not added to the slow query
+ log, nor are queries that would not benefit from the presence of
+ an index because the table has zero rows or one row.
+ </para>
+
+ <para>
+ Replication slaves do not write replicated queries to the slow
+ query log, even if the same queries were written to the slow query
+ log on the master. This is a known issue which we intend to fix in
+ a future version of MySQL. (Bug #23300)
+ </para>
+
+ </section>
+
+ <section id="log-file-maintenance">
+
+ <title>Server Log Maintenance</title>
+
+ <indexterm>
+ <primary>files</primary>
+ <secondary>log</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>maintaining</primary>
+ <secondary>log files</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>log files</primary>
+ <secondary>maintaining</secondary>
+ </indexterm>
+
+ <para>
+ MySQL Server can create a number of different log files that make
+ it easy to see what is going on. See <xref linkend="log-files"/>.
+ However, you must clean up these files regularly to ensure that
+ the logs do not take up too much disk space.
+ </para>
+
+ <para>
+ When using MySQL with logging enabled, you may want to back up and
+ remove old log files from time to time and tell MySQL to start
+ logging to new files. See <xref linkend="backup"/>.
+ </para>
+
+ <para>
+ On a Linux (Red Hat) installation, you can use the
+ <literal>mysql-log-rotate</literal> script for this. If you
+ installed MySQL from an RPM distribution, this script should have
+ been installed automatically. You should be careful with this
+ script if you are using the binary log for replication. You should
+ not remove binary logs until you are certain that their contents
+ have been processed by all slaves.
+ </para>
+
+ <para>
+ On other systems, you must install a short script yourself that
+ you start from <command>cron</command> (or its equivalent) for
+ handling log files.
+ </para>
+
+ <para>
+ For the binary log, you can set the
+ <literal role="sysvar">expire_logs_days</literal> system variable
+ to expire binary log files automatically after a given number of
+ days (see <xref linkend="server-system-variables"/>). If you are
+ using replication, you should set the variable no lower than the
+ maximum number of days your slaves might lag behind the master.
+ </para>
+
+ <para>
+ You can force MySQL to start using new log files by issuing a
+ <literal role="stmt" condition="flush">FLUSH LOGS</literal>
+ statement or executing <command>mysqladmin flush-logs</command> or
+ <command>mysqladmin refresh</command>. See
+ <xref linkend="flush"/>, and <xref linkend="mysqladmin"/>.
+ </para>
+
+ <para>
+ A log flushing operation does the following:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ If general query logging (<option>--log</option>) or slow
+ query logging (<option>--log-slow-queries</option>) to a log
+ file is enabled, the server closes and reopens the general
+ query log file or slow query log file.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ If binary logging (<option>--log-bin</option>) is used, the
+ server closes the current log file and opens a new log file
+ with the next sequence number.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ If the server was given an error log filename with the
+ <option>--log-error</option> option, it renames the error log
+ with the suffix <literal>-old</literal> and creates a new
+ empty error log file.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ The server creates a new binary log file when you flush the logs.
+ However, it just closes and reopens the general and slow query log
+ files. To cause new files to be created on Unix, rename the
+ current logs before flushing them. At flush time, the server will
+ open new logs with the original names. For example, if the general
+ and slow query logs are named <filename>mysql.log</filename> and
+ <filename>mysql-slow.log</filename>, you can use a series of
+ commands like this:
+ </para>
+
+<programlisting>
+shell> <userinput>cd <replaceable>mysql-data-directory</replaceable></userinput>
+shell> <userinput>mv mysql.log mysql.old</userinput>
+shell> <userinput>mv mysql-slow.log mysql-slow.old</userinput>
+shell> <userinput>mysqladmin flush-logs</userinput>
+</programlisting>
+
+ <para>
+ At this point, you can make a backup of
+ <filename>mysql.old</filename> and
+ <filename>mysql-slow.log</filename> and then remove them from
+ disk.
+ </para>
+
+ <para>
+ Before 5.0.17, you cannot rename a log file on Windows while the
+ server has it open. You must stop the server and rename the file,
+ and then restart the server to create a new log file. As of
+ 5.0.17, this applies only to the error log. However, a stop and
+ restart can be avoided by using
+ <literal role="stmt" condition="flush">FLUSH LOGS</literal>, which
+ causes the server to rename the error log with an
+ <filename>-old</filename> suffix and open a new error log.
+ </para>
+
+ <para>
+ The session <literal role="sysvar">sql_log_off</literal> variable
+ can be set to <literal>ON</literal> or <literal>OFF</literal> to
+ disable or enable general query logging for the current
+ connection.
+ </para>
+
+ </section>
+
+</section>
Added: trunk/refman-5.0/dba-multiple-servers.xml
===================================================================
--- trunk/refman-5.0/dba-multiple-servers.xml (rev 0)
+++ trunk/refman-5.0/dba-multiple-servers.xml 2008-12-07 13:48:24 UTC (rev 12826)
Changed blocks: 1, Lines Added: 932, Lines Deleted: 0; 32323 bytes
@@ -0,0 +1,932 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+<!ENTITY % all.entities SYSTEM "all-entities.ent">
+ %all.entities;
+]>
+<section id="multiple-servers">
+
+ <title>Running Multiple MySQL Servers on the Same Machine</title>
+
+ <indexterm>
+ <primary>post-install</primary>
+ <secondary>multiple servers</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>Starting many servers</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>multiple servers</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>servers</primary>
+ <secondary>multiple</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>running</primary>
+ <secondary>multiple servers</secondary>
+ </indexterm>
+
+ <para>
+ In some cases, you might want to run multiple
+ <command>mysqld</command> servers on the same machine. You might
+ want to test a new MySQL release while leaving your existing
+ production setup undisturbed. Or you might want to give different
+ users access to different <command>mysqld</command> servers that
+ they manage themselves. (For example, you might be an Internet
+ Service Provider that wants to provide independent MySQL
+ installations for different customers.)
+ </para>
+
+ <para>
+ To run multiple servers on a single machine, each server must have
+ unique values for several operating parameters. These can be set on
+ the command line or in option files. See
+ <xref linkend="program-options"/>.
+ </para>
+
+ <para>
+ At least the following options must be different for each server:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <option>--port=<replaceable>port_num</replaceable></option>
+ </para>
+
+ <para>
+ <option>--port</option> controls the port number for TCP/IP
+ connections. (Alternatively, if the host has multiple network
+ addresses, you can use <option>--bind-adress</option> to cause
+ different servers to listen to different interfaces.)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--socket=<replaceable>path</replaceable></option>
+ </para>
+
+ <para>
+ <option>--socket</option> controls the Unix socket file path on
+ Unix and the name of the named pipe on Windows. On Windows, it
+ is necessary to specify distinct pipe names only for those
+ servers that support named-pipe connections.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--shared-memory-base-name=<replaceable>name</replaceable></option>
+ </para>
+
+ <para>
+ This option currently is used only on Windows. It designates the
+ shared-memory name used by a Windows server to allow clients to
+ connect via shared memory. It is necessary to specify distinct
+ shared-memory names only for those servers that support
+ shared-memory connections.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--pid-file=<replaceable>file_name</replaceable></option>
+ </para>
+
+ <para>
+ This option is used only on Unix. It indicates the pathname of
+ the file in which the server writes its process ID.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ If you use the following log file options, they must be different
+ for each server:
+ </para>
+
+ <remark role="todo">
+ InnoDB options needed here?
+ </remark>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <option>--log[=<replaceable>file_name</replaceable>]</option>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--log-bin[=<replaceable>file_name</replaceable>]</option>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--log-error[=<replaceable>file_name</replaceable>]</option>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--bdb-logdir=<replaceable>file_name</replaceable></option>
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ <xref linkend="log-file-maintenance"/>, discusses the log file
+ options further.
+ </para>
+
+ <para>
+ For better performance, you can specify the following options
+ differently for each server, to spread the load between several
+ physical disks:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <option>--tmpdir=<replaceable>path</replaceable></option>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--bdb-tmpdir=<replaceable>path</replaceable></option>
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Having different temporary directories is also recommended to make
+ it easier to determine which MySQL server created any given
+ temporary file.
+ </para>
+
+ <para>
+ With very limited exceptions, each server should use a different
+ data directory, which is specified using the
+ <option>--datadir=<replaceable>path</replaceable></option> option.
+ </para>
+
+ <warning>
+ <para>
+ Normally, you should never have two servers that update data in
+ the same databases. This may lead to unpleasant surprises if your
+ operating system does not support fault-free system locking. If
+ (despite this warning) you run multiple servers using the same
+ data directory and they have logging enabled, you must use the
+ appropriate options to specify log filenames that are unique to
+ each server. Otherwise, the servers try to log to the same files.
+ Please note that this kind of setup only works with
+ <literal>MyISAM</literal> and <literal>MERGE</literal> tables, and
+ not with any of the other storage engines.
+ </para>
+ </warning>
+
+ <para>
+ The warning against sharing a data directory among servers also
+ applies in an NFS environment. Allowing multiple MySQL servers to
+ access a common data directory over NFS is a <emphasis>very bad
+ idea</emphasis>.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The primary problem is that NFS is the speed bottleneck. It is
+ not meant for such use.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Another risk with NFS is that you must devise a way to ensure
+ that two or more servers do not interfere with each other.
+ Usually NFS file locking is handled by the
+ <literal>lockd</literal> daemon, but at the moment there is no
+ platform that performs locking 100% reliably in every situation.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Make it easy for yourself: Forget about sharing a data directory
+ among servers over NFS. A better solution is to have one computer
+ that contains several CPUs and use an operating system that handles
+ threads efficiently.
+ </para>
+
+ <para>
+ If you have multiple MySQL installations in different locations, you
+ can specify the base installation directory for each server with the
+ <option>--basedir=<replaceable>path</replaceable></option> option to
+ cause each server to use a different data directory, log files, and
+ PID file. (The defaults for all these values are determined relative
+ to the base directory). In that case, the only other options you
+ need to specify are the <option>--socket</option> and
+ <option>--port</option> options. For example, suppose that you
+ install different versions of MySQL using <filename>tar</filename>
+ file binary distributions. These install in different locations, so
+ you can start the server for each installation using the command
+ <command>bin/mysqld_safe</command> under its corresponding base
+ directory. <command>mysqld_safe</command> determines the proper
+ <option>--basedir</option> option to pass to
+ <command>mysqld</command>, and you need specify only the
+ <option>--socket</option> and <option>--port</option> options to
+ <command>mysqld_safe</command>.
+ </para>
+
+ <para>
+ As discussed in the following sections, it is possible to start
+ additional servers by setting environment variables or by specifying
+ appropriate command-line options. However, if you need to run
+ multiple servers on a more permanent basis, it is more convenient to
+ use option files to specify for each server those option values that
+ must be unique to it. The <option>--defaults-file</option> option is
+ useful for this purpose.
+ </para>
+
+ <section id="multiple-windows-servers">
+
+ <title>Running Multiple Servers on Windows</title>
+
+ <para>
+ You can run multiple servers on Windows by starting them manually
+ from the command line, each with appropriate operating parameters.
+ You also have the option of installing several servers as Windows
+ services and running them that way. General instructions for
+ running MySQL servers from the command line or as services are
+ given in <xref linkend="windows-installation"/>. This section
+ describes how to make sure that you start each server with
+ different values for those startup options that must be unique per
+ server, such as the data directory. These options are described in
+ <xref linkend="multiple-servers"/>.
+ </para>
+
+ <section id="multiple-windows-command-line-servers">
+
+ <title>Starting Multiple Windows Servers at the Command Line</title>
+
+ <para>
+ To start multiple servers manually from the command line, you
+ can specify the appropriate options on the command line or in an
+ option file. It is more convenient to place the options in an
+ option file, but it is necessary to make sure that each server
+ gets its own set of options. To do this, create an option file
+ for each server and tell the server the filename with a
+ <option>--defaults-file</option> option when you run it.
+ </para>
+
+ <para>
+ Suppose that you want to run <command>mysqld</command> on port
+ 3307 with a data directory of <filename>C:\mydata1</filename>,
+ and <command>mysqld-debug</command> on port 3308 with a data
+ directory of <filename>C:\mydata2</filename>. (To do this, make
+ sure that before you start the servers, each data directory
+ exists and has its own copy of the <literal>mysql</literal>
+ database that contains the grant tables.) Then create two option
+ files. For example, create one file named
+ <filename>C:\my-opts1.cnf</filename> that looks like this:
+ </para>
+
+<programlisting>
+[mysqld]
+datadir = C:/mydata1
+port = 3307
+</programlisting>
+
+ <para>
+ Create a second file named <filename>C:\my-opts2.cnf</filename>
+ that looks like this:
+ </para>
+
+<programlisting>
+[mysqld]
+datadir = C:/mydata2
+port = 3308
+</programlisting>
+
+ <para>
+ Then start each server with its own option file:
+ </para>
+
+<programlisting>
+C:\> <userinput>C:\mysql\bin\mysqld --defaults-file=C:\my-opts1.cnf</userinput>
+C:\> <userinput>C:\mysql\bin\mysqld-debug --defaults-file=C:\my-opts2.cnf</userinput>
+</programlisting>
+
+ <para>
+ Each server starts in the foreground (no new prompt appears
+ until the server exits later), so you will need to issue those
+ two commands in separate console windows.
+ </para>
+
+ <para>
+ To shut down the servers, you must connect to each using the
+ appropriate port number:
+ </para>
+
+<programlisting>
+C:\> <userinput>C:\mysql\bin\mysqladmin --port=3307 shutdown</userinput>
+C:\> <userinput>C:\mysql\bin\mysqladmin --port=3308 shutdown</userinput>
+</programlisting>
+
+ <para>
+ Servers configured as just described allow clients to connect
+ over TCP/IP. If your version of Windows supports named pipes and
+ you also want to allow named-pipe connections, use the
+ <command>mysqld-nt</command> or <command>mysqld-debug</command>
+ server and specify options that enable the named pipe and
+ specify its name. Each server that supports named-pipe
+ connections must use a unique pipe name. For example, the
+ <filename>C:\my-opts1.cnf</filename> file might be written like
+ this:
+ </para>
+
+<programlisting>
+[mysqld]
+datadir = C:/mydata1
+port = 3307
+enable-named-pipe
+socket = mypipe1
+</programlisting>
+
+ <para>
+ Then start the server this way:
+ </para>
+
+<programlisting>
+C:\> <userinput>C:\mysql\bin\mysqld-nt --defaults-file=C:\my-opts1.cnf</userinput>
+</programlisting>
+
+ <para>
+ Modify <filename>C:\my-opts2.cnf</filename> similarly for use by
+ the second server.
+ </para>
+
+ <para>
+ A similar procedure applies for servers that you want to support
+ shared-memory connections. Enable such connections with the
+ <option>--shared-memory</option> option and specify a unique
+ shared-memory name for each server with the
+ <option>--shared-memory-base-name</option> option.
+ </para>
+
+ </section>
+
+ <section id="multiple-windows-services">
+
+ <title>Starting Multiple Windows Servers as Services</title>
+
+ <para>
+ A MySQL server can run as a Windows service. The procedures for
+ installing, controlling, and removing a single MySQL service are
+ described in <xref linkend="windows-start-service"/>.
+ </para>
+
+ <para>
+ You can also install multiple MySQL servers as services. In this
+ case, you must make sure that each server uses a different
+ service name in addition to all the other parameters that must
+ be unique for each server.
+ </para>
+
+ <para>
+ For the following instructions, assume that you want to run the
+ <command>mysqld-nt</command> server from two different versions
+ of MySQL that are installed at
+ <filename>C:\mysql-4.1.8</filename> and
+ <filename>C:\mysql-¤t-version;</filename>, respectively.
+ (This might be the case if you're running 4.1.8 as your
+ production server, but also want to conduct tests using
+ ¤t-version;.)
+ </para>
+
+ <para>
+ The following principles apply when installing a MySQL service
+ with the <option>--install</option> or
+ <option>--install-manual</option> option:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ If you specify no service name, the server uses the default
+ service name of <literal>MySQL</literal> and the server
+ reads options from the <literal>[mysqld]</literal> group in
+ the standard option files.
+ </para>
+ </listitem>
+
+ <listitem>
+ <remark>
+ TODO change this back after bug gets fixed
+ </remark>
+
+ <remark>
+ If you specify a service name different from @code{MySQL}
+ after the
+ </remark>
+
+ <para>
+ If you specify a service name after the
+ <option>--install</option> option, the server ignores the
+ <literal>[mysqld]</literal> option group and instead reads
+ options from the group that has the same name as the
+ service. The server reads options from the standard option
+ files.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ If you specify a <option>--defaults-file</option> option
+ after the service name, the server ignores the standard
+ option files and reads options only from the
+ <literal>[mysqld]</literal> group of the named file.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <note>
+ <para>
+ Before MySQL 4.0.17, only a server installed using the default
+ service name (<literal>MySQL</literal>) or one installed
+ explicitly with a service name of <command>mysqld</command>
+ will read the <literal>[mysqld]</literal> group in the
+ standard option files. As of 4.0.17, all servers read the
+ <literal>[mysqld]</literal> group if they read the standard
+ option files, even if they are installed using another service
+ name. This allows you to use the <literal>[mysqld]</literal>
+ group for options that should be used by all MySQL services,
+ and an option group named after each service for use by the
+ server installed with that service name.
+ </para>
+ </note>
+
+ <para>
+ Based on the preceding information, you have several ways to set
+ up multiple services. The following instructions describe some
+ examples. Before trying any of them, be sure that you shut down
+ and remove any existing MySQL services first.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Approach 1:</emphasis> Specify the
+ options for all services in one of the standard option
+ files. To do this, use a different service name for each
+ server. Suppose that you want to run the 4.1.8
+ <command>mysqld-nt</command> using the service name of
+ <literal>mysqld1</literal> and the ¤t-version;
+ <command>mysqld-nt</command> using the service name
+ <literal>mysqld2</literal>. In this case, you can use the
+ <literal>[mysqld1]</literal> group for 4.1.8 and the
+ <literal>[mysqld2]</literal> group for ¤t-version;.
+ For example, you can set up <filename>C:\my.cnf</filename>
+ like this:
+ </para>
+
+<programlisting>
+# options for mysqld1 service
+[mysqld1]
+basedir = C:/mysql-4.1.8
+port = 3307
+enable-named-pipe
+socket = mypipe1
+
+# options for mysqld2 service
+[mysqld2]
+basedir = C:/mysql-¤t-version;
+port = 3308
+enable-named-pipe
+socket = mypipe2
+</programlisting>
+
+ <para>
+ Install the services as follows, using the full server
+ pathnames to ensure that Windows registers the correct
+ executable program for each service:
+ </para>
+
+<programlisting>
+C:\> <userinput>C:\mysql-4.1.8\bin\mysqld-nt --install mysqld1</userinput>
+C:\> <userinput>C:\mysql-¤t-version;\bin\mysqld-nt --install mysqld2</userinput>
+</programlisting>
+
+ <para>
+ To start the services, use the services manager, or use
+ <command>NET START</command> with the appropriate service
+ names:
+ </para>
+
+<programlisting>
+C:\> <userinput>NET START mysqld1</userinput>
+C:\> <userinput>NET START mysqld2</userinput>
+</programlisting>
+
+ <para>
+ To stop the services, use the services manager, or use
+ <command>NET STOP</command> with the appropriate service
+ names:
+ </para>
+
+<programlisting>
+C:\> <userinput>NET STOP mysqld1</userinput>
+C:\> <userinput>NET STOP mysqld2</userinput>
+</programlisting>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Approach 2:</emphasis> Specify options
+ for each server in separate files and use
+ <option>--defaults-file</option> when you install the
+ services to tell each server what file to use. In this case,
+ each file should list options using a
+ <literal>[mysqld]</literal> group.
+ </para>
+
+ <para>
+ With this approach, to specify options for the 4.1.8
+ <command>mysqld-nt</command>, create a file
+ <filename>C:\my-opts1.cnf</filename> that looks like this:
+ </para>
+
+<programlisting>
+[mysqld]
+basedir = C:/mysql-4.1.8
+port = 3307
+enable-named-pipe
+socket = mypipe1
+</programlisting>
+
+ <para>
+ For the ¤t-version; <command>mysqld-nt</command>,
+ create a file <filename>C:\my-opts2.cnf</filename> that
+ looks like this:
+ </para>
+
+<programlisting>
+[mysqld]
+basedir = C:/mysql-¤t-version;
+port = 3308
+enable-named-pipe
+socket = mypipe2
+</programlisting>
+
+ <para>
+ Install the services as follows (enter each command on a
+ single line):
+ </para>
+
+<programlisting>
+C:\> <userinput>C:\mysql-4.1.8\bin\mysqld-nt --install mysqld1</userinput>
+ <userinput>--defaults-file=C:\my-opts1.cnf</userinput>
+C:\> <userinput>C:\mysql-¤t-version;\bin\mysqld-nt --install mysqld2</userinput>
+ <userinput>--defaults-file=C:\my-opts2.cnf</userinput>
+</programlisting>
+
+ <para>
+ To use a <option>--defaults-file</option> option when you
+ install a MySQL server as a service, you must precede the
+ option with the service name.
+ </para>
+
+ <para>
+ After installing the services, start and stop them the same
+ way as in the preceding example.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ To remove multiple services, use <command>mysqld
+ --remove</command> for each one, specifying a service name
+ following the <option>--remove</option> option. If the service
+ name is the default (<literal>MySQL</literal>), you can omit it.
+ </para>
+
+ </section>
+
+ </section>
+
+ <section id="multiple-unix-servers">
+
+ <title>Running Multiple Servers on Unix</title>
+
+ <para>
+ The easiest way is to run multiple servers on Unix is to compile
+ them with different TCP/IP ports and Unix socket files so that
+ each one is listening on different network interfaces. Compiling
+ in different base directories for each installation also results
+ automatically in a separate, compiled-in data directory, log file,
+ and PID file location for each server.
+ </para>
+
+ <para>
+ Assume that an existing 4.1.8 server is configured for the default
+ TCP/IP port number (3306) and Unix socket file
+ (<filename>/tmp/mysql.sock</filename>). To configure a new
+ ¤t-version; server to have different operating parameters,
+ use a <command>configure</command> command something like this:
+ </para>
+
+<programlisting>
+shell> <userinput>./configure --with-tcp-port=<replaceable>port_number</replaceable> \</userinput>
+ <userinput>--with-unix-socket-path=<replaceable>file_name</replaceable> \</userinput>
+ <userinput>--prefix=/usr/local/mysql-¤t-version;</userinput>
+</programlisting>
+
+ <para>
+ Here, <replaceable>port_number</replaceable> and
+ <replaceable>file_name</replaceable> must be different from the
+ default TCP/IP port number and Unix socket file pathname, and the
+ <option>--prefix</option> value should specify an installation
+ directory different from the one under which the existing MySQL
+ installation is located.
+ </para>
+
+ <para>
+ If you have a MySQL server listening on a given port number, you
+ can use the following command to find out what operating
+ parameters it is using for several important configurable
+ variables, including the base directory and Unix socket filename:
+ </para>
+
+<programlisting>
+shell> <userinput>mysqladmin --host=<replaceable>host_name</replaceable> --port=<replaceable>port_number</replaceable> variables</userinput>
+</programlisting>
+
+ <para>
+ With the information displayed by that command, you can tell what
+ option values <emphasis>not</emphasis> to use when configuring an
+ additional server.
+ </para>
+
+ <para>
+ Note that if you specify <literal>localhost</literal> as a
+ hostname, <command>mysqladmin</command> defaults to using a Unix
+ socket file connection rather than TCP/IP. From MySQL 4.1 onward,
+ you can explicitly specify the connection protocol to use by using
+ the <option>--protocol={TCP|SOCKET|PIPE|MEMORY}</option> option.
+ </para>
+
+ <para>
+ You don't have to compile a new MySQL server just to start with a
+ different Unix socket file and TCP/IP port number. It is also
+ possible to use the same server binary and start each invocation
+ of it with different parameter values at runtime. One way to do so
+ is by using command-line options:
+ </para>
+
+<programlisting>
+shell> <userinput>mysqld_safe --socket=<replaceable>file_name</replaceable> --port=<replaceable>port_number</replaceable></userinput>
+</programlisting>
+
+ <para>
+ To start a second server, provide different
+ <option>--socket</option> and <option>--port</option> option
+ values, and pass a
+ <option>--datadir=<replaceable>path</replaceable></option> option
+ to <command>mysqld_safe</command> so that the server uses a
+ different data directory.
+ </para>
+
+ <para>
+ Another way to achieve a similar effect is to use environment
+ variables to set the Unix socket filename and TCP/IP port number:
+ </para>
+
+ <indexterm>
+ <primary>MYSQL_UNIX_PORT environment variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>MYSQL_TCP_PORT environment variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>environment variable</primary>
+ <secondary>MYSQL_UNIX_PORT</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>environment variable</primary>
+ <secondary>MYSQL_TCP_PORT</secondary>
+ </indexterm>
+
+<programlisting>
+shell> <userinput>MYSQL_UNIX_PORT=/tmp/mysqld-new.sock</userinput>
+shell> <userinput>MYSQL_TCP_PORT=3307</userinput>
+shell> <userinput>export MYSQL_UNIX_PORT MYSQL_TCP_PORT</userinput>
+shell> <userinput>mysql_install_db --user=mysql</userinput>
+shell> <userinput>mysqld_safe --datadir=/path/to/datadir &</userinput>
+</programlisting>
+
+ <para>
+ This is a quick way of starting a second server to use for
+ testing. The nice thing about this method is that the environment
+ variable settings apply to any client programs that you invoke
+ from the same shell. Thus, connections for those clients are
+ automatically directed to the second server.
+ </para>
+
+ <para>
+ <xref linkend="environment-variables"/>, includes a list of other
+ environment variables you can use to affect
+ <command>mysqld</command>.
+ </para>
+
+ <para>
+ For automatic server execution, the startup script that is
+ executed at boot time should execute the following command once
+ for each server with an appropriate option file path for each
+ command:
+ </para>
+
+<programlisting>
+shell> <userinput>mysqld_safe --defaults-file=<replaceable>file_name</replaceable></userinput>
+</programlisting>
+
+ <para>
+ Each option file should contain option values specific to a given
+ server.
+ </para>
+
+ <para>
+ On Unix, the <command>mysqld_multi</command> script is another way
+ to start multiple servers. See <xref linkend="mysqld-multi"/>.
+ </para>
+
+ </section>
+
+ <section id="multiple-server-clients">
+
+ <title>Using Client Programs in a Multiple-Server Environment</title>
+
+ <para>
+ To connect with a client program to a MySQL server that is
+ listening to different network interfaces from those compiled into
+ your client, you can use one of the following methods:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Start the client with
+ <option>--host=<replaceable>host_name</replaceable>
+ --port=<replaceable>port_number</replaceable></option> to
+ connect via TCP/IP to a remote server, with
+ <option>--host=127.0.0.1
+ --port=<replaceable>port_number</replaceable></option> to
+ connect via TCP/IP to a local server, or with
+ <option>--host=localhost
+ --socket=<replaceable>file_name</replaceable></option> to
+ connect to a local server via a Unix socket file or a Windows
+ named pipe.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ As of MySQL 4.1, start the client with
+ <option>--protocol=TCP</option> to connect via TCP/IP,
+ <option>--protocol=SOCKET</option> to connect via a Unix
+ socket file, <option>--protocol=PIPE</option> to connect via a
+ named pipe, or <option>--protocol=MEMORY</option> to connect
+ via shared memory. For TCP/IP connections, you may also need
+ to specify <option>--host</option> and <option>--port</option>
+ options. For the other types of connections, you may need to
+ specify a <option>--socket</option> option to specify a Unix
+ socket file or Windows named-pipe name, or a
+ <option>--shared-memory-base-name</option> option to specify
+ the shared-memory name. Shared-memory connections are
+ supported only on Windows.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <indexterm>
+ <primary>MYSQL_UNIX_PORT environment variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>MYSQL_TCP_PORT environment variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>environment variable</primary>
+ <secondary>MYSQL_UNIX_PORT</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>environment variable</primary>
+ <secondary>MYSQL_TCP_PORT</secondary>
+ </indexterm>
+
+ On Unix, set the <literal>MYSQL_UNIX_PORT</literal> and
+ <literal>MYSQL_TCP_PORT</literal> environment variables to
+ point to the Unix socket file and TCP/IP port number before
+ you start your clients. If you normally use a specific socket
+ file or port number, you can place commands to set these
+ environment variables in your <filename>.login</filename> file
+ so that they apply each time you log in. See
+ <xref linkend="environment-variables"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <indexterm>
+ <primary>C:\my.cnf file</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>.my.cnf file</primary>
+ </indexterm>
+
+ Specify the default Unix socket file and TCP/IP port number in
+ the <literal>[client]</literal> group of an option file. For
+ example, you can use <filename>C:\my.cnf</filename> on
+ Windows, or the <filename>.my.cnf</filename> file in your home
+ directory on Unix. See <xref linkend="option-files"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ In a C program, you can specify the socket file or port number
+ arguments in the
+ <literal role="cfunc">mysql_real_connect()</literal> call. You
+ can also have the program read option files by calling
+ <literal role="cfunc">mysql_options()</literal>. See
+ <xref linkend="c-api-functions"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ If you are using the Perl <literal>DBD::mysql</literal>
+ module, you can read options from MySQL option files. For
+ example:
+ </para>
+
+<programlisting>
+$dsn = "DBI:mysql:test;mysql_read_default_group=client;"
+ . "mysql_read_default_file=/usr/local/mysql/data/my.cnf";
+$dbh = DBI->connect($dsn, $user, $password);
+</programlisting>
+
+ <para>
+ See <xref linkend="apis-perl"/>.
+ </para>
+
+ <para>
+ Other programming interfaces may provide similar capabilities
+ for reading option files.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <formalpara role="mnmas">
+
+ <title>MySQL Enterprise</title>
+
+ <para>
+ Subscribers to MySQL Enterprise will find additional information
+ on running multiple MySQL servers on one machine in the MySQL
+ Enterprise Knowledge Base article found at
+ <ulink url="https://kb.mysql.com/view.php?id=4926"/>.
+ </para>
+
+ </formalpara>
+
+ </section>
+
+</section>
Added: trunk/refman-5.0/dba-mysqld-server-core.xml
===================================================================
--- trunk/refman-5.0/dba-mysqld-server-core.xml (rev 0)
+++ trunk/refman-5.0/dba-mysqld-server-core.xml 2008-12-07 13:48:24 UTC (rev 12826)
Changed blocks: 1, Lines Added: 13432, Lines Deleted: 0; 451132 bytes
@@ -0,0 +1,13432 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+<!ENTITY % all.entities SYSTEM "all-entities.ent">
+ %all.entities;
+]>
+<section id="mysqld-server">
+
+ <title>The MySQL Server</title>
+
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>MySQL server</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>MySQL server</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <remark role="dynamic-dependency-list"/>
+
+ <para>
+ <command>mysqld</command> is the MySQL server. The following
+ discussion covers these MySQL server configuration topics:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Startup options that the server supports
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Server system variables
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Server status variables
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ How to set the server SQL mode
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The server shutdown process
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <note>
+ <para>
+ Not all storage engines are supported by all MySQL server binaries
+ and configurations. To find out how to determine which storage
+ engines are supported by your MySQL server installation, see
+ <xref linkend="show-engines"/>.
+ </para>
+ </note>
+
+ <section id="mysqld-option-tables">
+
+ <title>Server Option and Variable Reference</title>
+
+ <para>
+ The following table provides a list of all the command line
+ options, server and status variables applicable within
+ <literal>mysqld</literal>.
+ </para>
+
+ <para>
+ The table lists command-line options (Cmd-line), options valid in
+ configuration files (Option file), server system variables (System
+ Var), and status variables (Status var) in one unified list, with
+ notification of where each option/variable is valid. If a server
+ option set on the command line or in an option file differs from
+ the name of the corresponding server system or status variable,
+ the variable name is noted immediately below the corresponding
+ option. For status variables, the scope of the variable is shown
+ (Scope) as either global, session, or both. Please see the
+ corresponding sections for details on setting and using the
+ options and variables. Where appropriate, a direct link to further
+ information on the item as available.
+ </para>
+
+ <para condition="dynamic:optvar:fullsummary" role="5.0:mysqld:all:Option/Variable Summary"/>
+
+ </section>
+
+ <section id="server-options">
+
+ <title>Server Command Options</title>
+
+ <indexterm>
+ <primary>command options</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>command options</secondary>
+ </indexterm>
+
+ <para>
+ When you start the <command>mysqld</command> server, you can
+ specify program options using any of the methods described in
+ <xref linkend="program-options"/>. The most common methods are to
+ provide options in an option file or on the command line. However,
+ in most cases it is desirable to make sure that the server uses
+ the same options each time it runs. The best way to ensure this is
+ to list them in an option file. See
+ <xref linkend="option-files"/>.
+ </para>
+
+ <formalpara role="mnmas">
+
+ <title>MySQL Enterprise</title>
+
+ <para>
+ For expert advice on setting command options, subscribe to the
+ MySQL Enterprise Monitor. For more information, see
+ <ulink url="advisors.html"/>.
+ </para>
+
+ </formalpara>
+
+ <para>
+ <command>mysqld</command> reads options from the
+ <literal>[mysqld]</literal> and <literal>[server]</literal>
+ groups. <command>mysqld_safe</command> reads options from the
+ <literal>[mysqld]</literal>, <literal>[server]</literal>,
+ <literal>[mysqld_safe]</literal>, and
+ <literal>[safe_mysqld]</literal> groups.
+ <command>mysql.server</command> reads options from the
+ <literal>[mysqld]</literal> and <literal>[mysql.server]</literal>
+ groups.
+ </para>
+
+ <para>
+ An embedded MySQL server usually reads options from the
+ <literal>[server]</literal>, <literal>[embedded]</literal>, and
+ <literal>[<replaceable>xxxxx</replaceable>_SERVER]</literal>
+ groups, where <replaceable>xxxxx</replaceable> is the name of the
+ application into which the server is embedded.
+ </para>
+
+ <para>
+ <command>mysqld</command> accepts many command options. For a
+ brief summary, execute <command>mysqld --help</command>. To see
+ the full list, use <command>mysqld --verbose --help</command>.
+ </para>
+
+ <para>
+ The following list shows some of the most common server options.
+ Additional options are described in other sections:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Options that affect security: See
+ <xref linkend="privileges-options"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ SSL-related options: See <xref linkend="ssl-options"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Binary log control options: See
+ <xref linkend="replication-options-binary-log"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Replication-related options: See
+ <xref linkend="replication-options"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Options specific to particular storage engines: See
+ <xref linkend="myisam-start"/>, <xref linkend="bdb-start"/>,
+ <xref linkend="innodb-parameters"/>, and
+ <xref linkend="mysql-cluster-mysqld-command-options"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ You can also set the values of server system variables by using
+ variable names as options, as described at the end of this
+ section.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para id="option_mysqld_help">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>help option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>help option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--help</option>, <option>-?</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:help"/>
+
+ <para>
+ Display a short help message and exit. Use both the
+ <option>--verbose</option> and <option>--help</option> options
+ to see the full message.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_abort-slave-event-count">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>abort-slave-event-count option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>abort-slave-event-count option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--abort-slave-event-count</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:abort-slave-event-count"/>
+
+ <para>
+ When this option is set to some positive integer
+ <replaceable>value</replaceable> other than 0 (the default) it
+ affects replication behavior as follows: After the slave SQL
+ thread has started, <replaceable>value</replaceable> log
+ events are allowed to be executed; after that, the slave SQL
+ thread does not receive any more events, just as if the
+ network connection from the master were cut. The slave thread
+ continues to run, and the output from
+ <literal role="stmt">SHOW SLAVE STATUS</literal> displays
+ <literal>Yes</literal> in both the
+ <literal>Slave_IO_Running</literal> and the
+ <literal>Slave_SQL_Running</literal> columns, but no further
+ events are read from the relay log.
+ </para>
+
+ <para>
+ This option is used internally by the MySQL test suite for
+ replication testing and debugging. It is not intended for use
+ in a production setting.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_allow-suspicious-udfs">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>allow-suspicious-udfs option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>allow-suspicious-udfs option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--allow-suspicious-udfs</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:allow-suspicious-udfs"/>
+
+ <para>
+ This option controls whether user-defined functions that have
+ only an <literal>xxx</literal> symbol for the main function
+ can be loaded. By default, the option is off and only UDFs
+ that have at least one auxiliary symbol can be loaded; this
+ prevents attempts at loading functions from shared object
+ files other than those containing legitimate UDFs. This option
+ was added in version 5.0.3. See
+ <xref linkend="udf-security"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_ansi">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>ansi option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>ansi option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--ansi</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:ansi"/>
+
+ <para>
+ Use standard (ANSI) SQL syntax instead of MySQL syntax. For
+ more precise control over the server SQL mode, use the
+ <option>--sql-mode</option> option instead. See
+ <xref linkend="ansi-mode"/>, and
+ <xref linkend="server-sql-mode"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_basedir">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>basedir option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>basedir option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--basedir=<replaceable>path</replaceable></option>,
+ <option>-b <replaceable>path</replaceable></option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:basedir"/>
+
+ <para>
+ The path to the MySQL installation directory. All paths are
+ usually resolved relative to this directory.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_big-tables">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>big-tables option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>big-tables option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--big-tables</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:big-tables"/>
+
+ <para>
+ Allow large result sets by saving all temporary sets in files.
+ This option prevents most <quote>table full</quote> errors,
+ but also slows down queries for which in-memory tables would
+ suffice. Since MySQL 3.23.2, the server is able to handle
+ large result sets automatically by using memory for small
+ temporary tables and switching to disk tables where necessary.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_bind-address">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>bind-address option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>bind-address option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--bind-address=<replaceable>IP</replaceable></option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:bind-address"/>
+
+ <para>
+ The IP address to bind to. Only one address can be selected.
+ If this option is specified multiple times, the last address
+ given is used.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_bootstrap">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>bootstrap option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>bootstrap option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--bootstrap</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:bootstrap"/>
+
+ <para>
+ This option is used by the <command>mysql_install_db</command>
+ script to create the MySQL privilege tables without having to
+ start a full MySQL server.
+ </para>
+
+ <para>
+ This option is unavailable if MySQL was configured with the
+ <option>--disable-grant-options</option> option. See
+ <xref linkend="configure-options"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_character-sets-dir">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>character-sets-dir option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>character-sets-dir option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--character-sets-dir=<replaceable>path</replaceable></option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:character-sets-dir"/>
+
+ <para>
+ The directory where character sets are installed. See
+ <xref linkend="charset-configuration"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_character-set-client-handshake">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>character-set-client-handshake option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>character-set-client-handshake option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--character-set-client-handshake</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:character-set-client-handshake"/>
+
+ <para>
+ Don't ignore character set information sent by the client. To
+ ignore client information and use the default server character
+ set, use
+ <option>--skip-character-set-client-handshake</option>; this
+ makes MySQL behave like MySQL 4.0.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_character-set-filesystem">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>character-set-filesystem option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>character-set-filesystem option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--character-set-filesystem=<replaceable>charset_name</replaceable></option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:character-set-filesystem"/>
+
+ <para>
+ The filesystem character set. This option sets the
+ <literal role="sysvar">character_set_filesystem</literal>
+ system variable. It was added in MySQL 5.0.19.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_character-set-server">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>character-set-server option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>character-set-server option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--character-set-server=<replaceable>charset_name</replaceable></option>,
+ <option>-C <replaceable>charset_name</replaceable></option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:character-set-server"/>
+
+ <para>
+ Use <replaceable>charset_name</replaceable> as the default
+ server character set. See
+ <xref linkend="charset-configuration"/>. If you use this
+ option to specify a non-default character set, you should also
+ use <option>--collation-server</option> to specify the
+ collation.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_chroot">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>chroot option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>chroot option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--chroot=<replaceable>path</replaceable></option>,
+ <option>-r <replaceable>path</replaceable></option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:chroot"/>
+
+ <para>
+ Put the <command>mysqld</command> server in a closed
+ environment during startup by using the
+ <literal>chroot()</literal> system call. This is a recommended
+ security measure. Note that use of this option somewhat limits
+ <literal role="stmt" condition="load-data">LOAD DATA
+ INFILE</literal> and <literal>SELECT ... INTO
+ OUTFILE</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_collation-server">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>collation-server option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>collation-server option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--collation-server=<replaceable>collation_name</replaceable></option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:collation-server"/>
+
+ <para>
+ Use <replaceable>collation_name</replaceable> as the default
+ server collation. See <xref linkend="charset-configuration"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_console">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>console option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>console option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--console</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:console"/>
+
+ <para>
+ (Windows only.) Write error log messages to
+ <literal>stderr</literal> and <literal>stdout</literal> even
+ if <option>--log-error</option> is specified.
+ <command>mysqld</command> does not close the console window if
+ this option is used.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_core-file">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>core-file option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>core-file option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--core-file</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:core-file"/>
+
+ <para>
+ Write a core file if <command>mysqld</command> dies. For some
+ systems, you must also specify the
+ <option>--core-file-size</option> option to
+ <command>mysqld_safe</command>. See
+ <xref linkend="mysqld-safe"/>. Note that on some systems, such
+ as Solaris, you do not get a core file if you are also using
+ the <option>--user</option> option.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_datadir">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>datadir option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>datadir option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--datadir=<replaceable>path</replaceable></option>,
+ <option>-h <replaceable>path</replaceable></option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:datadir"/>
+
+ <para>
+ The path to the data directory.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_debug">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>debug option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>debug option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--debug[=<replaceable>debug_options</replaceable>]</option>,
+ <option>-# [<replaceable>debug_options</replaceable>]</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:debug"/>
+
+ <para>
+ If MySQL is configured with <option>--with-debug</option>, you
+ can use this option to get a trace file of what
+ <command>mysqld</command> is doing. The
+ <replaceable>debug_options</replaceable> string often is
+ <literal>'d:t:o,<replaceable>file_name</replaceable>'</literal>.
+ The default is <literal>'d:t:i:o,mysqld.trace'</literal>. See
+ <ulink url="http://forge.mysql.com/wiki/MySQL_Internals_Porting">MySQL
+ Internals: Porting</ulink>.
+ </para>
+
+ <para>
+ As of MySQL 5.0.25, using <option>--with-debug</option> to
+ configure MySQL with debugging support enables you to use the
+ <option>--debug="d,parser_debug"</option> option
+ when you start the server. This causes the Bison parser that
+ is used to process SQL statements to dump a parser trace to
+ the server's standard error output. Typically, this output is
+ written to the error log.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_default-character-set">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>default-character-set option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>default-character-set option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--default-character-set=<replaceable>charset_name</replaceable></option>
+ (<emphasis>DEPRECATED</emphasis>)
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:default-character-set"/>
+
+ <para>
+ Use <replaceable>charset_name</replaceable> as the default
+ character set. This option is deprecated in favor of
+ <option>--character-set-server</option>. See
+ <xref linkend="charset-configuration"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_default-collation">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>default-collation option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>default-collation option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--default-collation=<replaceable>collation_name</replaceable></option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:default-collation"/>
+
+ <para>
+ Use <replaceable>collation_name</replaceable> as the default
+ collation. This option is deprecated in favor of
+ <option>--collation-server</option>. See
+ <xref linkend="charset-configuration"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_default-storage-engine">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>default-storage-engine option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>default-storage-engine option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--default-storage-engine=<replaceable>type</replaceable></option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:default-storage-engine"/>
+
+ <para>
+ Set the default storage engine (table type) for tables. See
+ <xref linkend="storage-engines"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_default-table-type">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>default-table-type option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>default-table-type option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--default-table-type=<replaceable>type</replaceable></option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:default-table-type"/>
+
+ <para>
+ This option is a deprecated synonym for
+ <option>--default-storage-engine</option>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_default-time-zone">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>default-time-zone option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>default-time-zone option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--default-time-zone=<replaceable>timezone</replaceable></option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:default-time-zone"/>
+
+ <para>
+ Set the default server time zone. This option sets the global
+ <literal role="sysvar">time_zone</literal> system variable. If
+ this option is not given, the default time zone is the same as
+ the system time zone (given by the value of the
+ <literal role="sysvar">system_time_zone</literal> system
+ variable.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_delay-key-write">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>delay-key-write option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>delay-key-write option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--delay-key-write[={OFF|ON|ALL}]</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:delay-key-write"/>
+
+ <para>
+ Specify how to use delayed key writes. Delayed key writing
+ causes key buffers not to be flushed between writes for
+ <literal>MyISAM</literal> tables. <literal>OFF</literal>
+ disables delayed key writes. <literal>ON</literal> enables
+ delayed key writes for those tables that were created with the
+ <literal>DELAY_KEY_WRITE</literal> option.
+ <literal>ALL</literal> delays key writes for all
+ <literal>MyISAM</literal> tables. See
+ <xref linkend="server-parameters"/>, and
+ <xref linkend="myisam-start"/>.
+ </para>
+
+ <note>
+ <para>
+ If you set this variable to <literal>ALL</literal>, you
+ should not use <literal>MyISAM</literal> tables from within
+ another program (such as another MySQL server or
+ <command>myisamchk</command>) when the tables are in use.
+ Doing so leads to index corruption.
+ </para>
+ </note>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_des-key-file">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>des-key-file option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>des-key-file option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--des-key-file=<replaceable>file_name</replaceable></option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:des-key-file"/>
+
+ <para>
+ Read the default DES keys from this file. These keys are used
+ by the <literal role="func">DES_ENCRYPT()</literal> and
+ <literal role="func">DES_DECRYPT()</literal> functions.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_enable-named-pipe">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>enable-named-pipe option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>enable-named-pipe option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--enable-named-pipe</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:enable-named-pipe"/>
+
+ <para>
+ Enable support for named pipes. This option can be used only
+ with the <command>mysqld-nt</command> and
+ <command>mysqld-debug</command> servers that support
+ named-pipe connections.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_enable-pstack">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>enable-pstack option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>enable-pstack option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--enable-pstack</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:enable-pstack"/>
+
+ <para>
+ Print a symbolic stack trace on failure.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_engine-condition-pushdown">
+ <literal>--engine-condition-pushdown={ON|OFF}</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:engine-condition-pushdown"/>
+
+ <para>
+ When the value of this option is 0 (<literal>OFF</literal>), a
+ query such as <literal>SELECT * FROM t WHERE mycol =
+ 42</literal>, where <literal>mycol</literal> is a non-indexed
+ column, is executed as a full table scan. The storage engine
+ sends every row to the MySQL server, which applies the
+ <literal>WHERE</literal> condition. If
+ <literal>engine_condition_pushdown</literal> is set to 1
+ (<literal>ON</literal>), the condition is <quote>pushed
+ down</quote> to the storage engine, which uses the condition
+ to perform the scan, and sends back to the MySQL server only
+ those rows that match the condition. By default, this variable
+ is <literal>OFF</literal>.
+ </para>
+
+ <para>
+ In MySQL ¤t-series;, this option is useful only with the
+ <literal>NDBCLUSTER</literal> storage engine. However, we
+ intend to implement it for additional storage engines in
+ future MySQL releases.
+ </para>
+
+ <para>
+ Setting this option to <literal>ON</literal> on a MySQL Server
+ acting as a MySQL Cluster SQL node causes
+ <literal>WHERE</literal> conditions on unindexed columns to be
+ evaluated on the cluster's data nodes and only the rows that
+ match to be sent back to the SQL node that issued the query.
+ This means the amount of cluster data that must be sent over
+ the network is greatly reduced, increasing the efficiency with
+ which results are returned.
+ </para>
+
+ <para>
+ For more information, see
+ <xref linkend="condition-pushdown-optimization"/>.
+ </para>
+
+ <para>
+ This variable was added in MySQL 5.0.3.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_exit-info">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>exit-info option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>exit-info option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--exit-info[=<replaceable>flags</replaceable>]</option>,
+ <option>-T [<replaceable>flags</replaceable>]</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:exit-info"/>
+
+ <para>
+ This is a bit mask of different flags that you can use for
+ debugging the <command>mysqld</command> server. Do not use
+ this option unless you know <emphasis>exactly</emphasis> what
+ it does!
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_external-locking">
+ <indexterm>
+ <primary>external locking</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>locking</primary>
+ <secondary>external</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>external-locking option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>external-locking option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--external-locking</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:external-locking"/>
+
+ <para>
+ Enable external locking (system locking), which is disabled by
+ default as of MySQL 4.0. Note that if you use this option on a
+ system on which <literal>lockd</literal> does not fully work
+ (such as Linux), it is easy for <command>mysqld</command> to
+ deadlock. This option previously was named
+ <option>--enable-locking</option>.
+ </para>
+
+ <para>
+ For more information about external locking, including
+ conditions under which it can and cannot be used, see
+ <xref linkend="external-locking"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_flush">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>flush option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>flush option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--flush</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:flush"/>
+
+ <para>
+ Flush (synchronize) 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
+ <xref linkend="crashing"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_gdb">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>gdb option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>gdb option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--gdb</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:gdb"/>
+
+ <para>
+ Install an interrupt handler for <literal>SIGINT</literal>
+ (needed to stop <command>mysqld</command> with
+ <literal>^C</literal> to set breakpoints) and disable stack
+ tracing and core file handling. See
+ <ulink url="http://forge.mysql.com/wiki/MySQL_Internals_Porting">MySQL
+ Internals: Porting</ulink>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_init-file">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>init-file option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>init-file option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--init-file=<replaceable>file_name</replaceable></option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:init-file"/>
+
+ <para>
+ Read SQL statements from this file at startup. Each statement
+ must be on a single line and should not include comments.
+ </para>
+
+ <para>
+ This option is unavailable if MySQL was configured with the
+ <option>--disable-grant-options</option> option. See
+ <xref linkend="configure-options"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_innodb-safe-binlog">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>innodb-safe-binlog option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>innodb-safe-binlog option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--innodb-safe-binlog</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:innodb-safe-binlog"/>
+
+ <para>
+ Adds consistency guarantees between the content of
+ <literal>InnoDB</literal> tables and the binary log. See
+ <xref linkend="binary-log"/>. This option was removed in MySQL
+ 5.0.3, having been made obsolete by the introduction of XA
+ transaction support.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--innodb-<replaceable>xxx</replaceable></option>
+ </para>
+
+ <para>
+ The <literal>InnoDB</literal> options are listed in
+ <xref linkend="innodb-parameters"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_language">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>language option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>language option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--language=<replaceable>lang_name</replaceable>, -L
+ <replaceable>lang_name</replaceable></option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:language"/>
+
+ <para>
+ Return client error messages in the given language.
+ <replaceable>lang_name</replaceable> can be given as the
+ language name or as the full pathname to the directory where
+ the language files are installed. See
+ <xref linkend="error-message-language"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_large-pages">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>large-pages option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>large-pages option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--large-pages</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:large-pages"/>
+
+ <para>
+ Some hardware/operating system architectures support memory
+ pages greater than the default (usually 4KB). The actual
+ implementation of this support depends on the underlying
+ hardware and OS. Applications that perform a lot of memory
+ accesses may obtain performance improvements by using large
+ pages due to reduced Translation Lookaside Buffer (TLB)
+ misses.
+ </para>
+
+ <para>
+ Currently, MySQL supports only the Linux implementation of
+ large pages support (which is called HugeTLB in Linux). We
+ have plans to extend this support to FreeBSD, Solaris and
+ possibly other platforms.
+ </para>
+
+ <para>
+ Before large pages can be used on Linux, it is necessary to
+ configure the HugeTLB memory pool. For reference, consult the
+ <filename>hugetlbpage.txt</filename> file in the Linux kernel
+ source.
+ </para>
+
+ <para>
+ This option is disabled by default. It was added in MySQL
+ 5.0.3.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_log">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>log option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>log option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--log[=<replaceable>file_name</replaceable>]</option>,
+ <option>-l [<replaceable>file_name</replaceable>]</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:log"/>
+
+ <para>
+ Log connections and SQL statements received from clients to
+ this file. See <xref linkend="query-log"/>. If you omit the
+ filename, MySQL uses
+ <filename><replaceable>host_name</replaceable>.log</filename>
+ as the filename.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_log-error">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>log-error option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>log-error option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--log-error[=<replaceable>file_name</replaceable>]</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:log-error"/>
+
+ <para>
+ Log errors and startup messages to this file. See
+ <xref linkend="error-log"/>. If you omit the filename, MySQL
+ uses
+ <filename><replaceable>host_name</replaceable>.err</filename>.
+ If the filename has no extension, the server adds an extension
+ of <filename>.err</filename>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_log-isam">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>log-isam option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>log-isam option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--log-isam[=<replaceable>file_name</replaceable>]</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:log-isam"/>
+
+ <para>
+ Log all <literal>MyISAM</literal> changes to this file (used
+ only when debugging <literal>MyISAM</literal>).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_log-long-format">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>log-long-format option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>log-long-format option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--log-long-format</option>
+ (<emphasis>DEPRECATED</emphasis>)
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:log-long-format"/>
+
+ <para>
+ Log extra information to the update log, binary update log,
+ and slow query log, if they have been activated. For example,
+ the username and timestamp are logged for all queries. This
+ option is deprecated, as it now represents the default logging
+ behavior. (See the description for
+ <option>--log-short-format</option>.) The
+ <option>--log-queries-not-using-indexes</option> option is
+ available for the purpose of logging queries that do not use
+ indexes to the slow query log.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_log-queries-not-using-indexes">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>log-queries-not-using-indexes option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>log-queries-not-using-indexes option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--log-queries-not-using-indexes</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:log-queries-not-using-indexes"/>
+
+ <para>
+ If you are using this option with the slow query log enabled,
+ queries that are expected to retrieve all rows are logged. See
+ <xref linkend="slow-query-log"/>. This option does not
+ necessarily mean that no index is used. For example, a query
+ that uses a full index scan uses an index but would be logged
+ because the index would not limit the number of rows.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_log-short-format">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>log-short-format option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>log-short-format option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--log-short-format</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:log-short-format"/>
+
+ <para>
+ Log less information to the update log, binary update log, and
+ slow query log, if they have been activated. For example, the
+ username and timestamp are not logged for queries.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_log-slow-admin-statements">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>log-slow-admin-statements option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>log-slow-admin-statements option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--log-slow-admin-statements</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:log-slow-admin-statements"/>
+
+ <para>
+ Log slow administrative statements such as
+ <literal role="stmt">OPTIMIZE TABLE</literal>,
+ <literal role="stmt">ANALYZE TABLE</literal>, and
+ <literal role="stmt">ALTER TABLE</literal> to the slow query
+ log.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_log-slow-queries">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>log-slow-queries option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>log-slow-queries option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--log-slow-queries[=<replaceable>file_name</replaceable>]</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:log-slow-queries"/>
+
+ <para>
+ Log all queries that have taken more than
+ <literal role="sysvar">long_query_time</literal> seconds to
+ execute to this file. See <xref linkend="slow-query-log"/>.
+ See the descriptions of the <option>--log-long-format</option>
+ and <option>--log-short-format</option> options for details.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_log-tc">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>log-tc option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>log-tc option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--log-tc=<replaceable>file_name</replaceable></option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:log-tc"/>
+
+ <para>
+ The name of the memory-mapped transaction coordinator log file
+ (for XA transactions that affect multiple storage engines when
+ the binary log is disabled). The default name is
+ <filename>tc.log</filename>. The file is created under the
+ data directory if not given as a full pathname. Currently,
+ this option is unused. Added in MySQL 5.0.3.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_log-tc-size">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>log-tc-size option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>log-tc-size option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--log-tc-size=<replaceable>size</replaceable></option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:log-tc-size"/>
+
+ <para>
+ The size in bytes of the memory-mapped transaction coordinator
+ log. The default size is 24KB. Added in MySQL 5.0.3.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_log-warnings">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>log-warnings option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>log-warnings option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--log-warnings[=<replaceable>level</replaceable>]</option>,
+ <option>-W [<replaceable>level</replaceable>]</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:log-warnings"/>
+
+ <para>
+ Print out warnings such as <literal>Aborted
+ connection...</literal> to the error log. Enabling this option
+ is recommended, for example, if you use replication (you get
+ more information about what is happening, such as messages
+ about network failures and reconnections). This option is
+ enabled (1) by default, and the default
+ <replaceable>level</replaceable> value if omitted is 1. To
+ disable this option, use <option>--log-warnings=0</option>. If
+ the value is greater than 1, aborted connections are written
+ to the error log. See <xref linkend="communication-errors"/>.
+ </para>
+
+ <para>
+ If a slave server was started with
+ <option>--log-warnings</option> enabled, the slave prints
+ messages to the error log to provide information about its
+ status, such as the binary log and relay log coordinates where
+ it starts its job, when it is switching to another relay log,
+ when it reconnects after a disconnect, and so forth.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_low-priority-updates">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>low-priority-updates option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>low-priority-updates option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--low-priority-updates</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:low-priority-updates"/>
+
+ <para>
+ Give table-modifying operations
+ (<literal role="stmt">INSERT</literal>,
+ <literal role="stmt">REPLACE</literal>,
+ <literal role="stmt">DELETE</literal>,
+ <literal role="stmt">UPDATE</literal>) lower priority than
+ selects. This can also be done via <literal>{INSERT | REPLACE
+ | DELETE | UPDATE} LOW_PRIORITY ...</literal> to lower the
+ priority of only one query, or by <literal>SET
+ LOW_PRIORITY_UPDATES=1</literal> to change the priority in one
+ thread. This affects only storage engines that use only
+ table-level locking (<literal>MyISAM</literal>,
+ <literal>MEMORY</literal>, <literal>MERGE</literal>). See
+ <xref linkend="table-locking"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_memlock">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>memlock option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>memlock option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--memlock</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:memlock"/>
+
+ <para>
+ Lock the <command>mysqld</command> process in memory. This
+ option might help if you have a problem where the operating
+ system is causing <command>mysqld</command> to swap to disk.
+ </para>
+
+ <para>
+ <option>--memlock</option> works on systems that support the
+ <literal>mlockall()</literal> system call; this includes
+ Solaris as well as most Linux distributions that use a 2.4 or
+ newer kernel. On Linux systems, you can tell whether or not
+ <literal>mlockall()</literal> (and thus this option) is
+ supported by checking to see whether or not it is defined in
+ the system <filename>mman.h</filename> file, like this:
+
+<programlisting>
+shell> <userinput>grep mlockall /usr/include/sys/mman.h</userinput>
+</programlisting>
+ </para>
+
+ <para>
+ If <literal>mlockall()</literal> is supported, you should see
+ in the output of the previous command something like the
+ following:
+
+<programlisting>
+extern int mlockall (int __flags) __THROW;
+</programlisting>
+ </para>
+
+ <important>
+ <para>
+ Using this option requires that you run the server as
+ <literal>root</literal>, which, for reasons of security, is
+ normally not a good idea. See
+ <xref linkend="changing-mysql-user"/>.
+ </para>
+
+ <para>
+ You must not try to use this option on a system that does
+ not support the <literal>mlockall()</literal> system call;
+ if you do so, <command>mysqld</command> will very likely
+ crash as soon as you try to start it.
+ </para>
+ </important>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_myisam-recover">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>myisam-recover option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>myisam-recover option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--myisam-recover[=<replaceable>option</replaceable>[,<replaceable>option</replaceable>]...]]</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:myisam-recover"/>
+
+ <para>
+ Set the <literal>MyISAM</literal> storage engine recovery
+ mode. The option value is any combination of the values of
+ <literal>DEFAULT</literal>, <literal>BACKUP</literal>,
+ <literal>FORCE</literal>, or <literal>QUICK</literal>. If you
+ specify multiple values, separate them by commas. Specifying
+ the option with no argument is the same as specifying
+ <literal>DEFAULT</literal>, and specifying with an explicit
+ value of <literal>""</literal> disables recovery
+ (same as not giving the option). If recovery is enabled, each
+ time <command>mysqld</command> opens a
+ <literal>MyISAM</literal> table, it checks whether the table
+ is marked as crashed or wasn't closed properly. (The last
+ option works only if you are running with external locking
+ disabled.) If this is the case, <command>mysqld</command> runs
+ a check on the table. If the table was corrupted,
+ <command>mysqld</command> attempts to repair it.
+ </para>
+
+ <para>
+ The following options affect how the repair works:
+ </para>
+
+ <informaltable>
+ <tgroup cols="2">
+ <colspec colwidth="15*"/>
+ <colspec colwidth="70*"/>
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Option</emphasis></entry>
+ <entry><emphasis role="bold">Description</emphasis></entry>
+ </row>
+ <row>
+ <entry><literal>DEFAULT</literal></entry>
+ <entry>Recovery without backup, forcing, or quick checking.</entry>
+ </row>
+ <row>
+ <entry><literal>BACKUP</literal></entry>
+ <entry>If the data file was changed during recovery, save a backup of the
+ <filename><replaceable>tbl_name</replaceable>.MYD</filename>
+ file as
+ <filename><replaceable>tbl_name-datetime</replaceable>.BAK</filename>.</entry>
+ </row>
+ <row>
+ <entry><literal>FORCE</literal></entry>
+ <entry>Run recovery even if we would lose more than one row from the
+ <filename>.MYD</filename> file.</entry>
+ </row>
+ <row>
+ <entry><literal>QUICK</literal></entry>
+ <entry>Don't check the rows in the table if there aren't any delete blocks.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>
+ Before the server automatically repairs a table, it writes a
+ note about the repair to the error log. If you want to be able
+ to recover from most problems without user intervention, you
+ should use the options <literal>BACKUP,FORCE</literal>. This
+ forces a repair of a table even if some rows would be deleted,
+ but it keeps the old data file as a backup so that you can
+ later examine what happened.
+ </para>
+
+ <para>
+ See <xref linkend="myisam-start"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_old-passwords">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>old-passwords option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>old-passwords option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--old-passwords</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:old-passwords"/>
+
+ <para>
+ Force the server to generate short (pre-4.1) password hashes
+ for new passwords. This is useful for compatibility when the
+ server must support older client programs. See
+ <xref linkend="password-hashing"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_old-style-user-limits">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>old-style-user-limits option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>old-style-user-limits option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--old-style-user-limits</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:old-style-user-limits"/>
+
+ <para>
+ Enable old-style user limits. (Before MySQL 5.0.3, account
+ resource limits were counted separately for each host from
+ which a user connected rather than per account row in the
+ <literal>user</literal> table.) See
+ <xref linkend="user-resources"/>. This option was added in
+ MySQL 5.0.3.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_one-thread">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>one-thread option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>one-thread option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--one-thread</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:one-thread"/>
+
+ <para>
+ Only use one thread (for debugging under Linux). This option
+ is available only if the server is built with debugging
+ enabled. See
+ <ulink url="http://forge.mysql.com/wiki/MySQL_Internals_Porting">MySQL
+ Internals: Porting</ulink>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_open-files-limit">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>open-files-limit option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>open-files-limit option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--open-files-limit=<replaceable>count</replaceable></option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:open-files-limit"/>
+
+ <para>
+ Changes the number of file descriptors available to
+ <command>mysqld</command>. You should try increasing the value
+ of this option if <command>mysqld</command> gives you the
+ error <literal>Too many open files</literal>.
+ <command>mysqld</command> uses the option value to reserve
+ descriptors with <function>setrlimit()</function>. If the
+ requested number of file descriptors cannot be allocated,
+ <command>mysqld</command> writes a warning to the error log.
+ </para>
+
+ <para>
+ <command>mysqld</command> may attempt to allocate more than
+ the requested number of descriptors (if they are available),
+ using the values of
+ <literal role="sysvar">max_connections</literal> and
+ <literal role="sysvar">table_cache</literal> to estimate
+ whether more descriptors will be needed.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_pid-file">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>pid-file option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>pid-file option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--pid-file=<replaceable>path</replaceable></option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:pid-file"/>
+
+ <para>
+ The pathname of the process ID file. This file is used by
+ other programs such as <command>mysqld_safe</command> to
+ determine the server's process ID.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_port">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>port option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>port option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--port=<replaceable>port_num</replaceable></option>,
+ <option>-P <replaceable>port_num</replaceable></option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:port"/>
+
+ <para>
+ The port number to use when listening for TCP/IP connections.
+ The port number must be 1024 or higher unless the server is
+ started by the <literal>root</literal> system user.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_port-open-timeout">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>port-open-timeout option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>port-open-timeout option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--port-open-timeout=<replaceable>num</replaceable></option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:port-open-timeout"/>
+
+ <para>
+ On some systems, when the server is stopped, the TCP/IP port
+ might not become available immediately. If the server is
+ restarted quickly afterward, its attempt to reopen the port
+ can fail. This option indicates how many seconds the server
+ should wait for the TCP/IP port to become free if it cannot be
+ opened. The default is not to wait. This option was added in
+ MySQL 5.0.19.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_safe-mode">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>safe-mode option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>safe-mode option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--safe-mode</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:safe-mode"/>
+
+ <para>
+ Skip some optimization stages.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_safe-show-database">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>safe-show-database option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>safe-show-database option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--safe-show-database</option>
+ (<emphasis>DEPRECATED</emphasis>)
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:safe-show-database"/>
+
+ <para>
+ See <xref linkend="privileges-provided"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_safe-user-create">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>safe-user-create option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>safe-user-create option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--safe-user-create</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:safe-user-create"/>
+
+ <para>
+ If this option is enabled, a user cannot create new MySQL
+ users by using the <literal role="stmt">GRANT</literal>
+ statement unless the user has the
+ <literal role="priv">INSERT</literal> privilege for the
+ <literal>mysql.user</literal> table or any column in the
+ table. If you want a user to have the ability to create new
+ users that have those privileges that the user has the right
+ to grant, you should grant the user the following privilege:
+ </para>
+
+<programlisting>
+GRANT INSERT(user) ON mysql.user TO '<replaceable>user_name</replaceable>'@'<replaceable>host_name</replaceable>';
+</programlisting>
+
+ <para>
+ This ensures that the user cannot change any privilege columns
+ directly, but has to use the
+ <literal role="stmt">GRANT</literal> statement to give
+ privileges to other users.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_secure-auth">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>secure-auth option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>secure-auth option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--secure-auth</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:secure-auth"/>
+
+ <para>
+ Disallow authentication by clients that attempt to use
+ accounts that have old (pre-4.1) passwords.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_secure-file-priv">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>secure-file-priv option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>secure-file-priv option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--secure-file-priv=<replaceable>path</replaceable></option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:secure-file-priv"/>
+
+ <para>
+ This option limits the effect of the
+ <literal role="func">LOAD_FILE()</literal> function and the
+ <literal role="stmt">LOAD DATA</literal> and <literal>SELECT
+ ... INTO OUTFILE</literal> statements to work only with files
+ in the specified directory.
+ </para>
+
+ <para>
+ This option was added in MySQL 5.0.38.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_shared-memory">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>shared-memory option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>shared-memory option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--shared-memory</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:shared-memory"/>
+
+ <para>
+ Enable shared-memory connections by local clients. This option
+ is available only on Windows.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_share-memory-base-name">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>shared-memory-base-name option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>shared-memory-base-name option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--shared-memory-base-name=<replaceable>name</replaceable></option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:shared-memory-base-name"/>
+
+ <para>
+ The name of shared memory to use for shared-memory
+ connections. This option is available only on Windows. The
+ default name is <literal>MYSQL</literal>. The name is case
+ sensitive.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_skip-bdb">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>skip-bdb option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>skip-bdb option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--skip-bdb</option>
+ </para>
+
+ <para>
+ Disable the <literal>BDB</literal> storage engine. This saves
+ memory and might speed up some operations. Do not use this
+ option if you require <literal>BDB</literal> tables.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_skip-concurrent-insert">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>skip-concurrent-insert option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>skip-concurrent-insert option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--skip-concurrent-insert</option>
+ </para>
+
+ <para>
+ Turn off the ability to select and insert at the same time on
+ <literal>MyISAM</literal> tables. (This is to be used only if
+ you think you have found a bug in this feature.) See
+ <xref linkend="concurrent-inserts"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_skip-external-locking">
+ <indexterm>
+ <primary>external locking</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>locking</primary>
+ <secondary>external</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>skip-external-locking option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>skip-external-locking option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--skip-external-locking</option>
+ </para>
+
+ <para>
+ Do not use external locking (system locking). For more
+ information about external locking, including conditions under
+ which it can and cannot be used, see
+ <xref linkend="external-locking"/>.
+ </para>
+
+ <para>
+ External locking has been disabled by default since MySQL 4.0.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_skip-grant-tables">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>skip-grant-tables option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>skip-grant-tables option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--skip-grant-tables</option>
+ </para>
+
+ <para>
+ This option causes the server not to use the privilege system
+ at all, which gives anyone with access to the server
+ <emphasis>unrestricted access to all databases</emphasis>. You
+ can cause a running server to start using the grant tables
+ again by executing <command>mysqladmin
+ flush-privileges</command> or <command>mysqladmin
+ reload</command> command from a system shell, or by issuing a
+ MySQL <literal role="stmt" condition="flush">FLUSH
+ PRIVILEGES</literal> statement after connecting to the server.
+ This option also suppresses loading of user-defined functions
+ (UDFs).
+ </para>
+
+ <para>
+ This option is unavailable if MySQL was configured with the
+ <option>--disable-grant-options</option> option. See
+ <xref linkend="configure-options"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_skip-host-cache">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>skip-host-cache option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>skip-host-cache option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--skip-host-cache</option>
+ </para>
+
+ <para>
+ Do not use the internal hostname cache for faster name-to-IP
+ resolution. Instead, query the DNS server every time a client
+ connects. See <xref linkend="dns"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_skip-innodb">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>skip-innodb option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>skip-innodb option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--skip-innodb</option>
+ </para>
+
+ <para>
+ Disable the <literal>InnoDB</literal> storage engine. This
+ saves memory and disk space and might speed up some
+ operations. Do not use this option if you require
+ <literal>InnoDB</literal> tables.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_skip-merge">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>skip-merge option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>skip-merge option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--skip-merge</option>
+ </para>
+
+ <para>
+ Disable the <literal>MERGE</literal> storage engine. This
+ option was added in MySQL 5.0.24. It can be used if the
+ following behavior is undesirable: If a user has access to
+ <literal>MyISAM</literal> table <replaceable>t</replaceable>,
+ that user can create a <literal>MERGE</literal> table
+ <replaceable>m</replaceable> that accesses
+ <replaceable>t</replaceable>. However, if the user's
+ privileges on <replaceable>t</replaceable> are subsequently
+ revoked, the user can continue to access
+ <replaceable>t</replaceable> by doing so through
+ <replaceable>m</replaceable>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_skip-name-resolve">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>skip-name-resolve option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>skip-name-resolve option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--skip-name-resolve</option>
+ </para>
+
+ <para>
+ Do not resolve hostnames when checking client connections. Use
+ only IP numbers. If you use this option, all
+ <literal>Host</literal> column values in the grant tables must
+ be IP numbers or <literal>localhost</literal>. See
+ <xref linkend="dns"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_skip-networking">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>skip-networking option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>skip-networking option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--skip-networking</option>
+ </para>
+
+ <para>
+ Don't listen for TCP/IP connections at all. All interaction
+ with <command>mysqld</command> must be made via named pipes or
+ shared memory (on Windows) or Unix socket files (on Unix).
+ This option is highly recommended for systems where only local
+ clients are allowed. See <xref linkend="dns"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>SSL options</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>SSL options</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--ssl*</option>
+ </para>
+
+ <para>
+ Options that begin with <option>--ssl</option> specify whether
+ to allow clients to connect via SSL and indicate where to find
+ SSL keys and certificates. See <xref linkend="ssl-options"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_standalone">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>standalone option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>standalone option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--standalone</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:standalone"/>
+
+ <para>
+ Instructs the MySQL server not to run as a service.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_symbolic-links">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>symbolic-links option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>symbolic-links option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>skip-symbolic-links option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>skip-symbolic-links option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--symbolic-links</option>,
+ <option>--skip-symbolic-links</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:symbolic-links"/>
+
+ <para>
+ Enable or disable symbolic link support. This option has
+ different effects on Windows and Unix:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ On Windows, enabling symbolic links allows you to
+ establish a symbolic link to a database directory by
+ creating a
+ <filename><replaceable>db_name</replaceable>.sym</filename>
+ file that contains the path to the real directory. See
+ <xref linkend="windows-symbolic-links"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ On Unix, enabling symbolic links means that you can link a
+ <literal>MyISAM</literal> index file or data file to
+ another directory with the <literal>INDEX
+ DIRECTORY</literal> or <literal>DATA DIRECTORY</literal>
+ options of the <literal role="stmt">CREATE TABLE</literal>
+ statement. If you delete or rename the table, the files
+ that its symbolic links point to also are deleted or
+ renamed. See <xref linkend="symbolic-links-to-tables"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_skip-safemalloc">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>skip-safemalloc option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>skip-safemalloc option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--skip-safemalloc</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:skip-safemalloc"/>
+
+ <para>
+ If MySQL is configured with
+ <option>--with-debug=full</option>, all MySQL programs check
+ for memory overruns during each memory allocation and memory
+ freeing operation. This checking is very slow, so for the
+ server you can avoid it when you don't need it by using the
+ <option>--skip-safemalloc</option> option.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_skip-show-database">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>skip-show-database option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>skip-show-database option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--skip-show-database</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:skip-show-database"/>
+
+ <para>
+ With this option, the <literal role="stmt">SHOW
+ DATABASES</literal> statement is allowed only to users who
+ have the <literal role="priv">SHOW DATABASES</literal>
+ privilege, and the statement displays all database names.
+ Without this option, <literal role="stmt">SHOW
+ DATABASES</literal> is allowed to all users, but displays each
+ database name only if the user has the
+ <literal role="priv">SHOW DATABASES</literal> privilege or
+ some privilege for the database. Note that
+ <emphasis>any</emphasis> global privilege is considered a
+ privilege for the database.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_skip-stack-trace">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>skip-stack-trace option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>skip-stack-trace option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--skip-stack-trace</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:skip-stack-trace"/>
+
+ <para>
+ Don't write stack traces. This option is useful when you are
+ running <command>mysqld</command> under a debugger. On some
+ systems, you also must use this option to get a core file. See
+ <ulink url="http://forge.mysql.com/wiki/MySQL_Internals_Porting">MySQL
+ Internals: Porting</ulink>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_skip-thread-priority">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>skip-thread-priority option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>skip-thread-priority option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--skip-thread-priority</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:skip-thread-priority"/>
+
+ <para>
+ Disable using thread priorities for faster response time.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_socket">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>socket option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>socket option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--socket=<replaceable>path</replaceable></option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:socket"/>
+
+ <remark>
+ The Unix description comes first because the option name
+ relates directly to the Unix meaning. Putting the Windows
+ meaning first makes this more confusing.
+ </remark>
+
+ <para>
+ On Unix, this option specifies the Unix socket file to use
+ when listening for local connections. The default value is
+ <filename>/tmp/mysql.sock</filename>. On Windows, the option
+ specifies the pipe name to use when listening for local
+ connections that use a named pipe. The default value is
+ <literal>MySQL</literal> (not case sensitive).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_sql-mode">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>sql-mode option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>sql-mode option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--sql-mode=<replaceable>value</replaceable>[,<replaceable>value</replaceable>[,<replaceable>value</replaceable>...]]</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:sql-mode"/>
+
+ <para>
+ Set the SQL mode. See <xref linkend="server-sql-mode"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_sysdate-is-now">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>sysdate-is-now option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>sysdate-is-now option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--sysdate-is-now</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:sysdate-is-now"/>
+
+ <para>
+ As of MySQL 5.0.13, <literal role="func">SYSDATE()</literal>
+ by default returns the time at which it executes, not the time
+ at which the statement in which it occurs begins executing.
+ This differs from the behavior of
+ <literal role="func">NOW()</literal>. This option causes
+ <literal role="func">SYSDATE()</literal> to be an alias for
+ <literal role="func">NOW()</literal>. For information about
+ the implications for binary logging and replication, see the
+ description for <literal role="func">SYSDATE()</literal> in
+ <xref linkend="date-and-time-functions"/> and for <literal>SET
+ TIMESTAMP</literal> in
+ <xref linkend="server-session-variables"/>.
+ </para>
+
+ <para>
+ This option was added in MySQL 5.0.20.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_tc-heuristic-recover">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>tc-heuristic-recover option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>tc-heuristic-recover option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--tc-heuristic-recover={COMMIT|ROLLBACK}</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:tc-heuristic-recover"/>
+
+ <para>
+ The type of decision to use in the heuristic recovery process.
+ Currently, this option is unused. Added in MySQL 5.0.3.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_temp-pool">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>temp-pool option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>temp-pool option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--temp-pool</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:temp-pool"/>
+
+ <para>
+ This option causes most temporary files created by the server
+ to use a small set of names, rather than a unique name for
+ each new file. This works around a problem in the Linux kernel
+ dealing with creating many new files with different names.
+ With the old behavior, Linux seems to <quote>leak</quote>
+ memory, because it is being allocated to the directory entry
+ cache rather than to the disk cache.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_transaction-isolation">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>transaction-isolation option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>transaction-isolation option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--transaction-isolation=<replaceable>level</replaceable></option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:transaction-isolation"/>
+
+ <para>
+ Sets the default transaction isolation level. The
+ <literal>level</literal> value can be
+ <literal role="isolevel">READ-UNCOMMITTED</literal>,
+ <literal role="isolevel">READ-COMMITTED</literal>,
+ <literal role="isolevel">REPEATABLE-READ</literal>, or
+ <literal role="isolevel">SERIALIZABLE</literal>. See
+ <xref linkend="set-transaction"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_tmpdir">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>tmpdir option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>tmpdir option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--tmpdir=<replaceable>path</replaceable></option>,
+ <option>-t <replaceable>path</replaceable></option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:tmpdir"/>
+
+ <para>
+ The path of the directory to use for creating temporary files.
+ It might be useful if your default <literal>/tmp</literal>
+ directory resides on a partition that is too small to hold
+ temporary tables. This option accepts several paths that are
+ used in round-robin fashion. Paths should be separated by
+ colon characters (<quote><literal>:</literal></quote>) on Unix
+ and semicolon characters (<quote><literal>;</literal></quote>)
+ on Windows, NetWare, and OS/2. If the MySQL server is acting
+ as a replication slave, you should not set
+ <option>--tmpdir</option> to point to a directory on a
+ memory-based filesystem or to a directory that is cleared when
+ the server host restarts. For more information about the
+ storage location of temporary files, see
+ <xref linkend="temporary-files"/>. A replication slave needs
+ some of its temporary files to survive a machine restart so
+ that it can replicate temporary tables or
+ <literal role="stmt" condition="load-data">LOAD DATA
+ INFILE</literal> operations. If files in the temporary file
+ directory are lost when the server restarts, replication
+ fails.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_user">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>user option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>user option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--user={<replaceable>user_name</replaceable>|<replaceable>user_id</replaceable>}</option>,
+ <option>-u
+ {<replaceable>user_name</replaceable>|<replaceable>user_id</replaceable>}</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:user"/>
+
+ <para>
+ Run the <command>mysqld</command> server as the user having
+ the name <replaceable>user_name</replaceable> or the numeric
+ user ID <replaceable>user_id</replaceable>.
+ (<quote>User</quote> in this context refers to a system login
+ account, not a MySQL user listed in the grant tables.)
+ </para>
+
+ <para>
+ This option is <emphasis>mandatory</emphasis> when starting
+ <command>mysqld</command> as <literal>root</literal>. The
+ server changes its user ID during its startup sequence,
+ causing it to run as that particular user rather than as
+ <literal>root</literal>. See
+ <xref linkend="security-guidelines"/>.
+ </para>
+
+ <para>
+ To avoid a possible security hole where a user adds a
+ <option>--user=root</option> option to a
+ <filename>my.cnf</filename> file (thus causing the server to
+ run as <literal>root</literal>), <command>mysqld</command>
+ uses only the first <option>--user</option> option specified
+ and produces a warning if there are multiple
+ <option>--user</option> options. Options in
+ <filename>/etc/my.cnf</filename> and
+ <filename>$MYSQL_HOME/my.cnf</filename> are processed before
+ command-line options, so it is recommended that you put a
+ <option>--user</option> option in
+ <filename>/etc/my.cnf</filename> and specify a value other
+ than <literal>root</literal>. The option in
+ <filename>/etc/my.cnf</filename> is found before any other
+ <option>--user</option> options, which ensures that the server
+ runs as a user other than <literal>root</literal>, and that a
+ warning results if any other <option>--user</option> option is
+ found.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_version">
+ <indexterm>
+ <primary>mysqld</primary>
+ <secondary>version option</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>version option</primary>
+ <secondary>mysqld</secondary>
+ </indexterm>
+
+ <option>--version</option>, <option>-V</option>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:version"/>
+
+ <para>
+ Display version information and exit.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ You can assign a value to a server system variable by using an
+ option of the form
+ <option>--<replaceable>var_name</replaceable>=<replaceable>value</replaceable></option>.
+ For example, <option>--key_buffer_size=32M</option> sets the
+ <literal role="sysvar">key_buffer_size</literal> variable to a
+ value of 32MB.
+ </para>
+
+ <para>
+ Note that when you assign a value to a variable, MySQL might
+ automatically correct the value to stay within a given range, or
+ adjust the value to the closest allowable value if only certain
+ values are allowed.
+ </para>
+
+ <para>
+ If you want to restrict the maximum value to which a variable can
+ be set at runtime with
+ <literal role="stmt" condition="set-option">SET</literal>, you can
+ define this by using the
+ <option>--maximum-<replaceable>var_name</replaceable>=<replaceable>value</replaceable></option>
+ command-line option.
+ </para>
+
+ <para>
+ It is also possible to set variables by using
+ <option>--set-variable=<replaceable>var_name</replaceable>=<replaceable>value</replaceable></option>
+ or <option>-O
+ <replaceable>var_name</replaceable>=<replaceable>value</replaceable></option>
+ syntax. <emphasis>This syntax is deprecated</emphasis>.
+ </para>
+
+ <para>
+ You can change the values of most system variables for a running
+ server with the
+ <literal role="stmt" condition="set-option">SET</literal>
+ statement. See <xref linkend="set-option"/>.
+ </para>
+
+ <para>
+ <xref linkend="server-system-variables"/>, provides a full
+ description for all variables, and additional information for
+ setting them at server startup and runtime.
+ <xref linkend="server-parameters"/>, includes information on
+ optimizing the server by tuning system variables.
+ </para>
+
+ </section>
+
+ <section id="server-system-variables">
+
+ <title>Server System Variables</title>
+
+ <indexterm>
+ <primary>system variables</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>server variables</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>variables</primary>
+ <secondary>server</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>variables</primary>
+ <secondary>system</secondary>
+ </indexterm>
+
+ <para>
+ 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. Most of them can be changed
+ dynamically while the server is running by means of the
+ <literal role="stmt" condition="set-option">SET</literal>
+ 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.
+ </para>
+
+ <para>
+ There are several ways to see the names and values of system
+ variables:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ 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:
+ </para>
+
+<programlisting>
+mysqld --verbose --help
+</programlisting>
+ </listitem>
+
+ <listitem>
+ <para>
+ 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:
+ </para>
+
+<programlisting>
+mysqld --no-defaults --verbose --help
+</programlisting>
+ </listitem>
+
+ <listitem>
+ <para>
+ To see the current values used by a running server, use the
+ <literal role="stmt">SHOW VARIABLES</literal> statement.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ This section provides a description of each system variable.
+ Variables with no version indicated are present in all MySQL
+ ¤t-series; releases. For historical information concerning
+ their implementation, please see <ulink url="/4.1/en/"/>.
+ </para>
+
+ <para>
+ The following table lists all available system variables:
+ </para>
+
+ <para condition="dynamic:optvar:fullsummary" role="5.0:mysqld:systemvar:System Variable Summary"/>
+
+ <para>
+ For additional system variable information, see these sections:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <xref linkend="server-session-variables"/>, describes system
+ variables that exist only as session variables (that is, they
+ do not have any global counterpart).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <xref linkend="using-system-variables"/>, discusses the syntax
+ for setting and displaying system variable values.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <xref linkend="dynamic-system-variables"/>, lists the
+ variables that can be set at runtime.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Information on tuning system variables can be found in
+ <xref linkend="server-parameters"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <xref linkend="innodb-parameters"/>, lists
+ <literal>InnoDB</literal> system variables.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <xref linkend="mysql-cluster-system-variables"/>, lists system
+ variables which are specific to MySQL Cluster.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ For information on server system variables specific to
+ replication, see <xref linkend="replication-options"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <note>
+ <para>
+ Some of the following variable descriptions refer to
+ <quote>enabling</quote> or <quote>disabling</quote> a variable.
+ These variables can be enabled with the
+ <literal role="stmt" condition="set-option">SET</literal>
+ statement by setting them to <literal>ON</literal> or
+ <literal>1</literal>, or disabled by setting them to
+ <literal>OFF</literal> or <literal>0</literal>. However, to set
+ such a variable on the command line or in an option file, you
+ must set it to <literal>1</literal> or <literal>0</literal>;
+ setting it to <literal>ON</literal> or <literal>OFF</literal>
+ will not work. For example, on the command line,
+ <option>--delay_key_write=1</option> works but
+ <option>--delay_key_write=ON</option> does not.
+ </para>
+ </note>
+
+ <para>
+ Values for buffer sizes, lengths, and stack sizes are given in
+ bytes unless otherwise specified.
+ </para>
+
+ <itemizedlist>
+
+ <remark role="todo">
+ Move examples to appropriate section of Replication chapter once
+ particulars of multiple-master replication setup are determined.
+ (E.g. how to CHANGE MASTER TO in such circumstances.)
+ </remark>
+
+ <listitem>
+ <para id="sysvar_automatic_sp_privileges">
+ <indexterm>
+ <primary>automatic_sp_privileges system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>automatic_sp_privileges</secondary>
+ </indexterm>
+
+ <literal role="sysvar">automatic_sp_privileges</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:automatic_sp_privileges"/>
+
+ <para>
+ When this variable has a value of 1 (the default), the server
+ automatically grants the
+ <literal role="priv">EXECUTE</literal> and
+ <literal role="priv">ALTER ROUTINE</literal> privileges to the
+ creator of a stored routine, if the user cannot already
+ execute and alter or drop the routine. (The
+ <literal role="priv">ALTER ROUTINE</literal> privilege is
+ required to drop the routine.) The server also automatically
+ drops those privileges when the creator drops the routine. If
+ <literal role="sysvar">automatic_sp_privileges</literal> is 0,
+ the server does not automatically add or drop these
+ privileges. This variable was added in MySQL 5.0.3.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_back_log">
+ <indexterm>
+ <primary>back_log system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>back_log</secondary>
+ </indexterm>
+
+ <literal role="sysvar">back_log</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:back_log"/>
+
+ <para>
+ 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
+ <literal role="sysvar">back_log</literal> 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.
+ </para>
+
+ <para>
+ 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
+ <literal>listen()</literal> system call should have more
+ details. Check your OS documentation for the maximum value for
+ this variable. <literal role="sysvar">back_log</literal>
+ cannot be set higher than your operating system limit.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_basedir">
+ <indexterm>
+ <primary>basedir system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>basedir</secondary>
+ </indexterm>
+
+ <literal role="sysvar">basedir</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:basedir"/>
+
+ <para>
+ The MySQL installation base directory. This variable can be
+ set with the <option>--basedir</option> option. Relative
+ pathnames for other variables usually are resolved relative to
+ the base directory.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_bdb_cache_size">
+ <indexterm>
+ <primary>bdb_cache_size system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>bdb_cache_size</secondary>
+ </indexterm>
+
+ <literal role="sysvar">bdb_cache_size</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:bdb_cache_size"/>
+
+ <para>
+ The size of the buffer that is allocated for caching indexes
+ and rows for <literal>BDB</literal> tables. If you don't use
+ <literal>BDB</literal> tables, you should start
+ <command>mysqld</command> with <option>--skip-bdb</option> to
+ not allocate memory for this cache.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_bdb-home">
+ <indexterm>
+ <primary>bdb_home system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>bdb_home</secondary>
+ </indexterm>
+
+ <literal>bdb_home</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:bdb-home"/>
+
+ <para>
+ The base directory for <literal>BDB</literal> tables. This
+ should be assigned the same value as the
+ <literal role="sysvar">datadir</literal> variable.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_bdb_log_buffer_size">
+ <indexterm>
+ <primary>bdb_log_buffer_size system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>bdb_log_buffer_size</secondary>
+ </indexterm>
+
+ <literal>bdb_log_buffer_size</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:bdb_log_buffer_size"/>
+
+ <para>
+ The size of the buffer that is allocated for caching indexes
+ and rows for <literal>BDB</literal> tables. If you don't use
+ <literal>BDB</literal> tables, you should set this to 0 or
+ start <command>mysqld</command> with
+ <option>--skip-bdb</option> to not allocate memory for this
+ cache.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_bdb-logdir">
+ <indexterm>
+ <primary>bdb_logdir system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>bdb_logdir</secondary>
+ </indexterm>
+
+ <literal>bdb_logdir</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:bdb-logdir"/>
+
+ <para>
+ The directory where the <literal>BDB</literal> storage engine
+ writes its log files. This variable can be set with the
+ <option>--bdb-logdir</option> option.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_bdb_max_lock">
+ <indexterm>
+ <primary>bdb_max_lock system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>bdb_max_lock</secondary>
+ </indexterm>
+
+ <literal>bdb_max_lock</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:bdb_max_lock"/>
+
+ <para>
+ The maximum number of locks that can be active for a
+ <literal>BDB</literal> table (10,000 by default). You should
+ increase this value if errors such as the following occur when
+ you perform long transactions or when
+ <command>mysqld</command> has to examine many rows to
+ calculate a query:
+ </para>
+
+<programlisting>
+bdb: Lock table is out of available locks
+Got error 12 from ...
+</programlisting>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_bdb-shared-data">
+ <indexterm>
+ <primary>bdb_shared_data system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>bdb_shared_data</secondary>
+ </indexterm>
+
+ <literal>bdb_shared_data</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:bdb-shared-data"/>
+
+ <para>
+ This is <literal>ON</literal> if you are using
+ <option>--bdb-shared-data</option> to start Berkeley DB in
+ multi-process mode. (Do not use <literal>DB_PRIVATE</literal>
+ when initializing Berkeley DB.)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_bdb-tmpdir">
+ <indexterm>
+ <primary>bdb_tmpdir system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>bdb_tmpdir</secondary>
+ </indexterm>
+
+ <literal>bdb_tmpdir</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:bdb-tmpdir"/>
+
+ <para>
+ The <literal>BDB</literal> temporary file directory.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_binlog_cache_size">
+ <indexterm>
+ <primary>binlog_cache_size system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>binlog_cache_size</secondary>
+ </indexterm>
+
+ <literal role="sysvar">binlog_cache_size</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:binlog_cache_size"/>
+
+ <para>
+ 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 if the server has the binary
+ log enabled (<option>--log-bin</option> option). If you often
+ use large, multiple-statement transactions, you can increase
+ this cache size to get more performance. The
+ <literal role="statvar">Binlog_cache_use</literal> and
+ <literal role="statvar">Binlog_cache_disk_use</literal> status
+ variables can be useful for tuning the size of this variable.
+ See <xref linkend="binary-log"/>.
+ </para>
+
+ <formalpara role="mnmas">
+
+ <title>MySQL Enterprise</title>
+
+ <para>
+ For recommendations on the optimum setting for
+ <literal role="sysvar">binlog_cache_size</literal> subscribe
+ to the MySQL Enterprise Monitor. For more information, see
+ <ulink url="advisors.html"/>.
+ </para>
+
+ </formalpara>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_bulk_insert_buffer_size">
+ <indexterm>
+ <primary>bulk_insert_buffer_size system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>bulk_insert_buffer_size</secondary>
+ </indexterm>
+
+ <literal role="sysvar">bulk_insert_buffer_size</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:bulk_insert_buffer_size"/>
+
+ <para>
+ <literal>MyISAM</literal> uses a special tree-like cache to
+ make bulk inserts faster for <literal>INSERT ...
+ SELECT</literal>, <literal>INSERT ... VALUES (...), (...),
+ ...</literal>, and
+ <literal role="stmt" condition="load-data">LOAD DATA
+ INFILE</literal> 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.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_character_set_client">
+ <indexterm>
+ <primary>character_set_client system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>character_set_client</secondary>
+ </indexterm>
+
+ <literal role="sysvar">character_set_client</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:character_set_client"/>
+
+ <para>
+ The character set for statements that arrive from the client.
+ The session value of this variable is set using the character
+ set requested by the client when the client connects to the
+ server. (Many clients support a
+ <option>--default-character-set</option> option to enable this
+ character set to be specified explicitly. See also
+ <xref linkend="charset-connection"/>.) The global value of the
+ variable is used to set the session value in cases when the
+ client-requested value is unknown or not available, or the
+ server is configured to ignore client requests:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The client is from a version of MySQL older than MySQL
+ 4.1, and thus does not request a character set.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The client requests a character set not known to the
+ server. For example, a Japanese-enabled client requests
+ <literal>sjis</literal> when connecting to a server not
+ configured with <literal>sjis</literal> support.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>mysqld</command> was started with the
+ <option>--skip-character-set-client-handshake</option>
+ option, which causes it to ignore client character set
+ configuration. This reproduces MySQL 4.0 behavior and is
+ useful should you wish to upgrade the server without
+ upgrading all the clients.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_character_set_connection">
+ <indexterm>
+ <primary>character_set_connection system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>character_set_connection</secondary>
+ </indexterm>
+
+ <literal role="sysvar">character_set_connection</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:character_set_connection"/>
+
+ <remark role="todo">
+ Wording: "introducer"?
+ </remark>
+
+ <para>
+ The character set used for literals that do not have a
+ character set introducer and for number-to-string conversion.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_character_set_database">
+ <indexterm>
+ <primary>character_set_database system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>character_set_database</secondary>
+ </indexterm>
+
+ <literal role="sysvar">character_set_database</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:character_set_database"/>
+
+ <para>
+ 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 <literal role="sysvar">character_set_server</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_character_set_filesystem">
+ <indexterm>
+ <primary>character_set_filesystem system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>character_set_filesystem</secondary>
+ </indexterm>
+
+ <literal role="sysvar">character_set_filesystem</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:character-set-filesystem"/>
+
+ <para>
+ The filesystem character set. This variable is used to
+ interpret string literals that refer to filenames, such as in
+ the <literal role="stmt" condition="load-data">LOAD DATA
+ INFILE</literal> and <literal>SELECT ... INTO
+ OUTFILE</literal> statements and the
+ <literal role="func">LOAD_FILE()</literal> function. Such
+ filenames are converted from
+ <literal role="sysvar">character_set_client</literal> to
+ <literal role="sysvar">character_set_filesystem</literal>
+ before the file opening attempt occurs. The default value is
+ <literal>binary</literal>, which means that no conversion
+ occurs. For systems on which multi-byte filenames are allowed,
+ a different value may be more appropriate. For example, if the
+ system represents filenames using UTF-8, set
+ <literal role="sysvar">character_set_filesystem</literal> to
+ <literal>'utf8'</literal>. This variable was added in MySQL
+ 5.0.19.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_character_set_results">
+ <indexterm>
+ <primary>character_set_results system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>character_set_results</secondary>
+ </indexterm>
+
+ <literal role="sysvar">character_set_results</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:character_set_results"/>
+
+ <para>
+ The character set used for returning query results to the
+ client.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_character_set_server">
+ <indexterm>
+ <primary>character_set_server system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>character_set_server</secondary>
+ </indexterm>
+
+ <literal role="sysvar">character_set_server</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:character-set-server"/>
+
+ <para>
+ The server's default character set.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_character_set_system">
+ <indexterm>
+ <primary>character_set_system system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>character_set_system</secondary>
+ </indexterm>
+
+ <literal role="sysvar">character_set_system</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:character_set_system"/>
+
+ <para>
+ The character set used by the server for storing identifiers.
+ The value is always <literal>utf8</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_character_sets_dir">
+ <indexterm>
+ <primary>character_sets_dir system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>character_sets_dir</secondary>
+ </indexterm>
+
+ <literal role="sysvar">character_sets_dir</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:character-sets-dir"/>
+
+ <para>
+ The directory where character sets are installed.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_collation_connection">
+ <indexterm>
+ <primary>collation_connection system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>collation_connection</secondary>
+ </indexterm>
+
+ <literal role="sysvar">collation_connection</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:collation_connection"/>
+
+ <para>
+ The collation of the connection character set.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_collation_database">
+ <indexterm>
+ <primary>collation_database system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>collation_database</secondary>
+ </indexterm>
+
+ <literal role="sysvar">collation_database</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:collation_database"/>
+
+ <para>
+ 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
+ <literal role="sysvar">collation_server</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_collation_server">
+ <indexterm>
+ <primary>collation_server system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>collation_server</secondary>
+ </indexterm>
+
+ <literal role="sysvar">collation_server</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:collation-server"/>
+
+ <para>
+ The server's default collation.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_completion_type">
+ <indexterm>
+ <primary>completion_type system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>completion_type</secondary>
+ </indexterm>
+
+ <literal role="sysvar">completion_type</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:completion_type"/>
+
+ <para>
+ The transaction completion type:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ If the value is 0 (the default),
+ <literal role="stmt">COMMIT</literal> and
+ <literal role="stmt" condition="commit">ROLLBACK</literal>
+ are unaffected.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ If the value is 1, <literal role="stmt">COMMIT</literal>
+ and
+ <literal role="stmt" condition="commit">ROLLBACK</literal>
+ are equivalent to <literal>COMMIT AND CHAIN</literal> and
+ <literal>ROLLBACK AND CHAIN</literal>, respectively. (A
+ new transaction starts immediately with the same isolation
+ level as the just-terminated transaction.)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ If the value is 2, <literal role="stmt">COMMIT</literal>
+ and
+ <literal role="stmt" condition="commit">ROLLBACK</literal>
+ are equivalent to <literal>COMMIT RELEASE</literal> and
+ <literal>ROLLBACK RELEASE</literal>, respectively. (The
+ server disconnects after terminating the transaction.)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ This variable was added in MySQL 5.0.3
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_concurrent_insert">
+ <indexterm>
+ <primary>concurrent_insert system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>concurrent_insert</secondary>
+ </indexterm>
+
+ <literal role="sysvar">concurrent_insert</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:concurrent_insert"/>
+
+ <para>
+ If 1 (the default), MySQL allows
+ <literal role="stmt">INSERT</literal> and
+ <literal role="stmt">SELECT</literal> statements to run
+ concurrently for <literal>MyISAM</literal> tables that have no
+ free blocks in the middle of the data file. You can turn this
+ option off by starting <command>mysqld</command> with
+ <option>--safe</option> or <option>--skip-new</option>.
+ </para>
+
+ <para>
+ In MySQL 5.0.6, this variable was changed to take three
+ integer values:
+ </para>
+
+ <informaltable>
+ <tgroup cols="2">
+ <colspec colwidth="10*"/>
+ <colspec colwidth="75*"/>
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Value</emphasis></entry>
+ <entry><emphasis role="bold">Description</emphasis></entry>
+ </row>
+ <row>
+ <entry>0</entry>
+ <entry>Off</entry>
+ </row>
+ <row>
+ <entry>1</entry>
+ <entry>(Default) Enables concurrent insert for <literal>MyISAM</literal> tables
+ that don't have holes</entry>
+ </row>
+ <row>
+ <entry>2</entry>
+ <entry>Enables concurrent inserts for all <literal>MyISAM</literal> tables,
+ even those that have holes. For a table with a hole,
+ new rows are inserted at the end of the table if it is
+ in use by another thread. Otherwise, MySQL acquires a
+ normal write lock and inserts the row into the hole.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>
+ See also <xref linkend="concurrent-inserts"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_connect_timeout">
+ <indexterm>
+ <primary>timeout</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>connect_timeout system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>connect_timeout</secondary>
+ </indexterm>
+
+ <literal role="sysvar">connect_timeout</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:connect_timeout"/>
+
+ <para>
+ The number of seconds that the <command>mysqld</command>
+ server waits for a connect packet before responding with
+ <literal>Bad handshake</literal>. The default value is 10
+ seconds as of MySQL 5.0.52 and 5 seconds before that.
+ </para>
+
+ <para>
+ Increasing the
+ <literal role="sysvar">connect_timeout</literal> value might
+ help if clients frequently encounter errors of the form
+ <literal>Lost connection to MySQL server at
+ '<replaceable>XXX</replaceable>', system error:
+ <replaceable>errno</replaceable></literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_datadir">
+ <indexterm>
+ <primary>datadir system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>datadir</secondary>
+ </indexterm>
+
+ <literal role="sysvar">datadir</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:datadir"/>
+
+ <para>
+ The MySQL data directory. This variable can be set with the
+ <option>--datadir</option> option.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_date_format">
+ <indexterm>
+ <primary>date_format system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>date_format</secondary>
+ </indexterm>
+
+ <literal role="sysvar">date_format</literal>
+ </para>
+
+ <para>
+ This variable is unused.
+ </para>
+
+<!--
+ <para>
+ Determines how the server converts <literal role="type">DATE</literal>
+ values to strings. This variable is available as a global,
+ local, or command-line option.
+ <replaceable>format_str</replaceable> can be specified
+ conveniently using the <literal role="func">GET_FORMAT()</literal>
+ function. See <xref linkend="date-and-time-functions"/>.
+ </para>
+-->
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_datetime_format">
+ <indexterm>
+ <primary>datetime_format system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>datetime_format</secondary>
+ </indexterm>
+
+ <literal role="sysvar">datetime_format</literal>
+ </para>
+
+ <para>
+ This variable is unused.
+ </para>
+
+<!--
+ <para>
+ Determines how the server converts
+ <literal role="type">DATETIME</literal> values to strings. This variable
+ is available as a global, local, or command-line option.
+ <replaceable>format_str</replaceable> can be specified
+ conveniently using the <literal role="func">GET_FORMAT()</literal>
+ function. See <xref linkend="date-and-time-functions"/>.
+ </para>
+-->
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_default_week_format">
+ <indexterm>
+ <primary>default_week_format system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>default_week_format</secondary>
+ </indexterm>
+
+ <literal role="sysvar">default_week_format</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:default_week_format"/>
+
+ <para>
+ The default mode value to use for the
+ <literal role="func">WEEK()</literal> function. See
+ <xref linkend="date-and-time-functions"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_delay_key_write">
+ <indexterm>
+ <primary>delay_key_write system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>delay_key_write</secondary>
+ </indexterm>
+
+ <literal role="sysvar">delay_key_write</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:delay-key-write"/>
+
+ <para>
+ This option applies only to <literal>MyISAM</literal> tables.
+ It can have one of the following values to affect handling of
+ the <literal>DELAY_KEY_WRITE</literal> table option that can
+ be used in <literal role="stmt">CREATE TABLE</literal>
+ statements.
+ </para>
+
+ <informaltable>
+ <tgroup cols="2">
+ <colspec colwidth="10*"/>
+ <colspec colwidth="75*"/>
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Option</emphasis></entry>
+ <entry><emphasis role="bold">Description</emphasis></entry>
+ </row>
+ <row>
+ <entry><literal>OFF</literal></entry>
+ <entry><literal>DELAY_KEY_WRITE</literal> is ignored.</entry>
+ </row>
+ <row>
+ <entry><literal>ON</literal></entry>
+ <entry>MySQL honors any <literal>DELAY_KEY_WRITE</literal> option specified in
+ <literal role="stmt">CREATE TABLE</literal>
+ statements. This is the default value.</entry>
+ </row>
+ <row>
+ <entry><literal>ALL</literal></entry>
+ <entry>All new opened tables are treated as if they were created with the
+ <literal>DELAY_KEY_WRITE</literal> option enabled.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>
+ If <literal>DELAY_KEY_WRITE</literal> 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 <literal>MyISAM</literal> tables
+ by starting the server with the
+ <option>--myisam-recover</option> option (for example,
+ <option>--myisam-recover=BACKUP,FORCE</option>). See
+ <xref linkend="server-options"/>, and
+ <xref linkend="myisam-start"/>.
+ </para>
+
+ <para>
+ Note that if you enable external locking with
+ <option>--external-locking</option>, there is no protection
+ against index corruption for tables that use delayed key
+ writes.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_delayed_insert_limit">
+ <indexterm>
+ <primary>delayed_insert_limit system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>delayed_insert_limit</secondary>
+ </indexterm>
+
+ <literal role="sysvar">delayed_insert_limit</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:delayed_insert_limit"/>
+
+ <para>
+ After inserting
+ <literal role="sysvar">delayed_insert_limit</literal> delayed
+ rows, the <literal>INSERT DELAYED</literal> handler thread
+ checks whether there are any
+ <literal role="stmt">SELECT</literal> statements pending. If
+ so, it allows them to execute before continuing to insert
+ delayed rows.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_delayed_insert_timeout">
+ <indexterm>
+ <primary>delayed_insert_timeout system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>delayed_insert_timeout</secondary>
+ </indexterm>
+
+ <literal role="sysvar">delayed_insert_timeout</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:delayed_insert_timeout"/>
+
+ <para>
+ How many seconds an <literal>INSERT DELAYED</literal> handler
+ thread should wait for <literal role="stmt">INSERT</literal>
+ statements before terminating.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_delayed_queue_size">
+ <indexterm>
+ <primary>delayed_queue_size system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>delayed_queue_size</secondary>
+ </indexterm>
+
+ <literal role="sysvar">delayed_queue_size</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:delayed_queue_size"/>
+
+ <para>
+ This is a per-table limit on the number of rows to queue when
+ handling <literal>INSERT DELAYED</literal> statements. If the
+ queue becomes full, any client that issues an <literal>INSERT
+ DELAYED</literal> statement waits until there is room in the
+ queue again.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_div_precision_increment">
+ <indexterm>
+ <primary>div_precision_increment system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>div_precision_increment</secondary>
+ </indexterm>
+
+ <literal role="sysvar">div_precision_increment</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:div_precision_increment"/>
+
+ <para>
+ This variable indicates the number of digits by which to
+ increase the scale of the result of division operations
+ performed with the
+ <literal role="op" condition="divide">/</literal> operator.
+ The default value is 4. The minimum and maximum values are 0
+ and 30, respectively. The following example illustrates the
+ effect of increasing the default value.
+ </para>
+
+<programlisting>
+mysql> <userinput>SELECT 1/7;</userinput>
++--------+
+| 1/7 |
++--------+
+| 0.1429 |
++--------+
+mysql> <userinput>SET div_precision_increment = 12;</userinput>
+mysql> <userinput>SELECT 1/7;</userinput>
++----------------+
+| 1/7 |
++----------------+
+| 0.142857142857 |
++----------------+
+</programlisting>
+
+ <para>
+ This variable was added in MySQL 5.0.6.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_expire_logs_days">
+ <indexterm>
+ <primary>expire_logs_days system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>expire_logs_days</secondary>
+ </indexterm>
+
+ <literal role="sysvar">expire_logs_days</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:expire_logs_days"/>
+
+ <para>
+ The number of days for automatic binary log removal. The
+ default is 0, which means <quote>no automatic removal.</quote>
+ Possible removals happen at startup and at binary log
+ rotation.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_flush">
+ <indexterm>
+ <primary>flush system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>flush</secondary>
+ </indexterm>
+
+ <literal role="sysvar">flush</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:flush"/>
+
+ <para>
+ If <literal>ON</literal>, 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 <xref linkend="crashing"/>. This
+ variable is set to <literal>ON</literal> if you start
+ <command>mysqld</command> with the <option>--flush</option>
+ option.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_flush_time">
+ <indexterm>
+ <primary>flush_time system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>flush_time</secondary>
+ </indexterm>
+
+ <literal role="sysvar">flush_time</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:flush_time"/>
+
+ <para>
+ If this is set to a non-zero value, all tables are closed
+ every <literal role="sysvar">flush_time</literal> seconds to
+ free up resources and synchronize unflushed data to disk. We
+ recommend that this option be used only on systems with
+ minimal resources.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_ft_boolean_syntax">
+ <indexterm>
+ <primary>ft_boolean_syntax system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>ft_boolean_syntax</secondary>
+ </indexterm>
+
+ <literal role="sysvar">ft_boolean_syntax</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:ft_boolean_syntax"/>
+
+ <para>
+ The list of operators supported by boolean full-text searches
+ performed using <literal>IN BOOLEAN MODE</literal>. See
+ <xref linkend="fulltext-boolean"/>.
+ </para>
+
+ <para>
+ The default variable value is
+ <literal>'+ -><()~*:""&|'</literal>.
+ The rules for changing the value are as follows:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Operator function is determined by position within the
+ string.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The replacement value must be 14 characters.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Each character must be an ASCII non-alphanumeric
+ character.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Either the first or second character must be a space.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ 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.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Positions 10, 13, and 14 (which by default are set to
+ <quote><literal>:</literal></quote>,
+ <quote><literal>&</literal></quote>, and
+ <quote><literal>|</literal></quote>) are reserved for
+ future extensions.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_ft_max_word_len">
+ <indexterm>
+ <primary>ft_max_word_len system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>ft_max_word_len</secondary>
+ </indexterm>
+
+ <literal role="sysvar">ft_max_word_len</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:ft_max_word_len"/>
+
+ <para>
+ The maximum length of the word to be included in a
+ <literal>FULLTEXT</literal> index.
+ </para>
+
+ <note>
+ <para>
+ <literal>FULLTEXT</literal> indexes must be rebuilt after
+ changing this variable. Use <literal>REPAIR TABLE
+ <replaceable>tbl_name</replaceable> QUICK</literal>.
+ </para>
+ </note>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_ft_min_word_len">
+ <indexterm>
+ <primary>ft_min_word_len system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>ft_min_word_len</secondary>
+ </indexterm>
+
+ <literal role="sysvar">ft_min_word_len</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:ft_min_word_len"/>
+
+ <para>
+ The minimum length of the word to be included in a
+ <literal>FULLTEXT</literal> index.
+ </para>
+
+ <note>
+ <para>
+ <literal>FULLTEXT</literal> indexes must be rebuilt after
+ changing this variable. Use <literal>REPAIR TABLE
+ <replaceable>tbl_name</replaceable> QUICK</literal>.
+ </para>
+ </note>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_ft_query_expansion_limit">
+ <indexterm>
+ <primary>ft_query_expansion_limit system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>ft_query_expansion_limit</secondary>
+ </indexterm>
+
+ <literal role="sysvar">ft_query_expansion_limit</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:ft_query_expansion_limit"/>
+
+ <para>
+ The number of top matches to use for full-text searches
+ performed using <literal>WITH QUERY EXPANSION</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_ft_stopword_file">
+ <indexterm>
+ <primary>ft_stopword_file system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>ft_stopword_file</secondary>
+ </indexterm>
+
+ <literal role="sysvar">ft_stopword_file</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:ft_stopword_file"/>
+
+ <para>
+ The file from which to read the list of stopwords for
+ full-text searches. All the words from the file are used;
+ comments are <emphasis>not</emphasis> honored. By default, a
+ built-in list of stopwords is used (as defined in the
+ <filename>myisam/ft_static.c</filename> file). Setting this
+ variable to the empty string (<literal>''</literal>) disables
+ stopword filtering.
+ </para>
+
+ <note>
+ <para>
+ <literal>FULLTEXT</literal> indexes must be rebuilt after
+ changing this variable or the contents of the stopword file.
+ Use <literal>REPAIR TABLE
+ <replaceable>tbl_name</replaceable> QUICK</literal>.
+ </para>
+ </note>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_group_concat_max_len">
+ <indexterm>
+ <primary>group_concat_max_len system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>group_concat_max_len</secondary>
+ </indexterm>
+
+ <literal role="sysvar">group_concat_max_len</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:group_concat_max_len"/>
+
+ <para>
+ The maximum allowed result length in bytes for the
+ <literal role="func">GROUP_CONCAT()</literal> function. The
+ default is 1024.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_have_archive">
+ <indexterm>
+ <primary>have_archive system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>have_archive</secondary>
+ </indexterm>
+
+ <literal role="sysvar">have_archive</literal>
+ </para>
+
+ <para>
+ <literal>YES</literal> if <command>mysqld</command> supports
+ <literal>ARCHIVE</literal> tables, <literal>NO</literal> if
+ not.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_have_bdb">
+ <indexterm>
+ <primary>have_bdb system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>have_bdb</secondary>
+ </indexterm>
+
+ <literal role="sysvar">have_bdb</literal>
+ </para>
+
+ <para>
+ <literal>YES</literal> if <command>mysqld</command> supports
+ <literal>BDB</literal> tables. <literal>DISABLED</literal> if
+ <option>--skip-bdb</option> is used.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_have_blackhole_engine">
+ <indexterm>
+ <primary>have_blackhole_engine system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>have_blackhole_engine</secondary>
+ </indexterm>
+
+ <literal role="sysvar">have_blackhole_engine</literal>
+ </para>
+
+ <para>
+ <literal>YES</literal> if <command>mysqld</command> supports
+ <literal>BLACKHOLE</literal> tables, <literal>NO</literal> if
+ not.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_have_compress">
+ <indexterm>
+ <primary>have_compress system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>have_compress</secondary>
+ </indexterm>
+
+ <literal role="sysvar">have_compress</literal>
+ </para>
+
+ <para>
+ <literal>YES</literal> if the <literal>zlib</literal>
+ compression library is available to the server,
+ <literal>NO</literal> if not. If not, the
+ <literal role="func">COMPRESS()</literal> and
+ <literal role="func">UNCOMPRESS()</literal> functions cannot
+ be used.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_have_crypt">
+ <indexterm>
+ <primary>have_crypt system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>have_crypt</secondary>
+ </indexterm>
+
+ <literal role="sysvar">have_crypt</literal>
+ </para>
+
+ <para>
+ <literal>YES</literal> if the <function>crypt()</function>
+ system call is available to the server, <literal>NO</literal>
+ if not. If not, the <literal role="func">ENCRYPT()</literal>
+ function cannot be used.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_have_csv">
+ <indexterm>
+ <primary>have_csv system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>have_csv</secondary>
+ </indexterm>
+
+ <literal role="sysvar">have_csv</literal>
+ </para>
+
+ <para>
+ <literal>YES</literal> if <command>mysqld</command> supports
+ <literal>CSV</literal> tables, <literal>NO</literal> if not.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_have_example_engine">
+ <indexterm>
+ <primary>have_example_engine system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>have_example_engine</secondary>
+ </indexterm>
+
+ <literal role="sysvar">have_example_engine</literal>
+ </para>
+
+ <para>
+ <literal>YES</literal> if <command>mysqld</command> supports
+ <literal>EXAMPLE</literal> tables, <literal>NO</literal> if
+ not.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_have_federated_engine">
+ <indexterm>
+ <primary>have_federated_engine system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>have_federated_engine</secondary>
+ </indexterm>
+
+ <literal role="sysvar">have_federated_engine</literal>
+ </para>
+
+ <para>
+ <literal>YES</literal> if <command>mysqld</command> supports
+ <literal>FEDERATED</literal> tables, <literal>NO</literal> if
+ not. This variable was added in MySQL 5.0.3.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_have_geometry">
+ <indexterm>
+ <primary>have_geometry system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>have_geometry</secondary>
+ </indexterm>
+
+ <literal role="sysvar">have_geometry</literal>
+ </para>
+
+ <para>
+ <literal>YES</literal> if the server supports spatial data
+ types, <literal>NO</literal> if not.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_have_innodb">
+ <indexterm>
+ <primary>have_innodb system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>have_innodb</secondary>
+ </indexterm>
+
+ <literal role="sysvar">have_innodb</literal>
+ </para>
+
+ <para>
+ <literal>YES</literal> if <command>mysqld</command> supports
+ <literal>InnoDB</literal> tables. <literal>DISABLED</literal>
+ if <option>--skip-innodb</option> is used.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_have_isam">
+ <indexterm>
+ <primary>have_isam system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>have_isam</secondary>
+ </indexterm>
+
+ <literal role="sysvar">have_isam</literal>
+ </para>
+
+ <para>
+ In MySQL ¤t-series;, this variable appears only for
+ reasons of backward compatibility. It is always
+ <literal>NO</literal> because <literal>ISAM</literal> tables
+ are no longer supported.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_have_merge_engine">
+ <indexterm>
+ <primary>have_merge_engine system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>have_merge_engine</secondary>
+ </indexterm>
+
+ <literal role="sysvar">have_merge_engine</literal>
+ </para>
+
+ <para>
+ <literal>YES</literal> if <command>mysqld</command> supports
+ <literal>MERGE</literal> tables. <literal>DISABLED</literal>
+ if <option>--skip-merge</option> is used. This variable was
+ added in MySQL 5.0.24.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_have_openssl">
+ <indexterm>
+ <primary>have_openssl system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>have_openssl</secondary>
+ </indexterm>
+
+ <literal role="sysvar">have_openssl</literal>
+ </para>
+
+ <para>
+ <literal>YES</literal> if <command>mysqld</command> supports
+ SSL connections, <literal>NO</literal> if not. As of MySQL
+ 5.0.38, this variable is an alias for
+ <literal role="sysvar">have_ssl</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_have_query_cache">
+ <indexterm>
+ <primary>have_query_cache system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>have_query_cache</secondary>
+ </indexterm>
+
+ <literal role="sysvar">have_query_cache</literal>
+ </para>
+
+ <para>
+ <literal>YES</literal> if <command>mysqld</command> supports
+ the query cache, <literal>NO</literal> if not.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_have_raid">
+ <indexterm>
+ <primary>have_raid system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>have_raid</secondary>
+ </indexterm>
+
+ <literal role="sysvar">have_raid</literal>
+ </para>
+
+ <para>
+ In MySQL ¤t-series;, this variable appears only for
+ reasons of backward compatibility. It is always
+ <literal>NO</literal> because <literal>RAID</literal> tables
+ are no longer supported.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_have_rtree_keys">
+ <indexterm>
+ <primary>have_rtree_keys system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>have_rtree_keys</secondary>
+ </indexterm>
+
+ <literal role="sysvar">have_rtree_keys</literal>
+ </para>
+
+ <para>
+ <literal>YES</literal> if <literal>RTREE</literal> indexes are
+ available, <literal>NO</literal> if not. (These are used for
+ spatial indexes in <literal>MyISAM</literal> tables.)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_have_ssl">
+ <indexterm>
+ <primary>have_ssl system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>have_ssl</secondary>
+ </indexterm>
+
+ <literal role="sysvar">have_ssl</literal>
+ </para>
+
+ <para>
+ <literal>YES</literal> if <command>mysqld</command> supports
+ SSL connections, <literal>NO</literal> if not. This variable
+ was added in MySQL 5.0.38. Before that, use
+ <literal role="sysvar">have_openssl</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_have_symlink">
+ <indexterm>
+ <primary>have_symlink system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>have_symlink</secondary>
+ </indexterm>
+
+ <literal role="sysvar">have_symlink</literal>
+ </para>
+
+ <para>
+ <literal>YES</literal> if symbolic link support is enabled,
+ <literal>NO</literal> if not. This is required on Unix for
+ support of the <literal>DATA DIRECTORY</literal> and
+ <literal>INDEX DIRECTORY</literal> table options, and on
+ Windows for support of data directory symlinks.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_hostname">
+ <indexterm>
+ <primary>hostname system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>hostname</secondary>
+ </indexterm>
+
+ <literal role="sysvar">hostname</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:hostname"/>
+
+ <para>
+ The server sets this variable to the server hostname at
+ startup. This variable was added in MySQL 5.0.38.
+ </para>
+ </listitem>
+
+ <listitem>
+ <remark role="todo">
+ it may be that init_connect/init_slave should be discussed in
+ a separate section that describes how to control client/slave
+ startup. Move the examples to such a section if this is done.
+ </remark>
+
+ <para id="sysvar_init_connect">
+ <indexterm>
+ <primary>init_connect system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>init_connect</secondary>
+ </indexterm>
+
+ <literal role="sysvar">init_connect</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:init_connect"/>
+
+ <para>
+ 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
+ <literal role="sysvar">init_connect</literal> can be used to
+ achieve the same effect:
+ </para>
+
+<programlisting>
+SET GLOBAL init_connect='SET autocommit=0';
+</programlisting>
+
+ <para>
+ 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:
+ </para>
+
+<programlisting>
+[mysqld]
+init_connect='SET autocommit=0'
+</programlisting>
+
+ <para>
+ Note that the content of
+ <literal role="sysvar">init_connect</literal> is not executed
+ for users that have the <literal role="priv">SUPER</literal>
+ privilege. This is done so that an erroneous value for
+ <literal role="sysvar">init_connect</literal> 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
+ <literal role="sysvar">init_connect</literal> for users that
+ have the <literal role="priv">SUPER</literal> privilege
+ enables them to open a connection and fix the
+ <literal role="sysvar">init_connect</literal> value.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_init_file">
+ <indexterm>
+ <primary>init_file system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>init_file</secondary>
+ </indexterm>
+
+ <literal role="sysvar">init_file</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:init-file"/>
+
+ <para>
+ The name of the file specified with the
+ <option>--init-file</option> 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.
+ </para>
+
+ <para>
+ Note that the <option>--init-file</option> option is
+ unavailable if MySQL was configured with the
+ <option>--disable-grant-options</option> option. See
+ <xref linkend="configure-options"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>innodb_<replaceable>xxx</replaceable></literal>
+ </para>
+
+ <para>
+ <literal>InnoDB</literal> system variables are listed in
+ <xref linkend="innodb-parameters"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_interactive_timeout">
+ <indexterm>
+ <primary>interactive_timeout system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>interactive_timeout</secondary>
+ </indexterm>
+
+ <literal role="sysvar">interactive_timeout</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:interactive_timeout"/>
+
+ <para>
+ 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
+ <literal>CLIENT_INTERACTIVE</literal> option to
+ <literal role="cfunc">mysql_real_connect()</literal>. See also
+ <literal role="sysvar">wait_timeout</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_join_buffer_size">
+ <indexterm>
+ <primary>join_buffer_size system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>join_buffer_size</secondary>
+ </indexterm>
+
+ <literal role="sysvar">join_buffer_size</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:join_buffer_size"/>
+
+ <para>
+ 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
+ <literal role="sysvar">join_buffer_size</literal> 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.
+ </para>
+
+ <para>
+ The maximum allowable setting for
+ <literal role="sysvar">join_buffer_size</literal> is 4GB.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_keep_files_on_create">
+ <indexterm>
+ <primary>keep_files_on_create system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>keep_files_on_create</secondary>
+ </indexterm>
+
+ <literal role="sysvar">keep_files_on_create</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:keep_files_on_create"/>
+
+ <para>
+ If a <literal>MyISAM</literal> table is created with no
+ <literal>DATA DIRECTORY</literal> option, the
+ <filename>.MYD</filename> file is created in the database
+ directory. By default, if <literal>MyISAM</literal> finds an
+ existing <filename>.MYD</filename> file in this case, it
+ overwrites it. The same applies to <filename>.MYI</filename>
+ files for tables created with no <literal>INDEX
+ DIRECTORY</literal> option. To suppress this behavior, set the
+ <literal role="sysvar">keep_files_on_create</literal> variable
+ to <literal>ON</literal> (1), in which case
+ <literal>MyISAM</literal> will not overwrite existing files
+ and returns an error instead. The default value is
+ <literal>OFF</literal> (0).
+ </para>
+
+ <para>
+ If a <literal>MyISAM</literal> table is created with a
+ <literal>DATA DIRECTORY</literal> or <literal>INDEX
+ DIRECTORY</literal> option and an existing
+ <filename>.MYD</filename> or <filename>.MYI</filename> file is
+ found, MyISAM always returns an error. It will not overwrite a
+ file in the specified directory.
+ </para>
+
+ <para>
+ This variable was added in MySQL 5.0.48.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_key_buffer_size">
+ <indexterm>
+ <primary>indexes</primary>
+ <secondary>block size</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>key_buffer_size system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>key_buffer_size</secondary>
+ </indexterm>
+
+ <literal role="sysvar">key_buffer_size</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:key_buffer_size"/>
+
+ <para>
+ Index blocks for <literal>MyISAM</literal> tables are buffered
+ and are shared by all threads.
+ <literal role="sysvar">key_buffer_size</literal> is the size
+ of the buffer used for index blocks. The key buffer is also
+ known as the key cache.
+ </para>
+
+ <para>
+ The maximum allowable setting for
+ <literal role="sysvar">key_buffer_size</literal> is 4GB on
+ 32-bit platforms. As of MySQL 5.0.52, values larger than 4GB
+ are allowed for 64-bit platforms (except 64-bit Windows, for
+ which large values are truncated to 4GB with a warning). 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. The value of this
+ variable indicates the amount of memory requested. Internally,
+ the server allocates as much memory as possible up to this
+ amount, but the actual allocation might be less.
+ </para>
+
+ <para>
+ 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.
+ </para>
+
+ <para>
+ For even more speed when writing many rows at the same time,
+ use <literal role="stmt">LOCK TABLES</literal>. See
+ <xref linkend="insert-speed"/>.
+ </para>
+
+ <para>
+ You can check the performance of the key buffer by issuing a
+ <literal role="stmt">SHOW STATUS</literal> statement and
+ examining the
+ <literal role="statvar">Key_read_requests</literal>,
+ <literal role="statvar">Key_reads</literal>,
+ <literal role="statvar">Key_write_requests</literal>, and
+ <literal role="statvar">Key_writes</literal> status variables.
+ (See <xref linkend="show"/>.) The
+ <literal>Key_reads/Key_read_requests</literal> ratio should
+ normally be less than 0.01. The
+ <literal>Key_writes/Key_write_requests</literal> 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
+ <literal>DELAY_KEY_WRITE</literal> table option.
+ </para>
+
+ <para>
+ The fraction of the key buffer in use can be determined using
+ <literal role="sysvar">key_buffer_size</literal> in
+ conjunction with the
+ <literal role="statvar">Key_blocks_unused</literal> status
+ variable and the buffer block size, which is available from
+ the <literal role="sysvar">key_cache_block_size</literal>
+ system variable:
+ </para>
+
+<programlisting>
+1 - ((Key_blocks_unused × key_cache_block_size) / key_buffer_size)
+</programlisting>
+
+ <para>
+ This value is an approximation because some space in the key
+ buffer may be allocated internally for administrative
+ structures.
+ </para>
+
+ <para>
+ It is possible to create multiple <literal>MyISAM</literal>
+ key caches. The size limit of 4GB applies to each cache
+ individually, not as a group. See
+ <xref linkend="myisam-key-cache"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_key_cache_age_threshold">
+ <indexterm>
+ <primary>key_cache_age_threshold system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>key_cache_age_threshold</secondary>
+ </indexterm>
+
+ <literal role="sysvar">key_cache_age_threshold</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:key_cache_age_threshold"/>
+
+ <para>
+ 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. See
+ <xref linkend="myisam-key-cache"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_key_cache_block_size">
+ <indexterm>
+ <primary>key_cache_block_size system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>key_cache_block_size</secondary>
+ </indexterm>
+
+ <literal role="sysvar">key_cache_block_size</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:key_cache_block_size"/>
+
+ <para>
+ The size in bytes of blocks in the key cache. The default
+ value is 1024. See <xref linkend="myisam-key-cache"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_key_cache_division_limit">
+ <indexterm>
+ <primary>key_cache_division_limit system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>key_cache_division_limit</secondary>
+ </indexterm>
+
+ <literal role="sysvar">key_cache_division_limit</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:key_cache_division_limit"/>
+
+ <para>
+ 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. See
+ <xref linkend="myisam-key-cache"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_language">
+ <indexterm>
+ <primary>language system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>language</secondary>
+ </indexterm>
+
+ <literal role="sysvar">language</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:language"/>
+
+ <para>
+ The language used for error messages.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_large_files_support">
+ <indexterm>
+ <primary>large_files_support system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>large_files_support</secondary>
+ </indexterm>
+
+ <literal role="sysvar">large_files_support</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:large_files_support"/>
+
+ <para>
+ Whether <command>mysqld</command> was compiled with options
+ for large file support.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_large_pages">
+ <indexterm>
+ <primary>large_pages system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>large_pages</secondary>
+ </indexterm>
+
+ <literal role="sysvar">large_pages</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:large-pages"/>
+
+ <para>
+ Whether large page support is enabled. This variable was added
+ in MySQL 5.0.3.
+ </para>
+
+ <para>
+ For more information, see
+ <link linkend="option_mysqld_large-pages">the entry for the
+ <option>--large-pages</option> server option</link>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_large_page_size">
+ <indexterm>
+ <primary>large_page_size system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>large_page_size</secondary>
+ </indexterm>
+
+ <literal role="sysvar">large_page_size</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:large_page_size"/>
+
+ <para>
+ If large page support is enabled, this shows the size of
+ memory pages. Currently, large memory pages are supported only
+ on Linux; on other platforms, the value of this variable is
+ always 0. This variable was added in MySQL 5.0.3.
+ </para>
+
+ <para>
+ For more information, see
+ <link linkend="option_mysqld_large-pages">the entry for the
+ <option>--large-pages</option> server option</link>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_lc_time_names">
+ <indexterm>
+ <primary>lc_time_names system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>lc_time_names</secondary>
+ </indexterm>
+
+ <literal role="sysvar">lc_time_names</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:lc_time_names"/>
+
+ <para>
+ 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
+ <literal role="func">DATE_FORMAT()</literal>,
+ <literal role="func">DAYNAME()</literal> and
+ <literal role="func">MONTHNAME()</literal> functions. Locale
+ names are POSIX-style values such as
+ <literal>'ja_JP'</literal> or <literal>'pt_BR'</literal>. The
+ default value is <literal>'en_US'</literal> regardless of your
+ system's locale setting. For further information, see
+ <xref linkend="locale-support"/>. This variable was added in
+ MySQL 5.0.25.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_license">
+ <indexterm>
+ <primary>license system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>license</secondary>
+ </indexterm>
+
+ <literal role="sysvar">license</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:license"/>
+
+ <para>
+ The type of license the server has.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_local_infile">
+ <indexterm>
+ <primary>local_infile system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>local_infile</secondary>
+ </indexterm>
+
+ <literal role="sysvar">local_infile</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:local_infile"/>
+
+ <para>
+ Whether <literal>LOCAL</literal> is supported for
+ <literal role="stmt" condition="load-data">LOAD DATA
+ INFILE</literal> statements. See
+ <xref linkend="load-data-local"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_locked_in_memory">
+ <indexterm>
+ <primary>locked_in_memory system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>locked_in_memory</secondary>
+ </indexterm>
+
+ <literal role="sysvar">locked_in_memory</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:locked_in_memory"/>
+
+ <para>
+ Whether <command>mysqld</command> was locked in memory with
+ <option>--memlock</option>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_log">
+ <indexterm>
+ <primary>log system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>log</secondary>
+ </indexterm>
+
+ <literal role="sysvar">log</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:_log"/>
+
+ <para>
+ Whether logging of all statements to the general query log is
+ enabled. See <xref linkend="query-log"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_log_bin">
+ <indexterm>
+ <primary>log_bin system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>log_bin</secondary>
+ </indexterm>
+
+ <literal role="sysvar">log_bin</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:log_bin"/>
+
+ <para>
+ Whether the binary log is enabled. See
+ <xref linkend="binary-log"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_log_bin_trust_function_creators">
+ <indexterm>
+ <primary>log_bin_trust_function_creators system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>log_bin_trust_function_creators</secondary>
+ </indexterm>
+
+ <literal role="sysvar">log_bin_trust_function_creators</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:log-bin-trust-function-creators"/>
+
+ <para>
+ This variable applies when binary logging is enabled. It
+ controls whether stored function creators can be trusted not
+ to create stored functions that will cause unsafe events to be
+ written to the binary log. If set to 0 (the default), users
+ are not allowed to create or alter stored functions unless
+ they have the <literal role="priv">SUPER</literal> privilege
+ in addition to the <literal role="priv">CREATE
+ ROUTINE</literal> or <literal role="priv">ALTER
+ ROUTINE</literal> privilege. A setting of 0 also enforces the
+ restriction that a function must be declared with the
+ <literal>DETERMINISTIC</literal> characteristic, or with the
+ <literal>READS SQL DATA</literal> or <literal>NO SQL</literal>
+ characteristic. If the variable is set to 1, MySQL does not
+ enforce these restrictions on stored function creation. This
+ variable also applies to trigger creation. See
+ <xref linkend="stored-programs-logging"/>.
+ </para>
+
+ <para>
+ This variable was added in MySQL 5.0.16.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_log_bin_trust_routine_creators">
+ <indexterm>
+ <primary>log_bin_trust_routine_creators system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>log_bin_trust_routine_creators</secondary>
+ </indexterm>
+
+ <literal>log_bin_trust_routine_creators</literal>
+ </para>
+
+ <para>
+ This is the old name for
+ <literal role="sysvar">log_bin_trust_function_creators</literal>.
+ Before MySQL 5.0.16, it also applies to stored procedures, not
+ just stored functions. As of 5.0.16, this variable is
+ deprecated. It is recognized for backward compatibility but
+ its use results in a warning.
+ </para>
+
+ <para>
+ This variable was added in MySQL 5.0.6.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_log_error">
+ <indexterm>
+ <primary>log_error system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>log_error</secondary>
+ </indexterm>
+
+ <literal role="sysvar">log_error</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:log-error"/>
+
+ <para>
+ The location of the error log.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_log_queries_not_using_indexes">
+ <indexterm>
+ <primary>log_queries_not_using_indexes system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>log_queries_not_using_indexes</secondary>
+ </indexterm>
+
+ <literal role="sysvar">log_queries_not_using_indexes</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:log-queries-not-using-indexes"/>
+
+ <para>
+ Whether queries that do not use indexes are logged to the slow
+ query log. See <xref linkend="slow-query-log"/>. This variable
+ was added in MySQL 5.0.23.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_log_slow_queries">
+ <indexterm>
+ <primary>log_slow_queries system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>log_slow_queries</secondary>
+ </indexterm>
+
+ <literal role="sysvar">log_slow_queries</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:log-slow-queries"/>
+
+ <para>
+ Whether slow queries should be logged. <quote>Slow</quote> is
+ determined by the value of the
+ <literal role="sysvar">long_query_time</literal> variable. See
+ <xref linkend="slow-query-log"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_log_warnings">
+ <indexterm>
+ <primary>log_warnings system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>log_warnings</secondary>
+ </indexterm>
+
+ <literal role="sysvar">log_warnings</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:log-warnings"/>
+
+ <para>
+ Whether to produce additional warning messages. It is enabled
+ (1) by default and can be disabled by setting it to 0. Aborted
+ connections are not logged to the error log unless the value
+ is greater than 1.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_long_query_time">
+ <indexterm>
+ <primary>long_query_time system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>long_query_time</secondary>
+ </indexterm>
+
+ <literal role="sysvar">long_query_time</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:long_query_time"/>
+
+ <para>
+ If a query takes longer than this many seconds, the server
+ increments the <literal role="statvar">Slow_queries</literal>
+ status variable. If you are using the
+ <option>--log-slow-queries</option> 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 <xref linkend="slow-query-log"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_low_priority_updates">
+ <indexterm>
+ <primary>low_priority_updates system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>low_priority_updates</secondary>
+ </indexterm>
+
+ <literal role="sysvar">low_priority_updates</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:low-priority-updates"/>
+
+ <para>
+ If set to <literal>1</literal>, all
+ <literal role="stmt">INSERT</literal>,
+ <literal role="stmt">UPDATE</literal>,
+ <literal role="stmt">DELETE</literal>, and <literal>LOCK TABLE
+ WRITE</literal> statements wait until there is no pending
+ <literal role="stmt">SELECT</literal> or <literal>LOCK TABLE
+ READ</literal> on the affected table. This affects only
+ storage engines that use only table-level locking
+ (<literal>MyISAM</literal>, <literal>MEMORY</literal>,
+ <literal>MERGE</literal>). This variable previously was named
+ <literal>sql_low_priority_updates</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_lower_case_file_system">
+ <indexterm>
+ <primary>lower_case_file_system system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>lower_case_file_system</secondary>
+ </indexterm>
+
+ <literal role="sysvar">lower_case_file_system</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:lower_case_file_system"/>
+
+ <para>
+ This variable describes the case sensitivity of filenames on
+ the filesystem where the data directory is located.
+ <literal>OFF</literal> means filenames are case sensitive,
+ <literal>ON</literal> means they are not case sensitive.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_lower_case_table_names">
+ <indexterm>
+ <primary>lower_case_table_names system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>lower_case_table_names</secondary>
+ </indexterm>
+
+ <literal role="sysvar">lower_case_table_names</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:lower_case_table_names"/>
+
+ <para>
+ If set to 1, table names are stored in lowercase on disk and
+ table name comparisons are not case sensitive. If set to 2
+ table names are stored as given but compared in lowercase.
+ This option also applies to database names and table aliases.
+ See <xref linkend="identifier-case-sensitivity"/>.
+ </para>
+
+ <para>
+ If you are using <literal>InnoDB</literal> tables, you should
+ set this variable to 1 on all platforms to force names to be
+ converted to lowercase.
+ </para>
+
+ <para>
+ You should <emphasis>not</emphasis> 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). 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
+ <literal role="sysvar">lower_case_table_names</literal> to 2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_max_allowed_packet">
+ <indexterm>
+ <primary>max_allowed_packet system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>max_allowed_packet</secondary>
+ </indexterm>
+
+ <literal role="sysvar">max_allowed_packet</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:max_allowed_packet"/>
+
+ <para>
+ The maximum size of one packet or any generated/intermediate
+ string.
+ </para>
+
+ <para>
+ The packet message buffer is initialized to
+ <literal role="sysvar">net_buffer_length</literal> bytes, but
+ can grow up to
+ <literal role="sysvar">max_allowed_packet</literal> bytes when
+ needed. This value by default is small, to catch large
+ (possibly incorrect) packets.
+ </para>
+
+ <para>
+ You must increase this value if you are using large
+ <literal role="type">BLOB</literal> columns or long strings.
+ It should be as big as the largest
+ <literal role="type">BLOB</literal> you want to use. The
+ protocol limit for
+ <literal role="sysvar">max_allowed_packet</literal> is 1GB.
+ The value should be a multiple of 1024; non-multiples are
+ rounded down to the nearest multiple.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_max_connect_errors">
+ <indexterm>
+ <primary>max_connect_errors system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>max_connect_errors</secondary>
+ </indexterm>
+
+ <literal role="sysvar">max_connect_errors</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:max_connect_errors"/>
+
+ <para>
+ 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
+ <literal role="stmt" condition="flush">FLUSH HOSTS</literal>
+ statement.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_max_connections">
+ <indexterm>
+ <primary>max_connections system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>max_connections</secondary>
+ </indexterm>
+
+ <literal role="sysvar">max_connections</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:max_connections"/>
+
+ <para>
+ The number of simultaneous client connections allowed. By
+ default, this is 100. See
+ <xref linkend="too-many-connections"/>, for more information.
+ </para>
+
+ <formalpara role="mnmas">
+
+ <title>MySQL Enterprise</title>
+
+ <para>
+ For notification that the maximum number of connections is
+ getting dangerously high and for advice on setting the
+ optimum value for
+ <literal role="sysvar">max_connections</literal> subscribe
+ to the MySQL Enterprise Monitor. For more information see
+ <ulink url="advisors.html"/>.
+ </para>
+
+ </formalpara>
+
+ <para>
+ Increasing this value increases the number of file descriptors
+ that <command>mysqld</command> requires. See
+ <xref linkend="table-cache"/>, for comments on file descriptor
+ limits.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_max_delayed_threads">
+ <indexterm>
+ <primary>max_delayed_threads system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>max_delayed_threads</secondary>
+ </indexterm>
+
+ <literal role="sysvar">max_delayed_threads</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:max_delayed_threads"/>
+
+ <para>
+ Do not start more than this number of threads to handle
+ <literal>INSERT DELAYED</literal> statements. If you try to
+ insert data into a new table after all <literal>INSERT
+ DELAYED</literal> threads are in use, the row is inserted as
+ if the <literal>DELAYED</literal> attribute wasn't specified.
+ If you set this to 0, MySQL never creates a thread to handle
+ <literal>DELAYED</literal> rows; in effect, this disables
+ <literal>DELAYED</literal> entirely.
+ </para>
+
+ <para>
+ For the <literal>SESSION</literal> value of this variable, the
+ only valid values are 0 or the <literal>GLOBAL</literal>
+ value.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_max_error_count">
+ <indexterm>
+ <primary>max_error_count system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>max_error_count</secondary>
+ </indexterm>
+
+ <literal role="sysvar">max_error_count</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:max_error_count"/>
+
+ <para>
+ The maximum number of error, warning, and note messages to be
+ stored for display by the <literal role="stmt">SHOW
+ ERRORS</literal> and <literal role="stmt">SHOW
+ WARNINGS</literal> statements.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_max_heap_table_size">
+ <indexterm>
+ <primary>max_heap_table_size system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>max_heap_table_size</secondary>
+ </indexterm>
+
+ <literal role="sysvar">max_heap_table_size</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:max_heap_table_size"/>
+
+ <para>
+ This variable sets the maximum size to which
+ <literal>MEMORY</literal> tables are allowed to grow. The
+ value of the variable is used to calculate
+ <literal>MEMORY</literal> table <literal>MAX_ROWS</literal>
+ values. Setting this variable has no effect on any existing
+ <literal>MEMORY</literal> table, unless the table is
+ re-created with a statement such as
+ <literal role="stmt">CREATE TABLE</literal> or altered with
+ <literal role="stmt">ALTER TABLE</literal> or
+ <literal role="stmt" condition="truncate">TRUNCATE
+ TABLE</literal>. A server restart also sets the maximum size
+ of existing <literal>MEMORY</literal> tables to the global
+ <literal role="sysvar">max_heap_table_size</literal> value.
+ </para>
+
+ <formalpara role="mnmas">
+
+ <title>MySQL Enterprise</title>
+
+ <para>
+ Subscribers to the MySQL Enterprise Monitor receive
+ recommendations for the optimum setting for
+ <literal role="sysvar">max_heap_table_size</literal>. For
+ more information see <ulink url="advisors.html"/>.
+ </para>
+
+ </formalpara>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_max_insert_delayed_threads">
+ <indexterm>
+ <primary>max_insert_delayed_threads system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>max_insert_delayed_threads</secondary>
+ </indexterm>
+
+ <literal role="sysvar">max_insert_delayed_threads</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:max_insert_delayed_threads"/>
+
+ <para>
+ This variable is a synonym for
+ <literal role="sysvar">max_delayed_threads</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_max_join_size">
+ <indexterm>
+ <primary>max_join_size system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>max_join_size</secondary>
+ </indexterm>
+
+ <literal role="sysvar">max_join_size</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:max_join_size"/>
+
+ <para>
+ Do not allow <literal role="stmt">SELECT</literal> statements
+ that probably need to examine more than
+ <literal role="sysvar">max_join_size</literal> rows (for
+ single-table statements) or row combinations (for
+ multiple-table statements) or that are likely to do more than
+ <literal role="sysvar">max_join_size</literal> disk seeks. By
+ setting this value, you can catch
+ <literal role="stmt">SELECT</literal> 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
+ <literal>WHERE</literal> clause, that take a long time, or
+ that return millions of rows.
+ </para>
+
+ <para>
+ Setting this variable to a value other than
+ <literal>DEFAULT</literal> resets the value of
+ <literal role="sysvar">sql_big_selects</literal> to
+ <literal>0</literal>. If you set the
+ <literal role="sysvar">sql_big_selects</literal> value again,
+ the <literal role="sysvar">max_join_size</literal> variable is
+ ignored.
+ </para>
+
+ <para>
+ 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.
+ </para>
+
+ <para>
+ This variable previously was named
+ <literal>sql_max_join_size</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_max_length_for_sort_data">
+ <indexterm>
+ <primary>max_length_for_sort_data system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>max_length_for_sort_data</secondary>
+ </indexterm>
+
+ <literal role="sysvar">max_length_for_sort_data</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:max_length_for_sort_data"/>
+
+ <para>
+ The cutoff on the size of index values that determines which
+ <literal>filesort</literal> algorithm to use. See
+ <xref linkend="order-by-optimization"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_max_prepared_stmt_count">
+ <indexterm>
+ <primary>max_prepared_stmt_count system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>max_prepared_stmt_count</secondary>
+ </indexterm>
+
+ <literal role="sysvar">max_prepared_stmt_count</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:max_prepared_stmt_count"/>
+
+ <para>
+ 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 5.0.21.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_max_relay_log_size">
+ <indexterm>
+ <primary>max_relay_log_size system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>max_relay_log_size</secondary>
+ </indexterm>
+
+ <literal role="sysvar">max_relay_log_size</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:max_relay_log_size"/>
+
+ <para>
+ 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
+ <literal role="sysvar">max_relay_log_size</literal> is 0, the
+ server uses <literal role="sysvar">max_binlog_size</literal>
+ for both the binary log and the relay log. If
+ <literal role="sysvar">max_relay_log_size</literal> 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
+ <literal role="sysvar">max_relay_log_size</literal> to between
+ 4096 bytes and 1GB (inclusive), or to 0. The default value is
+ 0. See <xref linkend="replication-implementation-details"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_max_seeks_for_key">
+ <indexterm>
+ <primary>max_seeks_for_key system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>max_seeks_for_key</secondary>
+ </indexterm>
+
+ <literal role="sysvar">max_seeks_for_key</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:max_seeks_for_key"/>
+
+ <para>
+ 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
+ <xref linkend="show-index"/>). By setting this to a low value
+ (say, 100), you can force MySQL to prefer indexes instead of
+ table scans.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_max_sort_length">
+ <indexterm>
+ <primary>max_sort_length system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>max_sort_length</secondary>
+ </indexterm>
+
+ <literal role="sysvar">max_sort_length</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:max_sort_length"/>
+
+ <para>
+ The number of bytes to use when sorting
+ <literal role="type">BLOB</literal> or
+ <literal role="type">TEXT</literal> values. Only the first
+ <literal role="sysvar">max_sort_length</literal> bytes of each
+ value are used; the rest are ignored.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_max_sp_recursion_depth">
+ <indexterm>
+ <primary>max_sp_recursion_depth system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>max_sp_recursion_depth</secondary>
+ </indexterm>
+
+ <literal role="sysvar">max_sp_recursion_depth</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:max_sp_recursion_depth"/>
+
+ <para>
+ The number of times that any given stored procedure may be
+ called recursively. The default value for this option is 0,
+ which completely disallows recursion in stored procedures. The
+ maximum value is 255.
+ </para>
+
+ <para>
+ Stored procedure recursion increases the demand on thread
+ stack space. If you increase the value of
+ <literal role="sysvar">max_sp_recursion_depth</literal>, it
+ may be necessary to increase thread stack size by increasing
+ the value of <literal role="sysvar">thread_stack</literal> at
+ server startup.
+ </para>
+
+ <para>
+ This variable was added in MySQL 5.0.17.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_max_tmp_tables">
+ <indexterm>
+ <primary>max_tmp_tables system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>max_tmp_tables</secondary>
+ </indexterm>
+
+ <literal role="sysvar">max_tmp_tables</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:max_tmp_tables"/>
+
+ <para>
+ The maximum number of temporary tables a client can keep open
+ at the same time. (This option does not yet do anything.)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_max_user_connections">
+ <indexterm>
+ <primary>max_user_connections system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>max_user_connections</secondary>
+ </indexterm>
+
+ <literal role="sysvar">max_user_connections</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:max_user_connections"/>
+
+ <para>
+ The maximum number of simultaneous connections allowed to any
+ given MySQL account. A value of 0 means <quote>no
+ limit.</quote>
+ </para>
+
+ <para>
+ Before MySQL 5.0.3, this variable has only global scope.
+ Beginning with MySQL 5.0.3, it also has a read-only session
+ scope. The session variable has the same value as the global
+ variable unless the current account has a non-zero
+ <literal>MAX_USER_CONNECTIONS</literal> resource limit. In
+ that case, the session value reflects the account limit.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_max_write_lock_count">
+ <indexterm>
+ <primary>max_write_lock_count system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>max_write_lock_count</secondary>
+ </indexterm>
+
+ <literal role="sysvar">max_write_lock_count</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:max_write_lock_count"/>
+
+ <para>
+ After this many write locks, allow some pending read lock
+ requests to be processed in between.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_myisam_block_size">
+ <indexterm>
+ <primary>myisam_block_size system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>myisam_block_size</secondary>
+ </indexterm>
+
+ <literal role="sysvar">myisam_block_size</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:myisam_block_size"/>
+
+ <para>
+ The block size to be used for <literal>MyISAM</literal> index
+ pages.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_myisam_data_pointer_size">
+ <indexterm>
+ <primary>myisam_data_pointer_size system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>myisam_data_pointer_size</secondary>
+ </indexterm>
+
+ <literal role="sysvar">myisam_data_pointer_size</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:myisam_data_pointer_size"/>
+
+ <para>
+ The default pointer size in bytes, to be used by
+ <literal role="stmt">CREATE TABLE</literal> for
+ <literal>MyISAM</literal> tables when no
+ <literal>MAX_ROWS</literal> option is specified. This variable
+ cannot be less than 2 or larger than 7. The default value is 6
+ (4 before MySQL 5.0.6). See <xref linkend="full-table"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_myisam_max_extra_sort_file_size">
+ <indexterm>
+ <primary>myisam_max_extra_sort_file_size system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>myisam_max_extra_sort_file_size</secondary>
+ </indexterm>
+
+ <literal role="sysvar">myisam_max_extra_sort_file_size</literal>
+ (<emphasis>DEPRECATED</emphasis>)
+ </para>
+
+ <para>
+ This variable is not used. It was removed in MySQL 5.0.6.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_myisam_max_sort_file_size">
+ <indexterm>
+ <primary>myisam_max_sort_file_size system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>myisam_max_sort_file_size</secondary>
+ </indexterm>
+
+ <literal role="sysvar">myisam_max_sort_file_size</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:myisam_max_sort_file_size"/>
+
+ <para>
+ The maximum size of the temporary file that MySQL is allowed
+ to use while re-creating a <literal>MyISAM</literal> index
+ (during <literal role="stmt">REPAIR TABLE</literal>,
+ <literal role="stmt">ALTER TABLE</literal>, or
+ <literal role="stmt" condition="load-data">LOAD DATA
+ INFILE</literal>). If the file size would be larger than this
+ value, the index is created using the key cache instead, which
+ is slower. The value is given in bytes.
+ </para>
+
+ <para>
+ The default value is 2GB. If <literal>MyISAM</literal> index
+ files exceed this size and disk space is available, increasing
+ the value may help performance.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_myisam_recover_options">
+ <indexterm>
+ <primary>myisam_recover_options system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>myisam_recover_options</secondary>
+ </indexterm>
+
+ <literal role="sysvar">myisam_recover_options</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:myisam_recover_options"/>
+
+ <para>
+ The value of the <option>--myisam-recover</option> option. See
+ <xref linkend="server-options"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_myisam_repair_threads">
+ <indexterm>
+ <primary>myisam_repair_threads system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>myisam_repair_threads</secondary>
+ </indexterm>
+
+ <literal role="sysvar">myisam_repair_threads</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:myisam_repair_threads"/>
+
+ <para>
+ If this value is greater than 1, <literal>MyISAM</literal>
+ table indexes are created in parallel (each index in its own
+ thread) during the <literal>Repair by sorting</literal>
+ process. The default value is 1.
+ </para>
+
+ <note>
+ <para>
+ Multi-threaded repair is still
+ <emphasis>beta-quality</emphasis> code.
+ </para>
+ </note>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_myisam_sort_buffer_size">
+ <indexterm>
+ <primary>myisam_sort_buffer_size system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>myisam_sort_buffer_size</secondary>
+ </indexterm>
+
+ <literal role="sysvar">myisam_sort_buffer_size</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:myisam_sort_buffer_size"/>
+
+ <para>
+ The size of the buffer that is allocated when sorting
+ <literal>MyISAM</literal> indexes during a
+ <literal role="stmt">REPAIR TABLE</literal> or when creating
+ indexes with <literal role="stmt">CREATE INDEX</literal> or
+ <literal role="stmt">ALTER TABLE</literal>.
+ </para>
+
+ <para>
+ The maximum allowable setting for
+ <literal role="sysvar">myisam_sort_buffer_size</literal> is
+ 4GB.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_myisam_stats_method">
+ <indexterm>
+ <primary>myisam_stats_method system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>myisam_stats_method</secondary>
+ </indexterm>
+
+ <literal role="sysvar">myisam_stats_method</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:myisam_stats_method"/>
+
+ <para>
+ How the server treats <literal>NULL</literal> values when
+ collecting statistics about the distribution of index values
+ for <literal>MyISAM</literal> tables. This variable has two
+ possible values, <literal>nulls_equal</literal> and
+ <literal>nulls_unequal</literal>. For
+ <literal>nulls_equal</literal>, all <literal>NULL</literal>
+ index values are considered equal and form a single value
+ group that has a size equal to the number of
+ <literal>NULL</literal> values. For
+ <literal>nulls_unequal</literal>, <literal>NULL</literal>
+ values are considered unequal, and each
+ <literal>NULL</literal> forms a distinct value group of size
+ 1.
+ </para>
+
+ <para>
+ The method that is used for generating table statistics
+ influences how the optimizer chooses indexes for query
+ execution, as described in
+ <xref linkend="myisam-index-statistics"/>.
+ </para>
+
+ <para>
+ Any unique prefix of a valid value may be used to set the
+ value of this variable.
+ </para>
+
+ <para>
+ This variable was added in MySQL 5.0.14. For older versions,
+ the statistics collection method is equivalent to
+ <literal>nulls_equal</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_named_pipe">
+ <indexterm>
+ <primary>named_pipe system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>named_pipe</secondary>
+ </indexterm>
+
+ <literal role="sysvar">named_pipe</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:named_pipe"/>
+
+ <para>
+ (Windows only.) Indicates whether the server supports
+ connections over named pipes.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_net_buffer_length">
+ <indexterm>
+ <primary>net_buffer_length system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>net_buffer_length</secondary>
+ </indexterm>
+
+ <literal role="sysvar">net_buffer_length</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:net_buffer_length"/>
+
+ <para>
+ Each client thread is associated with a connection buffer and
+ result buffer. Both begin with a size given by
+ <literal role="sysvar">net_buffer_length</literal> but are
+ dynamically enlarged up to
+ <literal role="sysvar">max_allowed_packet</literal> bytes as
+ needed. The result buffer shrinks to
+ <literal role="sysvar">net_buffer_length</literal> after each
+ SQL statement.
+ </para>
+
+ <para>
+ 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
+ <literal role="sysvar">net_buffer_length</literal> can be set
+ is 1MB.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_net_read_timeout">
+ <indexterm>
+ <primary>net_read_timeout system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>net_read_timeout</secondary>
+ </indexterm>
+
+ <literal role="sysvar">net_read_timeout</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:net_read_timeout"/>
+
+ <para>
+ 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, <literal role="sysvar">net_read_timeout</literal>
+ is the timeout value controlling when to abort. When the
+ server is writing to the client,
+ <literal role="sysvar">net_write_timeout</literal> is the
+ timeout value controlling when to abort. See also
+ <literal role="sysvar">slave_net_timeout</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_net_retry_count">
+ <indexterm>
+ <primary>net_retry_count system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>net_retry_count</secondary>
+ </indexterm>
+
+ <literal role="sysvar">net_retry_count</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:net_retry_count"/>
+
+ <para>
+ 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.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_net_write_timeout">
+ <indexterm>
+ <primary>net_write_timeout system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>net_write_timeout</secondary>
+ </indexterm>
+
+ <literal role="sysvar">net_write_timeout</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:net_write_timeout"/>
+
+ <para>
+ 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
+ <literal role="sysvar">net_read_timeout</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_new">
+ <indexterm>
+ <primary>new system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>new</secondary>
+ </indexterm>
+
+ <literal role="sysvar">new</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:new"/>
+
+ <para>
+ This variable was used in MySQL 4.0 to turn on some 4.1
+ behaviors, and is retained for backward compatibility. In
+ MySQL ¤t-series;, its value is always
+ <literal>OFF</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_old_passwords">
+ <indexterm>
+ <primary>old_passwords system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>old_passwords</secondary>
+ </indexterm>
+
+ <literal role="sysvar">old_passwords</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:old-passwords"/>
+
+ <para>
+ Whether the server should use pre-4.1-style passwords for
+ MySQL user accounts. See <xref linkend="old-client"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_one_shot">
+ <indexterm>
+ <primary>one_shot system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>one_shot</secondary>
+ </indexterm>
+
+ <literal role="sysvar">one_shot</literal>
+ </para>
+
+ <para>
+ This is not a variable, but it can be used when setting some
+ variables. It is described in <xref linkend="set-option"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_open_files_limit">
+ <indexterm>
+ <primary>open_files_limit system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>open_files_limit</secondary>
+ </indexterm>
+
+ <literal role="sysvar">open_files_limit</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:open-files-limit"/>
+
+ <para>
+ The number of files that the operating system allows
+ <command>mysqld</command> to open. This is the real value
+ allowed by the system and might be different from the value
+ you gave using the <option>--open-files-limit</option> option
+ to <command>mysqld</command> or
+ <command>mysqld_safe</command>. The value is 0 on systems
+ where MySQL can't change the number of open files.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_optimizer_prune_level">
+ <indexterm>
+ <primary>optimizer_prune_level system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>optimizer_prune_level</secondary>
+ </indexterm>
+
+ <literal role="sysvar">optimizer_prune_level</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:optimizer_prune_level"/>
+
+ <para>
+ Controls the heuristics applied during query optimization to
+ prune less-promising partial plans from the optimizer search
+ space. A value of 0 disables heuristics so that the optimizer
+ performs an exhaustive search. A value of 1 causes the
+ optimizer to prune plans based on the number of rows retrieved
+ by intermediate plans. This variable was added in MySQL 5.0.1.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_optimizer_search_depth">
+ <indexterm>
+ <primary>optimizer_search_depth system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>optimizer_search_depth</secondary>
+ </indexterm>
+
+ <literal role="sysvar">optimizer_search_depth</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:optimizer_search_depth"/>
+
+ <para>
+ The maximum depth of search performed by the query optimizer.
+ Values larger than the number of relations in a query result
+ in better query plans, but take longer to generate an
+ execution plan for a query. Values smaller than the number of
+ relations in a query return an execution plan quicker, but the
+ resulting plan may be far from being optimal. If set to 0, the
+ system automatically picks a reasonable value. If set to the
+ maximum number of tables used in a query plus 2, the optimizer
+ switches to the algorithm used in MySQL 5.0.0 (and previous
+ versions) for performing searches. This variable was added in
+ MySQL 5.0.1.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_pid_file">
+ <indexterm>
+ <primary>pid_file system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>pid_file</secondary>
+ </indexterm>
+
+ <literal role="sysvar">pid_file</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:pid-file"/>
+
+ <para>
+ The pathname of the process ID (PID) file. This variable can
+ be set with the <option>--pid-file</option> option.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_plugin_dir">
+ <indexterm>
+ <primary>plugin_dir system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>plugin_dir</secondary>
+ </indexterm>
+
+ <literal role="sysvar">plugin_dir</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:plugin_dir"/>
+
+ <para>
+ The pathname of the plugin directory. This variable was added
+ in MySQL 5.0.67. If the value is non-empty, user-defined
+ function object files must be located in this directory. If
+ the value is empty, the behavior that is used before 5.0.67
+ applies: The UDF object files must be located in a directory
+ that is searched by your system's dynamic linker.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_port">
+ <indexterm>
+ <primary>port system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>port</secondary>
+ </indexterm>
+
+ <literal>port</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:port"/>
+
+ <para>
+ The number of the port on which the server listens for TCP/IP
+ connections. This variable can be set with the
+ <option>--port</option> option.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_preload_buffer_size">
+ <indexterm>
+ <primary>preload_buffer_size system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>preload_buffer_size</secondary>
+ </indexterm>
+
+ <literal role="sysvar">preload_buffer_size</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:preload_buffer_size"/>
+
+ <para>
+ The size of the buffer that is allocated when preloading
+ indexes.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_prepared_stmt_count">
+ <indexterm>
+ <primary>prepared_stmt_count system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>prepared_stmt_count</secondary>
+ </indexterm>
+
+ <literal role="sysvar">prepared_stmt_count</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:prepared_stmt_count"/>
+
+ <para>
+ The current number of prepared statements. (The maximum number
+ of statements is given by the
+ <literal role="sysvar">max_prepared_stmt_count</literal>
+ system variable.) This variable was added in MySQL 5.0.21. In
+ MySQL 5.0.32, it was converted to the global
+ <literal role="statvar">Prepared_stmt_count</literal> status
+ variable.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_protocol_version">
+ <indexterm>
+ <primary>protocol_version system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>protocol_version</secondary>
+ </indexterm>
+
+ <literal role="sysvar">protocol_version</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:protocol_version"/>
+
+ <para>
+ The version of the client/server protocol used by the MySQL
+ server.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_query_alloc_block_size">
+ <indexterm>
+ <primary>query_alloc_block_size system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>query_alloc_block_size</secondary>
+ </indexterm>
+
+ <literal role="sysvar">query_alloc_block_size</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:query_alloc_block_size"/>
+
+ <remark role="todo">
+ How much is "a bit"?
+ </remark>
+
+ <para>
+ 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.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_query_cache_limit">
+ <indexterm>
+ <primary>query_cache_limit system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>query_cache_limit</secondary>
+ </indexterm>
+
+ <literal role="sysvar">query_cache_limit</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:query_cache_limit"/>
+
+ <para>
+ Don't cache results that are larger than this number of bytes.
+ The default value is 1MB.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_query_cache_min_res_unit">
+ <indexterm>
+ <primary>query_cache_min_res_unit system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>query_cache_min_res_unit</secondary>
+ </indexterm>
+
+ <literal role="sysvar">query_cache_min_res_unit</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:query_cache_min_res_unit"/>
+
+ <para>
+ The minimum size (in bytes) for blocks allocated by the query
+ cache. The default value is 4096 (4KB). Tuning information for
+ this variable is given in
+ <xref linkend="query-cache-configuration"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_query_cache_size">
+ <indexterm>
+ <primary>query_cache_size system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>query_cache_size</secondary>
+ </indexterm>
+
+ <literal role="sysvar">query_cache_size</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:query_cache_size"/>
+
+ <para>
+ 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
+ <literal role="sysvar">query_cache_size</literal> bytes of
+ memory are allocated even if
+ <literal role="sysvar">query_cache_type</literal> is set to 0.
+ See <xref linkend="query-cache-configuration"/>, for more
+ information.
+ </para>
+
+ <para>
+ The query cache needs a minimum size of about 40KB to allocate
+ its structures. (The exact size depends on system
+ architecture.) If you set the value of
+ <literal role="sysvar">query_cache_size</literal> too small,
+ you'll get a warning, as described in
+ <xref linkend="query-cache-configuration"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_query_cache_type">
+ <indexterm>
+ <primary>query_cache_type system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>query_cache_type</secondary>
+ </indexterm>
+
+ <literal role="sysvar">query_cache_type</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:query_cache_type"/>
+
+ <para>
+ Set the query cache type. Setting the
+ <literal>GLOBAL</literal> value sets the type for all clients
+ that connect thereafter. Individual clients can set the
+ <literal>SESSION</literal> value to affect their own use of
+ the query cache. Possible values are shown in the following
+ table:
+ </para>
+
+ <informaltable>
+ <tgroup cols="2">
+ <colspec colwidth="15*"/>
+ <colspec colwidth="70*"/>
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Option</emphasis></entry>
+ <entry><emphasis role="bold">Description</emphasis></entry>
+ </row>
+ <row>
+ <entry><literal>0</literal> or <literal>OFF</literal></entry>
+ <entry>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
+ <literal role="sysvar">query_cache_size</literal> to
+ 0.</entry>
+ </row>
+ <row>
+ <entry><literal>1</literal> or <literal>ON</literal></entry>
+ <entry>Cache all cacheable query results except for those that begin with
+ <literal>SELECT SQL_NO_CACHE</literal>.</entry>
+ </row>
+ <row>
+ <entry><literal>2</literal> or <literal>DEMAND</literal></entry>
+ <entry>Cache results only for cacheable queries that begin with <literal>SELECT
+ SQL_CACHE</literal>.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>
+ This variable defaults to <literal>ON</literal>.
+ </para>
+
+ <para>
+ Any unique prefix of a valid value may be used to set the
+ value of this variable.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_query_cache_wlock_invalidate">
+ <indexterm>
+ <primary>query_cache_wlock_invalidate system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>query_cache_wlock_invalidate</secondary>
+ </indexterm>
+
+ <literal role="sysvar">query_cache_wlock_invalidate</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:query_cache_wlock_invalidate"/>
+
+ <para>
+ Normally, when one client acquires a <literal>WRITE</literal>
+ lock on a <literal>MyISAM</literal> 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
+ <literal>WRITE</literal> 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.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_query_prealloc_size">
+ <indexterm>
+ <primary>query_prealloc_size system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>query_prealloc_size</secondary>
+ </indexterm>
+
+ <literal role="sysvar">query_prealloc_size</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:query_prealloc_size"/>
+
+ <para>
+ 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
+ <literal role="sysvar">query_prealloc_size</literal> value
+ might be helpful in improving performance, because it can
+ reduce the need for the server to perform memory allocation
+ during query execution operations.
+ </para>
+
+ <remark>
+ It will not necessarily eliminate allocation completely;
+ server *may* still allocate memory in some situations, e.g.,
+ transaction-related or sp-related ops.
+ </remark>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_range_alloc_block_size">
+ <indexterm>
+ <primary>range_alloc_block_size system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>range_alloc_block_size</secondary>
+ </indexterm>
+
+ <literal role="sysvar">range_alloc_block_size</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:range_alloc_block_size"/>
+
+ <para>
+ The size of blocks that are allocated when doing range
+ optimization.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_read_buffer_size">
+ <indexterm>
+ <primary>read_buffer_size system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>read_buffer_size</secondary>
+ </indexterm>
+
+ <literal role="sysvar">read_buffer_size</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:read_buffer_size"/>
+
+ <para>
+ Each thread that does a sequential scan allocates a buffer of
+ this size (in bytes) for each table it scans. If you do many
+ sequential scans, you might want to increase this value, which
+ defaults to 131072. The value of this variable should be a
+ multiple of 4KB. If it is set to a value that is not a
+ multiple of 4KB, its value will be rounded down to the nearest
+ multiple of 4KB.
+ </para>
+
+ <para>
+ The maximum allowable setting for
+ <literal role="sysvar">read_buffer_size</literal> is 2GB.
+ </para>
+
+ <para>
+ <literal role="sysvar">read_buffer_size</literal> and
+ <literal role="sysvar">read_rnd_buffer_size</literal> are not
+ specific to any storage engine and apply in a general manner
+ for optimization. See <xref linkend="memory-use"/>, for
+ example.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_read_only">
+ <indexterm>
+ <primary>read_only system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>read_only</secondary>
+ </indexterm>
+
+ <literal role="sysvar">read_only</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:read_only"/>
+
+ <para>
+ This variable is off by default. When it is enabled, the
+ server allows no updates except from users that have the
+ <literal role="priv">SUPER</literal> 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. As
+ of MySQL 5.0.16, this variable does not apply to
+ <literal>TEMPORARY</literal> tables.
+ </para>
+
+ <para>
+ <literal role="sysvar">read_only</literal> exists only as a
+ <literal>GLOBAL</literal> variable, so changes to its value
+ require the <literal role="priv">SUPER</literal> privilege.
+ Changes to <literal role="sysvar">read_only</literal> 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.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_read_rnd_buffer_size">
+ <indexterm>
+ <primary>read_rnd_buffer_size system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>read_rnd_buffer_size</secondary>
+ </indexterm>
+
+ <literal role="sysvar">read_rnd_buffer_size</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:read_rnd_buffer_size"/>
+
+ <para>
+ When reading rows in sorted order following a key-sorting
+ operation, the rows are read through this buffer to avoid disk
+ seeks. See <xref linkend="order-by-optimization"/>. Setting
+ the variable to a large value can improve <literal>ORDER
+ BY</literal> 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.
+ </para>
+
+ <para>
+ The maximum allowable setting for
+ <literal role="sysvar">read_rnd_buffer_size</literal> is 2GB.
+ </para>
+
+ <para>
+ <literal role="sysvar">read_buffer_size</literal> and
+ <literal role="sysvar">read_rnd_buffer_size</literal> are not
+ specific to any storage engine and apply in a general manner
+ for optimization. See <xref linkend="memory-use"/>, for
+ example.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_secure_auth">
+ <indexterm>
+ <primary>secure_auth system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>secure_auth</secondary>
+ </indexterm>
+
+ <literal role="sysvar">secure_auth</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:secure-auth"/>
+
+ <para>
+ If the MySQL server has been started with the
+ <option>--secure-auth</option> 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
+ <literal>ON</literal>, otherwise it is <literal>OFF</literal>.
+ </para>
+
+ <para>
+ You should enable this option if you want to prevent all use
+ of passwords employing the old format (and hence insecure
+ communication over the network).
+ </para>
+
+ <para>
+ Server startup fails with an error if this option is enabled
+ and the privilege tables are in pre-4.1 format. See
+ <xref linkend="old-client"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_secure_file_priv">
+ <indexterm>
+ <primary>secure_file_priv system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>secure_file_priv</secondary>
+ </indexterm>
+
+ <literal role="sysvar">secure_file_priv</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:secure-file-priv"/>
+
+ <para>
+ By default, this variable is empty. If set to the name of a
+ directory, it limits the effect of the
+ <literal role="func">LOAD_FILE()</literal> function and the
+ <literal role="stmt">LOAD DATA</literal> and <literal>SELECT
+ ... INTO OUTFILE</literal> statements to work only with files
+ in that directory.
+ </para>
+
+ <para>
+ This variable was added in MySQL 5.0.38.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_shared_memory">
+ <indexterm>
+ <primary>shared_memory system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>shared_memory</secondary>
+ </indexterm>
+
+ <literal role="sysvar">shared_memory</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:shared_memory"/>
+
+ <para>
+ (Windows only.) Whether the server allows shared-memory
+ connections.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_shared_memory_base_name">
+ <indexterm>
+ <primary>shared_memory_base_name system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>shared_memory_base_name</secondary>
+ </indexterm>
+
+ <literal role="sysvar">shared_memory_base_name</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:shared_memory_base_name"/>
+
+ <para>
+ (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. The
+ default name is <literal>MYSQL</literal>. The name is case
+ sensitive.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_skip_external_locking">
+ <indexterm>
+ <primary>external locking</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>locking</primary>
+ <secondary>external</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>skip_external_locking system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>skip_external_locking</secondary>
+ </indexterm>
+
+ <literal role="sysvar">skip_external_locking</literal>
+ </para>
+
+ <para>
+ This is <literal>OFF</literal> if <command>mysqld</command>
+ uses external locking, <literal>ON</literal> if external
+ locking is disabled.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_skip_networking">
+ <indexterm>
+ <primary>skip_networking system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>skip_networking</secondary>
+ </indexterm>
+
+ <literal role="sysvar">skip_networking</literal>
+ </para>
+
+ <para>
+ This is <literal>ON</literal> 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
+ <literal>ON</literal>. This variable can be set to
+ <literal>ON</literal> with the
+ <option>--skip-networking</option> option.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_skip_show_database">
+ <indexterm>
+ <primary>skip_show_database system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>skip_show_database</secondary>
+ </indexterm>
+
+ <literal role="sysvar">skip_show_database</literal>
+ </para>
+
+ <para>
+ This prevents people from using the <literal role="stmt">SHOW
+ DATABASES</literal> statement if they do not have the
+ <literal role="priv">SHOW DATABASES</literal> privilege. This
+ can improve security if you have concerns about users being
+ able to see databases belonging to other users. Its effect
+ depends on the <literal role="priv">SHOW DATABASES</literal>
+ privilege: If the variable value is <literal>ON</literal>, the
+ <literal role="stmt">SHOW DATABASES</literal> statement is
+ allowed only to users who have the <literal role="priv">SHOW
+ DATABASES</literal> privilege, and the statement displays all
+ database names. If the value is <literal>OFF</literal>,
+ <literal role="stmt">SHOW DATABASES</literal> is allowed to
+ all users, but displays the names of only those databases for
+ which the user has the <literal role="priv">SHOW
+ DATABASES</literal> or other privilege.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_slow_launch_time">
+ <indexterm>
+ <primary>slow_launch_time system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>slow_launch_time</secondary>
+ </indexterm>
+
+ <literal role="sysvar">slow_launch_time</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:slow_launch_time"/>
+
+ <para>
+ If creating a thread takes longer than this many seconds, the
+ server increments the
+ <literal role="statvar">Slow_launch_threads</literal> status
+ variable.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_socket">
+ <indexterm>
+ <primary>socket system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>socket</secondary>
+ </indexterm>
+
+ <literal role="sysvar">socket</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:socket"/>
+
+ <para>
+ On Unix platforms, this variable is the name of the socket
+ file that is used for local client connections. The default is
+ <filename>/tmp/mysql.sock</filename>. (For some distribution
+ formats, the directory might be different, such as
+ <filename>/var/lib/mysql</filename> for RPMs.)
+ </para>
+
+ <para>
+ On Windows, this variable is the name of the named pipe that
+ is used for local client connections. The default value is
+ <literal>MySQL</literal> (not case sensitive).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_sort_buffer_size">
+ <indexterm>
+ <primary>sort_buffer_size system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>sort_buffer_size</secondary>
+ </indexterm>
+
+ <literal role="sysvar">sort_buffer_size</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:sort_buffer_size"/>
+
+ <para>
+ Each thread that needs to do a sort allocates a buffer of this
+ size. Increase this value for faster <literal>ORDER
+ BY</literal> or <literal>GROUP BY</literal> operations. See
+ <xref linkend="temporary-files"/>.
+ </para>
+
+ <para>
+ The maximum allowable setting for
+ <literal role="sysvar">sort_buffer_size</literal> is 4GB.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_sql_mode">
+ <indexterm>
+ <primary>sql_mode system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>sql_mode</secondary>
+ </indexterm>
+
+ <literal role="sysvar">sql_mode</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:sql-mode"/>
+
+ <para>
+ The current server SQL mode, which can be set dynamically. See
+ <xref linkend="server-sql-mode"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_sql_select_limit">
+ <indexterm>
+ <primary>sql_select_limit system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>sql_select_limit</secondary>
+ </indexterm>
+
+ <literal role="sysvar">sql_select_limit</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:sql_select_limit"/>
+
+ <para>
+ The maximum number of rows to return from
+ <literal role="stmt">SELECT</literal> statements. The default
+ value for a new connection is the maximum number of rows that
+ the server allows per table, which depends on the server
+ configuration and may be affected if the server build was
+ configured with <option>--with-big-tables</option>. Typical
+ default values are (2<superscript>32</superscript>)−1 or
+ (2<superscript>64</superscript>)−1. If you have changed
+ the limit, the default value can be restored by assigning a
+ value of <literal>DEFAULT</literal>.
+ </para>
+
+ <para>
+ If a <literal role="stmt">SELECT</literal> has a
+ <literal>LIMIT</literal> clause, the <literal>LIMIT</literal>
+ takes precedence over the value of
+ <literal role="sysvar">sql_select_limit</literal>.
+ </para>
+
+ <para>
+ <literal role="sysvar">sql_select_limit</literal> does not
+ apply to <literal role="stmt">SELECT</literal> statements
+ executed within stored routines. It also does not apply to
+ <literal role="stmt">SELECT</literal> statements that do not
+ produce a result set to be returned to the client. These
+ include <literal role="stmt">SELECT</literal> statements in
+ subqueries, <literal>CREATE TABLE ... SELECT</literal>, and
+ <literal>INSERT INTO ... SELECT</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_ssl_ca">
+ <indexterm>
+ <primary>ssl_ca system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>ssl_ca</secondary>
+ </indexterm>
+
+ <literal role="sysvar">ssl_ca</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:ssl-ca"/>
+
+ <para>
+ The path to a file with a list of trusted SSL CAs. This
+ variable was added in MySQL 5.0.23.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_ssl_capath">
+ <indexterm>
+ <primary>ssl_capath system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>ssl_capath</secondary>
+ </indexterm>
+
+ <literal role="sysvar">ssl_capath</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:ssl-capath"/>
+
+ <para>
+ The path to a directory that contains trusted SSL CA
+ certificates in PEM format. This variable was added in MySQL
+ 5.0.23.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_ssl_cert">
+ <indexterm>
+ <primary>ssl_cert system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>ssl_cert</secondary>
+ </indexterm>
+
+ <literal role="sysvar">ssl_cert</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:ssl-cert"/>
+
+ <para>
+ The name of the SSL certificate file to use for establishing a
+ secure connection. This variable was added in MySQL 5.0.23.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_ssl_cipher">
+ <indexterm>
+ <primary>ssl_cipher system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>ssl_cipher</secondary>
+ </indexterm>
+
+ <literal role="sysvar">ssl_cipher</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:ssl-cipher"/>
+
+ <para>
+ A list of allowable ciphers to use for SSL encryption. This
+ variable was added in MySQL 5.0.23.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_ssl_key">
+ <indexterm>
+ <primary>ssl_key system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>ssl_key</secondary>
+ </indexterm>
+
+ <literal role="sysvar">ssl_key</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:ssl-key"/>
+
+ <para>
+ The name of the SSL key file to use for establishing a secure
+ connection. This variable was added in MySQL 5.0.23.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_storage_engine">
+ <indexterm>
+ <primary>storage_engine system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>storage_engine</secondary>
+ </indexterm>
+
+ <literal role="sysvar">storage_engine</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:storage_engine"/>
+
+ <para>
+ The default storage engine (table type). To set the storage
+ engine at server startup, use the
+ <option>--default-storage-engine</option> option. See
+ <xref linkend="server-options"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_sync_frm">
+ <indexterm>
+ <primary>sync_frm system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>sync_frm</secondary>
+ </indexterm>
+
+ <literal role="sysvar">sync_frm</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:sync-frm"/>
+
+ <para>
+ If this variable is set to 1, when any non-temporary table is
+ created its <filename>.frm</filename> file is synchronized to
+ disk (using <literal>fdatasync()</literal>). This is slower
+ but safer in case of a crash. The default is 1.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_system_time_zone">
+ <indexterm>
+ <primary>system_time_zone system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>system_time_zone</secondary>
+ </indexterm>
+
+ <literal role="sysvar">system_time_zone</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:system_time_zone"/>
+
+ <para>
+ 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 <literal role="sysvar">system_time_zone</literal>.
+ Typically the time zone is specified by the
+ <literal>TZ</literal> environment variable. It also can be
+ specified using the <option>--timezone</option> option of the
+ <command>mysqld_safe</command> script.
+ </para>
+
+ <para>
+ The <literal role="sysvar">system_time_zone</literal> variable
+ differs from <literal role="sysvar">time_zone</literal>.
+ Although they might have the same value, the latter variable
+ is used to initialize the time zone for each client that
+ connects. See <xref linkend="time-zone-support"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_table_cache">
+ <indexterm>
+ <primary>table_cache system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>table_cache</secondary>
+ </indexterm>
+
+ <literal role="sysvar">table_cache</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:table_cache"/>
+
+ <para>
+ The number of open tables for all threads. Increasing this
+ value increases the number of file descriptors that
+ <command>mysqld</command> requires. You can check whether you
+ need to increase the table cache by checking the
+ <literal role="statvar">Opened_tables</literal> status
+ variable. See <xref linkend="server-status-variables"/>. If
+ the value of <literal role="statvar">Opened_tables</literal>
+ is large and you don't do
+ <literal role="stmt" condition="flush">FLUSH TABLES</literal>
+ often (which just forces all tables to be closed and
+ reopened), then you should increase the value of the
+ <literal role="sysvar">table_cache</literal> variable. For
+ more information about the table cache, see
+ <xref linkend="table-cache"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_table_lock_wait_timeout">
+ <indexterm>
+ <primary>table_lock_wait_timeout system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>table_lock_wait_timeout</secondary>
+ </indexterm>
+
+ <literal role="sysvar">table_lock_wait_timeout</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:table_lock_wait_timeout"/>
+
+ <para>
+ Specifies a wait timeout for table-level locks, in seconds.
+ The default timeout is 50 seconds. The timeout is active only
+ if the connection has open cursors. This variable can also be
+ set globally at runtime (you need the
+ <literal role="priv">SUPER</literal> privilege to do this).
+ It's available as of MySQL 5.0.10.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_table_type">
+ <indexterm>
+ <primary>table_type system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>table_type</secondary>
+ </indexterm>
+
+ <literal role="sysvar">table_type</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:table_type"/>
+
+ <para>
+ This variable is a synonym for
+ <literal role="sysvar">storage_engine</literal>. In MySQL
+ ¤t-series;,
+ <literal role="sysvar">storage_engine</literal> is the
+ preferred name.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_thread_cache_size">
+ <indexterm>
+ <primary>thread_cache_size system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>thread_cache_size</secondary>
+ </indexterm>
+
+ <literal role="sysvar">thread_cache_size</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:thread_cache_size"/>
+
+ <para>
+ 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
+ <literal role="sysvar">thread_cache_size</literal> 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
+ <literal role="statvar">Connections</literal> and
+ <literal role="statvar">Threads_created</literal> status
+ variables, you can see how efficient the thread cache is. For
+ details, see <xref linkend="server-status-variables"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_thread_concurrency">
+ <indexterm>
+ <primary>thread_concurrency system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>thread_concurrency</secondary>
+ </indexterm>
+
+ <literal role="sysvar">thread_concurrency</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:thread_concurrency"/>
+
+ <para>
+ On Solaris, <command>mysqld</command> calls
+ <function>thr_setconcurrency()</function> 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 does not apply on other
+ systems.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_thread_stack">
+ <indexterm>
+ <primary>thread_stack system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>thread_stack</secondary>
+ </indexterm>
+
+ <literal role="sysvar">thread_stack</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:thread_stack"/>
+
+ <para>
+ The stack size for each thread. Many of the limits detected by
+ the <literal>crash-me</literal> test are dependent on this
+ value. See <xref linkend="mysql-benchmarks"/>. The default
+ (192KB) is large enough for normal operation. If the thread
+ stack size is too small, it limits the complexity of the SQL
+ statements that the server can handle, the recursion depth of
+ stored procedures, and other memory-consuming actions.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_time_format">
+ <indexterm>
+ <primary>time_format system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>time_format</secondary>
+ </indexterm>
+
+ <literal role="sysvar">time_format</literal>
+ </para>
+
+ <para>
+ This variable is unused.
+ </para>
+
+<!--
+ <para>
+ Determines how the server converts <literal role="type">TIME</literal>
+ values to strings. This variable is available as a global,
+ local, or command-line option.
+ <replaceable>format_str</replaceable> can be specified
+ conveniently using the <literal role="func">GET_FORMAT()</literal>
+ function. See <xref linkend="date-and-time-functions"/>.
+ </para>
+-->
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_time_zone">
+ <indexterm>
+ <primary>time_zone system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>time_zone</secondary>
+ </indexterm>
+
+ <literal role="sysvar">time_zone</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:time_zone"/>
+
+ <para>
+ 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 <literal>'SYSTEM'</literal> (which
+ means, <quote>use the value of
+ <literal role="sysvar">system_time_zone</literal></quote>).
+ The value can be specified explicitly at server startup with
+ the <option>--default-time-zone</option> option. See
+ <xref linkend="time-zone-support"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_timed_mutexes">
+ <indexterm>
+ <primary>timed_mutexes system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>timed_mutexes</secondary>
+ </indexterm>
+
+ <literal role="sysvar">timed_mutexes</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:timed_mutexes"/>
+
+ <para>
+ This variable controls whether <literal>InnoDB</literal>
+ mutexes are timed. If this variable is set to 0 or
+ <literal>OFF</literal> (the default), mutex timing is
+ disabled. If the variable is set to 1 or
+ <literal>ON</literal>, mutex timing is enabled. With timing
+ enabled, the <literal>os_wait_times</literal> value in the
+ output from <literal role="stmt" condition="show-engine">SHOW
+ ENGINE INNODB MUTEX</literal> indicates the amount of time (in
+ ms) spent in operating system waits. Otherwise, the value is
+ 0. This variable was added in MySQL 5.0.3.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_tmp_table_size">
+ <indexterm>
+ <primary>tmp_table_size system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>tmp_table_size</secondary>
+ </indexterm>
+
+ <literal role="sysvar">tmp_table_size</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:tmp_table_size"/>
+
+ <para>
+ The maximum size of internal in-memory temporary tables. (The
+ actual limit is determined as the smaller of
+ <literal role="sysvar">max_heap_table_size</literal> and
+ <literal role="sysvar">tmp_table_size</literal>.) If an
+ in-memory temporary table exceeds the limit, MySQL
+ automatically converts it to an on-disk
+ <literal>MyISAM</literal> table. Increase the value of
+ <literal role="sysvar">tmp_table_size</literal> (and
+ <literal role="sysvar">max_heap_table_size</literal> if
+ necessary) if you do many advanced <literal>GROUP BY</literal>
+ queries and you have lots of memory. This variable does not
+ apply to user-created <literal>MEMORY</literal> tables.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_tmpdir">
+ <indexterm>
+ <primary>tmpdir system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>tmpdir</secondary>
+ </indexterm>
+
+ <literal>tmpdir</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:tmpdir"/>
+
+ <para>
+ The directory used for temporary files and temporary tables.
+ 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 (<quote><literal>:</literal></quote>) on Unix
+ and semicolon characters (<quote><literal>;</literal></quote>)
+ on Windows, NetWare, and OS/2.
+ </para>
+
+ <para>
+ 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
+ <literal>tmpdir</literal> 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
+ <literal role="stmt" condition="load-data">LOAD DATA
+ INFILE</literal> 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
+ <literal role="sysvar">slave_load_tmpdir</literal> variable.
+ In that case, the slave won't use the general
+ <literal>tmpdir</literal> value and you can set
+ <literal>tmpdir</literal> to a non-permanent location.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_transaction_alloc_block_size">
+ <indexterm>
+ <primary>transaction_alloc_block_size system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>transaction_alloc_block_size</secondary>
+ </indexterm>
+
+ <literal role="sysvar">transaction_alloc_block_size</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:transaction_alloc_block_size"/>
+
+ <para>
+ The amount in bytes by which to increase a per-transaction
+ memory pool which needs memory. See the description of
+ <literal role="sysvar">transaction_prealloc_size</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_transaction_prealloc_size">
+ <indexterm>
+ <primary>transaction_prealloc_size system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>transaction_prealloc_size</secondary>
+ </indexterm>
+
+ <literal role="sysvar">transaction_prealloc_size</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:transaction_prealloc_size"/>
+
+ <para>
+ There is a per-transaction memory pool from which various
+ transaction-related allocations take memory. The initial size
+ of the pool in bytes is
+ <literal role="sysvar">transaction_prealloc_size</literal>.
+ For every allocation that cannot be satisfied from the pool
+ because it has insufficient memory available, the pool is
+ increased by
+ <literal role="sysvar">transaction_alloc_block_size</literal>
+ bytes. When the transaction ends, the pool is truncated to
+ <literal role="sysvar">transaction_prealloc_size</literal>
+ bytes.
+ </para>
+
+ <para>
+ By making
+ <literal role="sysvar">transaction_prealloc_size</literal>
+ sufficiently large to contain all statements within a single
+ transaction, you can avoid many <literal>malloc()</literal>
+ calls.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_tx_isolation">
+ <indexterm>
+ <primary>tx_isolation system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>tx_isolation</secondary>
+ </indexterm>
+
+ <literal role="sysvar">tx_isolation</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:tx_isolation"/>
+
+ <para>
+ The default transaction isolation level. Defaults to
+ <literal role="isolevel">REPEATABLE-READ</literal>.
+ </para>
+
+ <para>
+ This variable is set by the
+ <literal role="stmt" condition="set-transaction">SET
+ TRANSACTION ISOLATION LEVEL</literal> statement. See
+ <xref linkend="set-transaction"/>. If you set
+ <literal role="sysvar">tx_isolation</literal> 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:
+ </para>
+
+<programlisting>
+SET tx_isolation = 'READ-COMMITTED';
+</programlisting>
+
+ <para>
+ Any unique prefix of a valid value may be used to set the
+ value of this variable.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_updatable_views_with_limit">
+ <indexterm>
+ <primary>updatable_views_with_limit system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>updatable_views_with_limit</secondary>
+ </indexterm>
+
+ <literal role="sysvar">updatable_views_with_limit</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:updatable_views_with_limit"/>
+
+ <para>
+ This variable controls whether updates to a view can be made
+ when the view does not contain all columns of the primary key
+ defined in the underlying table, if the update statement
+ contains a <literal>LIMIT</literal> clause. (Such updates
+ often are generated by GUI tools.) An update is an
+ <literal role="stmt">UPDATE</literal> or
+ <literal role="stmt">DELETE</literal> statement. Primary key
+ here means a <literal>PRIMARY KEY</literal>, or a
+ <literal>UNIQUE</literal> index in which no column can contain
+ <literal>NULL</literal>.
+ </para>
+
+ <para>
+ The variable can have two values:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal>1</literal> or <literal>YES</literal>: Issue a
+ warning only (not an error message). This is the default
+ value.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>0</literal> or <literal>NO</literal>: Prohibit
+ the update.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ This variable was added in MySQL 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <indexterm>
+ <primary>version system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>version</secondary>
+ </indexterm>
+
+ <literal>version</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:version"/>
+
+ <para>
+ The version number for the server.
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:version"/>
+
+ <para>
+ Starting with MySQL 5.0.24, the version number will also
+ indicate whether the server is a standard release (Community)
+ or Enterprise release (for example, <literal>
+ 5.0.28-enterprise-gpl-nt</literal>).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_version_bdb">
+ <indexterm>
+ <primary>version_bdb system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>version_bdb</secondary>
+ </indexterm>
+
+ <literal role="sysvar">version_bdb</literal>
+ </para>
+
+ <para>
+ The <literal>BDB</literal> storage engine version.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_version_comment">
+ <indexterm>
+ <primary>version_comment system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>version_comment</secondary>
+ </indexterm>
+
+ <literal role="sysvar">version_comment</literal>
+ </para>
+
+ <para>
+ The <command>configure</command> script has a
+ <option>--with-comment</option> option that allows a comment
+ to be specified when building MySQL. This variable contains
+ the value of that comment.
+ </para>
+
+ <para>
+ For precompiled binaries, this variable will hold the server
+ version and license information. Starting with MySQL 5.0.24,
+ <literal role="sysvar">version_comment</literal> will include
+ the full server type and license. For community users this
+ will appear as <literal>MySQL Community Edition - Standard
+ (GPL)</literal>. For Enterprise users, the version might be
+ displayed as <literal>MySQL Enterprise Server (GPL)</literal>.
+ The corresponding license for your MySQL binary is shown in
+ parentheses. For server compiled from source, the default
+ value will be the same as that for Community releases.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_version_compile_machine">
+ <indexterm>
+ <primary>version_compile_machine system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>version_compile_machine</secondary>
+ </indexterm>
+
+ <literal role="sysvar">version_compile_machine</literal>
+ </para>
+
+ <para>
+ The type of machine or architecture on which MySQL was built.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_version_compile_os">
+ <indexterm>
+ <primary>version_compile_os system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>version_compile_os</secondary>
+ </indexterm>
+
+ <literal role="sysvar">version_compile_os</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:version_compile_os"/>
+
+ <para>
+ The type of operating system on which MySQL was built.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_wait_timeout">
+ <indexterm>
+ <primary>wait_timeout system variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>system variable</primary>
+ <secondary>wait_timeout</secondary>
+ </indexterm>
+
+ <literal role="sysvar">wait_timeout</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.0:mysqld:wait_timeout"/>
+
+ <para>
+ 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.
+ </para>
+
+ <para>
+ On thread startup, the session
+ <literal role="sysvar">wait_timeout</literal> value is
+ initialized from the global
+ <literal role="sysvar">wait_timeout</literal> value or from
+ the global
+ <literal role="sysvar">interactive_timeout</literal> value,
+ depending on the type of client (as defined by the
+ <literal>CLIENT_INTERACTIVE</literal> connect option to
+ <literal role="cfunc">mysql_real_connect()</literal>). See
+ also <literal role="sysvar">interactive_timeout</literal>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <formalpara role="mnmas">
+
+ <title>MySQL Enterprise</title>
+
+ <para>
+ Expert use of server system variables is part of the service
+ offered by the MySQL Enterprise Monitor. To subscribe, see
+ <ulink url="advisors.html"/>.
+ </para>
+
+ </formalpara>
+
+ </section>
+
+ <section id="server-session-variables">
+
+ <title>Session System Variables</title>
+
+ <indexterm>
+ <primary>session system variables</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>session server variables</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>session variables</primary>
+ <secondary>server</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>session variables</primary>
+ <secondary>system</secondary>
+ </indexterm>
+
+ <para>
+ Several system variables exist only as session variables. These
+ cannot be set at server startup but can be assigned values at
+ runtime using the
+ <literal role="stmt" condition="set-option">SET</literal>
+ statement (except for those that are read only). Most of them are
+ not displayed by <literal role="stmt">SHOW VARIABLES</literal>,
+ but you can obtain their values using
+ <literal role="stmt">SELECT</literal>. This section describes the
+ session system variables. For information about setting or
+ displaying their values, see
+ <xref linkend="using-system-variables"/>. For example:
+ </para>
+
+<programlisting>
+mysql> <userinput>SELECT @@autocommit;</userinput>
++--------------+
+| @@autocommit |
++--------------+
+| 1 |
++--------------+
+</programlisting>
+
+ <para>
+ The lettercase of these variables does not matter.
+ </para>
+
+ <para>
+ The following table lists the system variables that have only
+ session scope:
+ </para>
+
+ <para condition="dynamic:optvar:fullsummary" role="5.0:mysqld:sessionvar:Session System Variable Summary"/>
+
+ <itemizedlist>
+
+ <listitem>
+ <para id="sysvar_autocommit">
+ <indexterm>
+ <primary>autocommit session variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>session variable</primary>
+ <secondary>autocommit</secondary>
+ </indexterm>
+
+ <literal role="sysvar">autocommit</literal>
+ </para>
+
+ <para>
+ The autocommit mode. If set to 1, all changes to a table take
+ effect immediately. If set to 0, you must use
+ <literal role="stmt">COMMIT</literal> to accept a transaction
+ or <literal role="stmt" condition="commit">ROLLBACK</literal>
+ to cancel it. By default, client connections begin with
+ <literal role="sysvar">autocommit</literal> set to 1. If you
+ change <literal role="sysvar">autocommit</literal> mode from 0
+ to 1, MySQL performs an automatic
+ <literal role="stmt">COMMIT</literal> of any open transaction.
+ Another way to begin a transaction is to use a
+ <literal role="stmt" condition="commit">START
+ TRANSACTION</literal> or
+ <literal role="stmt" condition="commit">BEGIN</literal>
+ statement. See <xref linkend="commit"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_big_tables">
+ <indexterm>
+ <primary>big_tables session variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>session variable</primary>
+ <secondary>big_tables</secondary>
+ </indexterm>
+
+ <literal role="sysvar">big_tables</literal>
+ </para>
+
+ <para>
+ <indexterm>
+ <primary>table is full</primary>
+ </indexterm>
+
+ If set to 1, all temporary tables are stored on disk rather
+ than in memory. This is a little slower, but the error
+ <literal>The table <replaceable>tbl_name</replaceable> is
+ full</literal> does not occur for
+ <literal role="stmt">SELECT</literal> operations that require
+ a large temporary table. The default value for a new
+ connection is 0 (use in-memory temporary tables). Normally,
+ you should never need to set this variable, because in-memory
+ tables are automatically converted to disk-based tables as
+ required.
+ </para>
+
+ <note>
+ <para>
+ This variable was formerly named
+ <literal>sql_big_tables</literal>.
+ </para>
+ </note>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_error_count">
+ <indexterm>
+ <primary>error_count session variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>session variable</primary>
+ <secondary>error_count</secondary>
+ </indexterm>
+
+ <literal role="sysvar">error_count</literal>
+ </para>
+
+ <para>
+ The number of errors that resulted from the last statement
+ that generated messages. This variable is read only. See
+ <xref linkend="show-errors"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_foreign_key_checks">
+ <indexterm>
+ <primary>foreign_key_checks session variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>session variable</primary>
+ <secondary>foreign_key_checks</secondary>
+ </indexterm>
+
+ <literal role="sysvar">foreign_key_checks</literal>
+ </para>
+
+ <para>
+ If set to 1 (the default), foreign key constraints for
+ <literal>InnoDB</literal> tables are checked. If set to 0,
+ they are ignored. Disabling foreign key checking can be useful
+ for reloading <literal>InnoDB</literal> tables in an order
+ different from that required by their parent/child
+ relationships. See
+ <xref linkend="innodb-foreign-key-constraints"/>.
+ </para>
+
+ <para>
+ Setting <literal role="sysvar">foreign_key_checks</literal> to
+ 0 also affects data definition statements:
+ <literal role="stmt">DROP DATABASE</literal> drops a database
+ even if it contains tables that have foreign keys that are
+ referred to by tables outside the database, and
+ <literal role="stmt">DROP TABLE</literal> drops tables that
+ have foreign keys that are referred to by other tables.
+ </para>
+
+ <note>
+ <para>
+ Setting <literal role="sysvar">foreign_key_checks</literal>
+ to 1 does not trigger a scan of the existing table data.
+ Therefore, rows added to the table while
+ <literal role="sysvar">foreign_key_checks = 0</literal> will
+ not be verified for consistency.
+ </para>
+ </note>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_identity">
+ <indexterm>
+ <primary>identity session variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>session variable</primary>
+ <secondary>identity</secondary>
+ </indexterm>
+
+ <literal role="sysvar">identity</literal>
+ </para>
+
+ <para>
+ This variable is a synonym for the
+ <literal role="sysvar">last_insert_id</literal> variable. It
+ exists for compatibility with other database systems. You can
+ read its value with <literal>SELECT @@identity</literal>, and
+ set it using <literal>SET identity</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_insert_id">
+ <indexterm>
+ <primary>insert_id session variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>session variable</primary>
+ <secondary>insert_id</secondary>
+ </indexterm>
+
+ <literal role="sysvar">insert_id</literal>
+ </para>
+
+ <para>
+ The value to be used by the following
+ <literal role="stmt">INSERT</literal> or
+ <literal role="stmt">ALTER TABLE</literal> statement when
+ inserting an <literal>AUTO_INCREMENT</literal> value. This is
+ mainly used with the binary log.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_last_insert_id">
+ <indexterm>
+ <primary>last_insert_id session variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>session variable</primary>
+ <secondary>last_insert_id</secondary>
+ </indexterm>
+
+ <literal role="sysvar">last_insert_id</literal>
+ </para>
+
+ <para>
+ The value to be returned from
+ <literal role="func">LAST_INSERT_ID()</literal>. This is
+ stored in the binary log when you use
+ <literal role="func">LAST_INSERT_ID()</literal> in a statement
+ that updates a table. Setting this variable does not update
+ the value returned by the
+ <literal role="cfunc">mysql_insert_id()</literal> C API
+ function.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_profiling">
+ <indexterm>
+ <primary>profiling session variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>session variable</primary>
+ <secondary>profiling</secondary>
+ </indexterm>
+
+ <literal role="sysvar">profiling</literal>
+ </para>
+
+ <para>
+ If set to 0 (the default), statement profiling is disabled. If
+ set to 1, statement profiling is enabled and the
+ <literal role="stmt">SHOW PROFILES</literal> and
+ <literal role="stmt">SHOW PROFILE</literal> statements provide
+ access to profiling information. See
+ <xref linkend="show-profiles"/>. This variable was added in
+ MySQL 5.0.37. <emphasis>Note</emphasis>: This option does not
+ apply to MySQL Enterprise Server users.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_profiling_history_size">
+ <indexterm>
+ <primary>profiling_history_size session variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>session variable</primary>
+ <secondary>profiling_history_size</secondary>
+ </indexterm>
+
+ <literal role="sysvar">profiling_history_size</literal>
+ </para>
+
+ <para>
+ The number of statements for which to maintain profiling
+ information if <literal role="sysvar">profiling</literal> is
+ enabled. The default value is 15. The maximum value is 100.
+ Setting the value to 0 effectively disables profiling. See
+ <xref linkend="show-profiles"/>. This variable was added in
+ MySQL 5.0.37. <emphasis>Note</emphasis>: This option does not
+ apply to MySQL Enterprise Server users.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_rand_seed1">
+ <indexterm>
+ <primary>rand_seed1 session variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>session variable</primary>
+ <secondary>rand_seed1</secondary>
+ </indexterm>
+
+ <literal role="sysvar">rand_seed1</literal>
+ </para>
+
+ <para>
+ The <literal role="sysvar">rand_seed1</literal> and
+ <literal role="sysvar">rand_seed2</literal> variables exist as
+ session variables only, and can be set but not read. They are
+ not shown in the output of <literal role="stmt">SHOW
+ VARIABLES</literal>.
+ </para>
+
+ <para>
+ The purpose of these variables is to support replication of
+ the <literal role="func">RAND()</literal> function. For
+ statements that invoke <literal role="func">RAND()</literal>,
+ the master passes two values to the slave, where they are used
+ to seed the random number generator. The slave uses these
+ values to set the session variables
+ <literal role="sysvar">rand_seed1</literal> and
+ <literal role="sysvar">rand_seed2</literal> so that
+ <literal role="func">RAND()</literal> on the slave generates
+ the same value as on the master.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_rand_seed2">
+ <indexterm>
+ <primary>rand_seed2 session variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>session variable</primary>
+ <secondary>rand_seed2</secondary>
+ </indexterm>
+
+ <literal role="sysvar">rand_seed2</literal>
+ </para>
+
+ <para>
+ See the description for
+ <literal role="sysvar">rand_seed1</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_sql_auto_is_null">
+ <indexterm>
+ <primary>sql_auto_is_null session variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>session variable</primary>
+ <secondary>sql_auto_is_null</secondary>
+ </indexterm>
+
+ <literal role="sysvar">sql_auto_is_null</literal>
+ </para>
+
+ <para>
+ If set to 1 (the default), you can find the last inserted row
+ for a table that contains an <literal>AUTO_INCREMENT</literal>
+ column by using the following construct:
+ </para>
+
+<programlisting>
+WHERE <replaceable>auto_increment_column</replaceable> IS NULL
+</programlisting>
+
+ <para>
+ This behavior is used by some ODBC programs, such as Access.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_sql_big_selects">
+ <indexterm>
+ <primary>sql_big_selects session variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>session variable</primary>
+ <secondary>sql_big_selects</secondary>
+ </indexterm>
+
+ <literal role="sysvar">sql_big_selects</literal>
+ </para>
+
+ <para>
+ If set to 0, MySQL aborts
+ <literal role="stmt">SELECT</literal> statements that are
+ likely to take a very long time to execute (that is,
+ statements for which the optimizer estimates that the number
+ of examined rows exceeds the value of
+ <literal role="sysvar">max_join_size</literal>). This is
+ useful when an inadvisable <literal>WHERE</literal> statement
+ has been issued. The default value for a new connection is 1,
+ which allows all <literal role="stmt">SELECT</literal>
+ statements.
+ </para>
+
+ <para>
+ If you set the <literal role="sysvar">max_join_size</literal>
+ system variable to a value other than
+ <literal>DEFAULT</literal>,
+ <literal role="sysvar">sql_big_selects</literal> is set to 0.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_sql_buffer_result">
+ <indexterm>
+ <primary>sql_buffer_result session variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>session variable</primary>
+ <secondary>sql_buffer_result</secondary>
+ </indexterm>
+
+ <literal role="sysvar">sql_buffer_result</literal>
+ </para>
+
+ <para>
+ If set to 1,
+ <literal role="sysvar">sql_buffer_result</literal> forces
+ results from <literal role="stmt">SELECT</literal> statements
+ to be put into temporary tables. This helps MySQL free the
+ table locks early and can be beneficial in cases where it
+ takes a long time to send results to the client. The default
+ value is 0.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_sql_log_bin">
+ <indexterm>
+ <primary>sql_log_bin session variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>session variable</primary>
+ <secondary>sql_log_bin</secondary>
+ </indexterm>
+
+ <literal role="sysvar">sql_log_bin</literal>
+ </para>
+
+ <para>
+ If set to 0, no logging is done to the binary log for the
+ client. The client must have the
+ <literal role="priv">SUPER</literal> privilege to set this
+ option. The default value is 1.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_sql_log_off">
+ <indexterm>
+ <primary>sql_log_off session variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>session variable</primary>
+ <secondary>sql_log_off</secondary>
+ </indexterm>
+
+ <literal role="sysvar">sql_log_off</literal>
+ </para>
+
+ <para>
+ If set to 1, no logging is done to the general query log for
+ this client. The client must have the
+ <literal role="priv">SUPER</literal> privilege to set this
+ option. The default value is 0.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_sql_log_update">
+ <indexterm>
+ <primary>sql_log_update session variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>session variable</primary>
+ <secondary>sql_log_update</secondary>
+ </indexterm>
+
+ <literal role="sysvar">sql_log_update</literal>
+ </para>
+
+ <para>
+ This variable is deprecated, and is mapped to
+ <literal role="sysvar">sql_log_bin</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_sql_notes">
+ <indexterm>
+ <primary>sql_notes session variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>session variable</primary>
+ <secondary>sql_notes</secondary>
+ </indexterm>
+
+ <literal role="sysvar">sql_notes</literal>
+ </para>
+
+ <para>
+ If set to 1 (the default), warnings of <literal>Note</literal>
+ level are recorded. If set to 0, <literal>Note</literal>
+ warnings are suppressed. <command>mysqldump</command> includes
+ output to set this variable to 0 so that reloading the dump
+ file does not produce warnings for events that do not affect
+ the integrity of the reload operation.
+ <literal role="sysvar">sql_notes</literal> was added in MySQL
+ 5.0.3.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_sql_quote_show_create">
+ <indexterm>
+ <primary>sql_quote_show_create session variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>session variable</primary>
+ <secondary>sql_quote_show_create</secondary>
+ </indexterm>
+
+ <literal role="sysvar">sql_quote_show_create</literal>
+ </para>
+
+ <para>
+ If set to 1 (the default), the server quotes identifiers for
+ <literal role="stmt">SHOW CREATE TABLE</literal> and
+ <literal role="stmt">SHOW CREATE DATABASE</literal>
+ statements. If set to 0, quoting is disabled. This option is
+ enabled by default so that replication works for identifiers
+ that require quoting. See <xref linkend="show-create-table"/>,
+ and <xref linkend="show-create-database"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_sql_safe_updates">
+ <indexterm>
+ <primary>sql_safe_updates session variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>session variable</primary>
+ <secondary>sql_safe_updates</secondary>
+ </indexterm>
+
+ <literal role="sysvar">sql_safe_updates</literal>
+ </para>
+
+ <para>
+ If set to 1, MySQL aborts
+ <literal role="stmt">UPDATE</literal> or
+ <literal role="stmt">DELETE</literal> statements that do not
+ use a key in the <literal>WHERE</literal> clause or a
+ <literal>LIMIT</literal> clause. This makes it possible to
+ catch <literal role="stmt">UPDATE</literal> or
+ <literal role="stmt">DELETE</literal> statements where keys
+ are not used properly and that would probably change or delete
+ a large number of rows. The default value is 0.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_sql_warnings">
+ <indexterm>
+ <primary>sql_warnings session variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>session variable</primary>
+ <secondary>sql_warnings</secondary>
+ </indexterm>
+
+ <literal role="sysvar">sql_warnings</literal>
+ </para>
+
+ <para>
+ This variable controls whether single-row
+ <literal role="stmt">INSERT</literal> statements produce an
+ information string if warnings occur. The default is 0. Set
+ the value to 1 to produce an information string.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_timestamp">
+ <indexterm>
+ <primary>timestamp session variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>session variable</primary>
+ <secondary>timestamp</secondary>
+ </indexterm>
+
+ <literal role="sysvar">timestamp =
+ {<replaceable>timestamp_value</replaceable> |
+ DEFAULT}</literal>
+ </para>
+
+ <para>
+ Set the time for this client. This is used to get the original
+ timestamp if you use the binary log to restore rows.
+ <replaceable>timestamp_value</replaceable> should be a Unix
+ epoch timestamp, not a MySQL timestamp.
+ </para>
+
+ <para>
+ <literal>SET timestamp</literal> affects the value returned by
+ <literal role="func">NOW()</literal> but not by
+ <literal role="func">SYSDATE()</literal>. This means that
+ timestamp settings in the binary log have no effect on
+ invocations of <literal role="func">SYSDATE()</literal>. The
+ server can be started with the
+ <option>--sysdate-is-now</option> option to cause
+ <literal role="func">SYSDATE()</literal> to be an alias for
+ <literal role="func">NOW()</literal>, in which case
+ <literal>SET timestamp</literal> affects both functions.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_unique_checks">
+ <indexterm>
+ <primary>unique_checks session variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>session variable</primary>
+ <secondary>unique_checks</secondary>
+ </indexterm>
+
+ <literal role="sysvar">unique_checks</literal>
+ </para>
+
+ <para>
+ If set to 1 (the default), uniqueness checks for secondary
+ indexes in <literal>InnoDB</literal> tables are performed. If
+ set to 0, storage engines are allowed to assume that duplicate
+ keys are not present in input data. If you know for certain
+ that your data does not contain uniqueness violations, you can
+ set this to 0 to speed up large table imports to
+ <literal>InnoDB</literal>.
+ </para>
+
+ <para>
+ Note that setting this variable to 0 does not
+ <emphasis>require</emphasis> storage engines to ignore
+ duplicate keys. An engine is still allowed to check for them
+ and issue duplicate-key errors if it detects them.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sysvar_warning_count">
+ <indexterm>
+ <primary>warning_count session variable</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>session variable</primary>
+ <secondary>warning_count</secondary>
+ </indexterm>
+
+ <literal role="sysvar">warning_count</literal>
+ </para>
+
+ <para>
+ The number of errors, warnings, and notes that resulted from
+ the last statement that generated messages. This variable is
+ read only. See <xref linkend="show-warnings"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </section>
+
+ <section id="using-system-variables">
+
+ <title>Using System Variables</title>
+
+ <indexterm>
+ <primary>system variables</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>variables</primary>
+ <secondary>system</secondary>
+ </indexterm>
+
+ <para>
+ The MySQL server maintains many system variables that indicate how
+ it is configured. <xref linkend="server-system-variables"/>,
+ describes the meaning of these variables. 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. Most of
+ them can be changed dynamically while the server is running by
+ means of the
+ <literal role="stmt" condition="set-option">SET</literal>
+ 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.
+ </para>
+
+ <para>
+ The server maintains two kinds of system variables. Global
+ variables affect the overall operation of the server. Session
+ variables affect its operation for individual client connections.
+ A given system variable can have both a global and a session
+ value. Global and session system variables are related as follows:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ When the server starts, it initializes all global variables to
+ their default values. These defaults can be changed by options
+ specified on the command line or in an option file. (See
+ <xref linkend="program-options"/>.)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ 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 example, the client's SQL
+ mode is controlled by the session
+ <literal role="sysvar">sql_mode</literal> value, which is
+ initialized when the client connects to the value of the
+ global <literal role="sysvar">sql_mode</literal> value.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ System variable values can be set globally at server startup by
+ using options on the command line or in an option file. When you
+ use a startup option to set a variable that takes a numeric value,
+ the value can be given with a suffix of <literal>K</literal>,
+ <literal>M</literal>, or <literal>G</literal> (either uppercase or
+ lowercase) to indicate a multiplier of 1024,
+ 1024<superscript>2</superscript> or
+ 1024<superscript>3</superscript>; that is, units of kilobytes,
+ megabytes, or gigabytes, respectively. Thus, the following command
+ starts the server with a query cache size of 16 megabytes and a
+ maximum packet size of one gigabyte:
+ </para>
+
+<programlisting>
+mysqld --query_cache_size=16M --max_allowed_packet=1G
+</programlisting>
+
+ <para>
+ Within an option file, those variables are set like this:
+ </para>
+
+<programlisting>
+[mysqld]
+query_cache_size=16M
+max_allowed_packet=1G
+</programlisting>
+
+ <para>
+ The lettercase of suffix letters does not matter;
+ <literal>16M</literal> and <literal>16m</literal> are equivalent,
+ as are <literal>1G</literal> and <literal>1g</literal>.
+ </para>
+
+ <para>
+ If you want to restrict the maximum value to which a system
+ variable can be set at runtime with the
+ <literal role="stmt" condition="set-option">SET</literal>
+ statement, you can specify this maximum by using an option of the
+ form
+ <option>--maximum-<replaceable>var_name</replaceable>=<replaceable>value</replaceable></option>
+ at server startup. For example, to prevent the value of
+ <literal role="sysvar">query_cache_size</literal> from being
+ increased to more than 32MB at runtime, use the option
+ <option>--maximum-query_cache_size=32M</option>.
+ </para>
+
+ <remark role="note">
+ [pd] Following paragraphs appear both in set-option and
+ using-system-variables. Revisions should be made both places.
+ </remark>
+
+ <para>
+ Many system variables are dynamic and can be changed while the
+ server runs by using the
+ <literal role="stmt" condition="set-option">SET</literal>
+ statement. For a list, see
+ <xref linkend="dynamic-system-variables"/>. To change a system
+ variable with
+ <literal role="stmt" condition="set-option">SET</literal>, refer
+ to it as <replaceable>var_name</replaceable>, optionally preceded
+ by a modifier:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ To indicate explicitly that a variable is a global variable,
+ precede its name by <literal>GLOBAL</literal> or
+ <literal>@@global.</literal>. The
+ <literal role="priv">SUPER</literal> privilege is required to
+ set global variables.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ To indicate explicitly that a variable is a session variable,
+ precede its name by <literal>SESSION</literal>,
+ <literal>@@session.</literal>, or <literal>@@</literal>.
+ Setting a session variable requires no special privilege, but
+ a client can change only its own session variables, not those
+ of any other client.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>LOCAL</literal> and <literal>@@local.</literal> are
+ synonyms for <literal>SESSION</literal> and
+ <literal>@@session.</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ If no modifier is present,
+ <literal role="stmt" condition="set-option">SET</literal>
+ changes the session variable.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ A <literal role="stmt" condition="set-option">SET</literal>
+ statement can contain multiple variable assignments, separated by
+ commas. If you set several system variables, the most recent
+ <literal>GLOBAL</literal> or <literal>SESSION</literal> modifier
+ in the statement is used for following variables that have no
+ modifier specified.
+ </para>
+
+ <para>
+ Examples:
+ </para>
+
+<programlisting>
+SET sort_buffer_size=10000;
+SET @@local.sort_buffer_size=10000;
+SET GLOBAL sort_buffer_size=1000000, SESSION sort_buffer_size=1000000;
+SET @@sort_buffer_size=1000000;
+SET @@global.sort_buffer_size=1000000, @@local.sort_buffer_size=1000000;
+</programlisting>
+
+ <para>
+ The <literal>@@<replaceable>var_name</replaceable></literal>
+ syntax for system variables is supported for compatibility with
+ some other database systems.
+ </para>
+
+ <para>
+ If you change a session system variable, the value remains in
+ effect until your session ends or until you change the variable to
+ a different value. The change is not visible to other clients.
+ </para>
+
+ <para>
+ If you change a global system variable, the value is remembered
+ and used for new connections until the server restarts. (To make a
+ global system variable setting permanent, you should set it in an
+ option file.) The change is visible to any client that accesses
+ that global variable. However, the change affects the
+ corresponding session variable only for clients that connect after
+ the change. The global variable change does not affect the session
+ variable for any client that is currently connected (not even that
+ of the client that issues the
+ <literal role="stmt" condition="set-option">SET GLOBAL</literal>
+ statement).
+ </para>
+
+ <para>
+ To prevent incorrect usage, MySQL produces an error if you use
+ <literal role="stmt" condition="set-option">SET GLOBAL</literal>
+ with a variable that can only be used with
+ <literal role="stmt" condition="set-option">SET SESSION</literal>
+ or if you do not specify <literal>GLOBAL</literal> (or
+ <literal>@@global.</literal>) when setting a global variable.
+ </para>
+
+ <para>
+ To set a <literal>SESSION</literal> variable to the
+ <literal>GLOBAL</literal> value or a <literal>GLOBAL</literal>
+ value to the compiled-in MySQL default value, use the
+ <literal>DEFAULT</literal> keyword. For example, the following two
+ statements are identical in setting the session value of
+ <literal role="sysvar">max_join_size</literal> to the global
+ value:
+ </para>
+
+<programlisting>
+SET max_join_size=DEFAULT;
+SET @@session.max_join_size=@@global.max_join_size;
+</programlisting>
+
+ <para>
+ Not all system variables can be set to <literal>DEFAULT</literal>.
+ In such cases, use of <literal>DEFAULT</literal> results in an
+ error.
+ </para>
+
+ <para>
+ You can refer to the values of specific global or sesson system
+ variables in expressions by using one of the
+ <literal>@@</literal>-modifiers. For example, you can retrieve
+ values in a <literal role="stmt">SELECT</literal> statement like
+ this:
+ </para>
+
+<programlisting>
+SELECT @@global.sql_mode, @@session.sql_mode, @@sql_mode;
+</programlisting>
+
+ <para>
+ When you refer to a system variable in an expression as
+ <literal>@@<replaceable>var_name</replaceable></literal> (that is,
+ when you do not specify <literal>@@global.</literal> or
+ <literal>@@session.</literal>), MySQL returns the session value if
+ it exists and the global value otherwise. (This differs from
+ <literal>SET @@<replaceable>var_name</replaceable> =
+ <replaceable>value</replaceable></literal>, which always refers to
+ the session value.)
+ </para>
+
+ <para>
+ Suffixes for specifying a value multiplier can be used when
+ setting a variable at server startup, but not to set the value
+ with <literal role="stmt" condition="set-option">SET</literal> at
+ runtime. On the other hand, with
+ <literal role="stmt" condition="set-option">SET</literal> you can
+ assign a variable's value using an expression, which is not true
+ when you set a variable at server startup. For example, the first
+ of the following lines is legal at server startup, but the second
+ is not:
+ </para>
+
+<programlisting>
+shell> <userinput>mysql --max_allowed_packet=16M</userinput>
+shell> <userinput>mysql --max_allowed_packet=16*1024*1024</userinput>
+</programlisting>
+
+ <para>
+ Conversely, the second of the following lines is legal at runtime,
+ but the first is not:
+ </para>
+
+<programlisting>
+mysql> <userinput>SET GLOBAL max_allowed_packet=16M;</userinput>
+mysql> <userinput>SET GLOBAL max_allowed_packet=16*1024*1024;</userinput>
+</programlisting>
+
+ <note>
+ <para>
+ Some system variables can be enabled with the
+ <literal role="stmt" condition="set-option">SET</literal>
+ statement by setting them to <literal>ON</literal> or
+ <literal>1</literal>, or disabled by setting them to
+ <literal>OFF</literal> or <literal>0</literal>. However, to set
+ such a variable on the command line or in an option file, you
+ must set it to <literal>1</literal> or <literal>0</literal>;
+ setting it to <literal>ON</literal> or <literal>OFF</literal>
+ will not work. For example, on the command line,
+ <option>--delay_key_write=1</option> works but
+ <option>--delay_key_write=ON</option> does not.
+ </para>
+ </note>
+
+ <para>
+ To display system variable names and values, use the
+ <literal role="stmt">SHOW VARIABLES</literal> statement:
+ </para>
+
+<programlisting>
+mysql> <userinput>SHOW VARIABLES;</userinput>
++--------+--------------------------------------------------------------+
+| Variable_name | Value |
++--------+--------------------------------------------------------------+
+| auto_increment_increment | 1 |
+| auto_increment_offset | 1 |
+| automatic_sp_privileges | ON |
+| back_log | 50 |
+| basedir | / |
+| bdb_cache_size | 8388600 |
+| bdb_home | /var/lib/mysql/ |
+| bdb_log_buffer_size | 32768 |
+| bdb_logdir | |
+| bdb_max_lock | 10000 |
+| bdb_shared_data | OFF |
+| bdb_tmpdir | /tmp/ |
+| 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/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.0.19 |
+| version_comment | MySQL Community Edition - (GPL) |
+| version_compile_machine | i686 |
+| version_compile_os | pc-linux-gnu |
+| wait_timeout | 28800 |
++--------+--------------------------------------------------------------+
+</programlisting>
+
+ <remark role="note">
+ [pd] Following paragraphs appear both in show-variables and
+ using-system-variables. Revisions should be made both places.
+ </remark>
+
+ <para>
+ With a <literal role="op">LIKE</literal> clause, the statement
+ displays only those variables that match the pattern. To obtain a
+ specific variable name, use a <literal role="op">LIKE</literal>
+ clause as shown:
+ </para>
+
+<programlisting>
+SHOW VARIABLES LIKE 'max_join_size';
+SHOW SESSION VARIABLES LIKE 'max_join_size';
+</programlisting>
+
+ <para>
+ To get a list of variables whose name match a pattern, use the
+ <quote><literal>%</literal></quote> wildcard character in a
+ <literal role="op">LIKE</literal> clause:
+ </para>
+
+<programlisting>
+SHOW VARIABLES LIKE '%size%';
+SHOW GLOBAL VARIABLES LIKE '%size%';
+</programlisting>
+
+ <para>
+ Wildcard characters can be used in any position within the pattern
+ to be matched. Strictly speaking, because
+ <quote><literal>_</literal></quote> is a wildcard that matches any
+ single character, you should escape it as
+ <quote><literal>\_</literal></quote> to match it literally. In
+ practice, this is rarely necessary.
+ </para>
+
+ <para>
+ For <literal role="stmt">SHOW VARIABLES</literal>, if you specify
+ neither <literal>GLOBAL</literal> nor <literal>SESSION</literal>,
+ MySQL returns <literal>SESSION</literal> values.
+ </para>
+
+ <para>
+ The reason for requiring the <literal>GLOBAL</literal> keyword
+ when setting <literal>GLOBAL</literal>-only variables but not when
+ retrieving them is to prevent problems in the future. If we were
+ to remove a <literal>SESSION</literal> variable that has the same
+ name as a <literal>GLOBAL</literal> variable, a client with the
+ <literal role="priv">SUPER</literal> privilege might accidentally
+ change the <literal>GLOBAL</literal> variable rather than just the
+ <literal>SESSION</literal> variable for its own connection. If we
+ add a <literal>SESSION</literal> variable with the same name as a
+ <literal>GLOBAL</literal> variable, a client that intends to
+ change the <literal>GLOBAL</literal> variable might find only its
+ own <literal>SESSION</literal> variable changed.
+ </para>
+
+ <section id="structured-system-variables">
+
+ <title>Structured System Variables</title>
+
+ <para>
+ A structured variable differs from a regular system variable in
+ two respects:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Its value is a structure with components that specify server
+ parameters considered to be closely related.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ There might be several instances of a given type of
+ structured variable. Each one has a different name and
+ refers to a different resource maintained by the server.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ MySQL ¤t-series; supports one structured variable type,
+ which specifies parameters governing the operation of key
+ caches. A key cache structured variable has these components:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal role="sysvar">key_buffer_size</literal>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal role="sysvar">key_cache_block_size</literal>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal role="sysvar">key_cache_division_limit</literal>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal role="sysvar">key_cache_age_threshold</literal>
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ This section describes the syntax for referring to structured
+ variables. Key cache variables are used for syntax examples, but
+ specific details about how key caches operate are found
+ elsewhere, in <xref linkend="myisam-key-cache"/>.
+ </para>
+
+ <para>
+ To refer to a component of a structured variable instance, you
+ can use a compound name in
+ <replaceable>instance_name.component_name</replaceable> format.
+ Examples:
+ </para>
+
+<programlisting>
+hot_cache.key_buffer_size
+hot_cache.key_cache_block_size
+cold_cache.key_cache_block_size
+</programlisting>
+
+ <para>
+ For each structured system variable, an instance with the name
+ of <literal>default</literal> is always predefined. If you refer
+ to a component of a structured variable without any instance
+ name, the <literal>default</literal> instance is used. Thus,
+ <literal>default.key_buffer_size</literal> and
+ <literal role="sysvar">key_buffer_size</literal> both refer to
+ the same system variable.
+ </para>
+
+ <para>
+ Structured variable instances and components follow these naming
+ rules:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ For a given type of structured variable, each instance must
+ have a name that is unique <emphasis>within</emphasis>
+ variables of that type. However, instance names need not be
+ unique <emphasis>across</emphasis> structured variable
+ types. For example, each structured variable has an instance
+ named <literal>default</literal>, so
+ <literal>default</literal> is not unique across variable
+ types.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The names of the components of each structured variable type
+ must be unique across all system variable names. If this
+ were not true (that is, if two different types of structured
+ variables could share component member names), it would not
+ be clear which default structured variable to use for
+ references to member names that are not qualified by an
+ instance name.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ If a structured variable instance name is not legal as an
+ unquoted identifier, refer to it as a quoted identifier
+ using backticks. For example, <literal>hot-cache</literal>
+ is not legal, but <literal>`hot-cache`</literal> is.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>global</literal>, <literal>session</literal>, and
+ <literal>local</literal> are not legal instance names. This
+ avoids a conflict with notation such as
+ <literal>@@global.<replaceable>var_name</replaceable></literal>
+ for referring to non-structured system variables.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Currently, the first two rules have no possibility of being
+ violated because the only structured variable type is the one
+ for key caches. These rules will assume greater significance if
+ some other type of structured variable is created in the future.
+ </para>
+
+ <para>
+ With one exception, you can refer to structured variable
+ components using compound names in any context where simple
+ variable names can occur. For example, you can assign a value to
+ a structured variable using a command-line option:
+ </para>
+
+<programlisting>
+shell> <userinput>mysqld --hot_cache.key_buffer_size=64K</userinput>
+</programlisting>
+
+ <para>
+ In an option file, use this syntax:
+ </para>
+
+<programlisting>
+[mysqld]
+hot_cache.key_buffer_size=64K
+</programlisting>
+
+ <para>
+ If you start the server with this option, it creates a key cache
+ named <literal>hot_cache</literal> with a size of 64KB in
+ addition to the default key cache that has a default size of
+ 8MB.
+ </para>
+
+ <para>
+ Suppose that you start the server as follows:
+ </para>
+
+<programlisting>
+shell> <userinput>mysqld --key_buffer_size=256K \</userinput>
+ <userinput>--extra_cache.key_buffer_size=128K \</userinput>
+ <userinput>--extra_cache.key_cache_block_size=2048</userinput>
+</programlisting>
+
+ <para>
+ In this case, the server sets the size of the default key cache
+ to 256KB. (You could also have written
+ <option>--default.key_buffer_size=256K</option>.) In addition,
+ the server creates a second key cache named
+ <literal>extra_cache</literal> that has a size of 128KB, with
+ the size of block buffers for caching table index blocks set to
+ 2048 bytes.
+ </para>
+
+ <para>
+ The following example starts the server with three different key
+ caches having sizes in a 3:1:1 ratio:
+ </para>
+
+<programlisting>
+shell> <userinput>mysqld --key_buffer_size=6M \</userinput>
+ <userinput>--hot_cache.key_buffer_size=2M \</userinput>
+ <userinput>--cold_cache.key_buffer_size=2M</userinput>
+</programlisting>
+
+ <para>
+ Structured variable values may be set and retrieved at runtime
+ as well. For example, to set a key cache named
+ <literal>hot_cache</literal> to a size of 10MB, use either of
+ these statements:
+ </para>
+
+<programlisting>
+mysql> <userinput>SET GLOBAL hot_cache.key_buffer_size = 10*1024*1024;</userinput>
+mysql> <userinput>SET @@global.hot_cache.key_buffer_size = 10*1024*1024;</userinput>
+</programlisting>
+
+ <para>
+ To retrieve the cache size, do this:
+ </para>
+
+<programlisting>
+mysql> <userinput>SELECT @@global.hot_cache.key_buffer_size;</userinput>
+</programlisting>
+
+ <para>
+ However, the following statement does not work. The variable is
+ not interpreted as a compound name, but as a simple string for a
+ <literal role="op">LIKE</literal> pattern-matching operation:
+ </para>
+
+<programlisting>
+mysql> <userinput>SHOW GLOBAL VARIABLES LIKE 'hot_cache.key_buffer_size';</userinput>
+</programlisting>
+
+ <para>
+ This is the exception to being able to use structured variable
+ names anywhere a simple variable name may occur.
+ </para>
+
+ </section>
+
+ <section id="dynamic-system-variables">
+
+ <title>Dynamic System Variables</title>
+
+ <para>
+ Many server system variables are dynamic and can be set at
+ runtime using <literal role="stmt" condition="set-option">SET
+ GLOBAL</literal> or
+ <literal role="stmt" condition="set-option">SET
+ SESSION</literal>. You can also obtain their values using
+ <literal role="stmt">SELECT</literal>. See
+ <xref linkend="using-system-variables"/>.
+ </para>
+
+ <para>
+ The following table shows the full list of all dynamic system
+ variables. The last column indicates for each variable whether
+ <literal>GLOBAL</literal> or <literal>SESSION</literal> (or
+ both) apply. The table also lists session options that can be
+ set with the
+ <literal role="stmt" condition="set-option">SET</literal>
+ statement. <xref linkend="server-session-variables"/>, discusses
+ these options.
+ </para>
+
+ <para>
+ Variables that have a type of <quote>string</quote> take a
+ string value. Variables that have a type of
+ <quote>numeric</quote> take a numeric value. Variables that have
+ a type of <quote>boolean</quote> can be set to 0, 1,
+ <literal>ON</literal> or <literal>OFF</literal>. (If you set
+ them on the command line or in an option file, use the numeric
+ values.) Variables that are marked as <quote>enumeration</quote>
+ normally should be set to one of the available values for the
+ variable, but can also be set to the number that corresponds to
+ the desired enumeration value. For enumerated system variables,
+ the first enumeration value corresponds to 0. This differs from
+ <literal role="type">ENUM</literal> columns, for which the first
+ enumeration value corresponds to 1.
+ </para>
+
+ <para condition="dynamic:optvar:dynamicvarsummary" role="5.0:mysqld:dynamicvar:Dynamic Variable Summary"/>
+
+ <formalpara role="mnmas">
+
+ <title>MySQL Enterprise</title>
+
+ <para>
+ Improper configuration of system variables can adversely
+ affect performance and security. The MySQL Enterprise Monitor
+ continually monitors system variables and provides expert
+ advice about appropriate settings. For more information see
+ <ulink url="advisors.html"/>.
+ </para>
+
+ </formalpara>
+
+ </section>
+
+ </section>
+
+ <section id="server-status-variables">
+
+ <title>Server Status Variables</title>
+
+ <indexterm>
+ <primary>status variables</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>variables</primary>
+ <secondary>status</secondary>
+ </indexterm>
+
+ <para>
+ The server maintains many status variables that provide
+ information about its operation. You can view these variables and
+ their values by using the <literal>SHOW [GLOBAL | SESSION]
+ STATUS</literal> statement (see <xref linkend="show-status"/>).
+ The optional <literal>GLOBAL</literal> keyword aggregates the
+ values over all connections, and <literal>SESSION</literal> shows
+ the values for the current connection.
+ </para>
+
+<programlisting>
+mysql> <userinput>SHOW GLOBAL STATUS;</userinput>
++-----------------------------------+------------+
+| Variable_name | Value |
++-----------------------------------+------------+
+| Aborted_clients | 0 |
+| Aborted_connects | 0 |
+| Bytes_received | 155372598 |
+| Bytes_sent | 1176560426 |
+...
+| Connections | 30023 |
+| Created_tmp_disk_tables | 0 |
+| Created_tmp_files | 3 |
+| Created_tmp_tables | 2 |
+...
+| Threads_created | 217 |
+| Threads_running | 88 |
+| Uptime | 1389872 |
++-----------------------------------+------------+
+
+</programlisting>
+
+ <para>
+ The following table lists all available server status variables:
+ </para>
+
+ <para condition="dynamic:optvar:dynamicvarsummary" role="5.0:mysqld:statusvar:Status Variable Summary"/>
+
+ <note>
+ <para>
+ Before MySQL 5.0.2, <literal role="stmt">SHOW STATUS</literal>
+ returned global status values. Because the default as of 5.0.2
+ is to return session values, this is incompatible with previous
+ versions. To issue a <literal role="stmt">SHOW STATUS</literal>
+ statement that will retrieve global status values for all
+ versions of MySQL, write it like this:
+ </para>
+ </note>
+
+<programlisting>
+SHOW /*!50002 GLOBAL */ STATUS;
+</programlisting>
+
+ <para>
+ Many status variables are reset to 0 by the <literal>FLUSH
+ STATUS</literal> statement.
+ </para>
+
+ <formalpara role="mnmas">
+
+ <title>MySQL Enterprise</title>
+
+ <para>
+ For expert advice on using status variables, subscribe to the
+ MySQL Enterprise Monitor. For more information, see
+ <ulink url="advisors.html"/>.
+ </para>
+
+ </formalpara>
+
+ <para>
+ The status variables have the following meanings. Variables with
+ no version indicated were already present prior to MySQL
+ ¤t-series;. For information regarding their implementation
+ history, see <citetitle>&title-refman-previous;</citetitle>.
+ </para>
+
+ <para>
+ For meanings of status variables specific to MySQL Cluster, see
+ <xref linkend="mysql-cluster-status-variables"/>.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para id="statvar_Aborted_clients">
+ <literal role="statvar">Aborted_clients</literal>
+ </para>
+
+ <para>
+ The number of connections that were aborted because the client
+ died without closing the connection properly. See
+ <xref linkend="communication-errors"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Aborted_connects">
+ <literal role="statvar">Aborted_connects</literal>
+ </para>
+
+ <para>
+ The number of failed attempts to connect to the MySQL server.
+ See <xref linkend="communication-errors"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Binlog_cache_disk_use">
+ <literal role="statvar">Binlog_cache_disk_use</literal>
+ </para>
+
+ <para>
+ The number of transactions that used the temporary binary log
+ cache but that exceeded the value of
+ <literal role="sysvar">binlog_cache_size</literal> and used a
+ temporary file to store statements from the transaction.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Binlog_cache_use">
+ <literal role="statvar">Binlog_cache_use</literal>
+ </para>
+
+ <para>
+ The number of transactions that used the temporary binary log
+ cache.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Bytes_received">
+ <literal role="statvar">Bytes_received</literal>
+ </para>
+
+ <para>
+ The number of bytes received from all clients.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Bytes_sent">
+ <literal role="statvar">Bytes_sent</literal>
+ </para>
+
+ <para>
+ The number of bytes sent to all clients.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Com_xxx">
+ <literal>Com_<replaceable>xxx</replaceable></literal>
+ </para>
+
+ <para>
+ The <literal>Com_<replaceable>xxx</replaceable></literal>
+ statement counter variables indicate the number of times each
+ <replaceable>xxx</replaceable> statement has been executed.
+ There is one status variable for each type of statement. For
+ example, <literal>Com_delete</literal> and
+ <literal>Com_insert</literal> count
+ <literal role="stmt">DELETE</literal> and
+ <literal role="stmt">INSERT</literal> statements,
+ respectively. However, if a query result is returned from
+ query cache, the server increments the
+ <literal role="statvar">Qcache_hits</literal> status variable,
+ not <literal>Com_select</literal>. See
+ <xref linkend="query-cache-status-and-maintenance"/>.
+ </para>
+
+ <para>
+ All of the
+ <literal>Com_stmt_<replaceable>xxx</replaceable></literal>
+ variables are increased even if a prepared statement argument
+ is unknown or an error occurred during execution. In other
+ words, their values correspond to the number of requests
+ issued, not to the number of requests successfully completed.
+ </para>
+
+ <para>
+ The <literal>Com_stmt_<replaceable>xxx</replaceable></literal>
+ status variables were added in 5.0.8:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal>Com_stmt_prepare</literal>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Com_stmt_execute</literal>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Com_stmt_fetch</literal>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Com_stmt_send_long_data</literal>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Com_stmt_reset</literal>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Com_stmt_close</literal>
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Those variables stand for prepared statement commands. Their
+ names refer to the
+ <literal>COM_<replaceable>xxx</replaceable></literal> command
+ set used in the network layer. In other words, their values
+ increase whenever prepared statement API calls such as
+ <command>mysql_stmt_prepare()</command>,
+ <command>mysql_stmt_execute()</command>, and so forth are
+ executed. However, <literal>Com_stmt_prepare</literal>,
+ <literal>Com_stmt_execute</literal> and
+ <literal>Com_stmt_close</literal> also increase for
+ <literal role="stmt" condition="sql-syntax-prepared-statements">PREPARE</literal>,
+ <literal role="stmt" condition="sql-syntax-prepared-statements">EXECUTE</literal>,
+ or
+ <literal role="stmt" condition="sql-syntax-prepared-statements">DEALLOCATE
+ PREPARE</literal>, respectively. Additionally, the values of
+ the older (available since MySQL 4.1.3) statement counter
+ variables <literal>Com_prepare_sql</literal>,
+ <literal>Com_execute_sql</literal>, and
+ <literal>Com_dealloc_sql</literal> increase for the
+ <literal role="stmt" condition="sql-syntax-prepared-statements">PREPARE</literal>,
+ <literal role="stmt" condition="sql-syntax-prepared-statements">EXECUTE</literal>,
+ and
+ <literal role="stmt" condition="sql-syntax-prepared-statements">DEALLOCATE
+ PREPARE</literal> statements.
+ <literal>Com_stmt_fetch</literal> stands for the total number
+ of network round-trips issued when fetching from cursors.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Compression">
+ <literal role="statvar">Compression</literal>
+ </para>
+
+ <para>
+ Whether the client connection uses compression in the
+ client/server protocol. Added in MySQL 5.0.16.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Connections">
+ <literal role="statvar">Connections</literal>
+ </para>
+
+ <para>
+ The number of connection attempts (successful or not) to the
+ MySQL server.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Created_tmp_disk_tables">
+ <literal role="statvar">Created_tmp_disk_tables</literal>
+ </para>
+
+ <para>
+ The number of temporary tables on disk created automatically
+ by the server while executing statements.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Created_tmp_files">
+ <literal role="statvar">Created_tmp_files</literal>
+ </para>
+
+ <para>
+ How many temporary files <command>mysqld</command> has
+ created.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Created_tmp_tables">
+ <literal role="statvar">Created_tmp_tables</literal>
+ </para>
+
+ <para>
+ The number of in-memory temporary tables created automatically
+ by the server while executing statements. If
+ <literal role="statvar">Created_tmp_disk_tables</literal> is
+ large, you may want to increase the
+ <literal role="sysvar">tmp_table_size</literal> value to cause
+ temporary tables to be memory-based instead of disk-based.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Delayed_errors">
+ <literal role="statvar">Delayed_errors</literal>
+ </para>
+
+ <para>
+ The number of rows written with <literal>INSERT
+ DELAYED</literal> for which some error occurred (probably
+ <literal>duplicate key</literal>).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Delayed_insert_threads">
+ <literal role="statvar">Delayed_insert_threads</literal>
+ </para>
+
+ <para>
+ The number of <literal>INSERT DELAYED</literal> handler
+ threads in use.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Delayed_writes">
+ <literal role="statvar">Delayed_writes</literal>
+ </para>
+
+ <para>
+ The number of <literal>INSERT DELAYED</literal> rows written.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Flush_commands">
+ <literal role="statvar">Flush_commands</literal>
+ </para>
+
+ <para>
+ The number of executed <literal role="stmt">FLUSH</literal>
+ statements.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Handler_commit">
+ <literal role="statvar">Handler_commit</literal>
+ </para>
+
+ <para>
+ The number of internal <literal role="stmt">COMMIT</literal>
+ statements.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Handler_delete">
+ <literal role="statvar">Handler_delete</literal>
+ </para>
+
+ <para>
+ The number of times that rows have been deleted from tables.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Handler_prepare">
+ <literal role="statvar">Handler_prepare</literal>
+ </para>
+
+ <para>
+ A counter for the prepare phase of two-phase commit
+ operations. Added in MySQL 5.0.3.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Handler_read_first">
+ <literal role="statvar">Handler_read_first</literal>
+ </para>
+
+ <para>
+ The number of times the first entry was read from an index. If
+ this value is high, it suggests that the server is doing a lot
+ of full index scans; for example, <literal>SELECT col1 FROM
+ foo</literal>, assuming that <literal>col1</literal> is
+ indexed.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Handler_read_key">
+ <literal role="statvar">Handler_read_key</literal>
+ </para>
+
+ <para>
+ The number of requests to read a row based on a key. If this
+ value is high, it is a good indication that your tables are
+ properly indexed for your queries.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Handler_read_next">
+ <literal role="statvar">Handler_read_next</literal>
+ </para>
+
+ <para>
+ The number of requests to read the next row in key order. This
+ value is incremented if you are querying an index column with
+ a range constraint or if you are doing an index scan.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Handler_read_prev">
+ <literal role="statvar">Handler_read_prev</literal>
+ </para>
+
+ <para>
+ The number of requests to read the previous row in key order.
+ This read method is mainly used to optimize <literal>ORDER BY
+ ... DESC</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Handler_read_rnd">
+ <literal role="statvar">Handler_read_rnd</literal>
+ </para>
+
+ <para>
+ The number of requests to read a row based on a fixed
+ position. This value is high if you are doing a lot of queries
+ that require sorting of the result. You probably have a lot of
+ queries that require MySQL to scan entire tables or you have
+ joins that don't use keys properly.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Handler_read_rnd_next">
+ <literal role="statvar">Handler_read_rnd_next</literal>
+ </para>
+
+ <para>
+ The number of requests to read the next row in the data file.
+ This value is high if you are doing a lot of table scans.
+ Generally this suggests that your tables are not properly
+ indexed or that your queries are not written to take advantage
+ of the indexes you have.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Handler_rollback">
+ <literal role="statvar">Handler_rollback</literal>
+ </para>
+
+ <para>
+ The number of requests for a storage engine to perform a
+ rollback operation.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Handler_savepoint">
+ <literal role="statvar">Handler_savepoint</literal>
+ </para>
+
+ <para>
+ The number of requests for a storage engine to place a
+ savepoint. Added in MySQL 5.0.3.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Handler_savepoint_rollback">
+ <literal role="statvar">Handler_savepoint_rollback</literal>
+ </para>
+
+ <para>
+ The number of requests for a storage engine to roll back to a
+ savepoint. Added in MySQL 5.0.3.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Handler_update">
+ <literal role="statvar">Handler_update</literal>
+ </para>
+
+ <para>
+ The number of requests to update a row in a table.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Handler_write">
+ <literal role="statvar">Handler_write</literal>
+ </para>
+
+ <para>
+ The number of requests to insert a row in a table.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_buffer_pool_pages_data">
+ <literal role="statvar">Innodb_buffer_pool_pages_data</literal>
+ </para>
+
+ <para>
+ The number of pages containing data (dirty or clean). Added in
+ MySQL 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_buffer_pool_pages_dirty">
+ <literal role="statvar">Innodb_buffer_pool_pages_dirty</literal>
+ </para>
+
+ <para>
+ The number of pages currently dirty. Added in MySQL 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_buffer_pool_pages_flushed">
+ <literal role="statvar">Innodb_buffer_pool_pages_flushed</literal>
+ </para>
+
+ <para>
+ The number of buffer pool page-flush requests. Added in MySQL
+ 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_buffer_pool_pages_free">
+ <literal role="statvar">Innodb_buffer_pool_pages_free</literal>
+ </para>
+
+ <para>
+ The number of free pages. Added in MySQL 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_buffer_pool_pages_latched">
+ <literal role="statvar">Innodb_buffer_pool_pages_latched</literal>
+ </para>
+
+ <para>
+ The number of latched pages in <literal>InnoDB</literal>
+ buffer pool. These are pages currently being read or written
+ or that cannot be flushed or removed for some other reason.
+ Added in MySQL 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_buffer_pool_pages_misc">
+ <literal role="statvar">Innodb_buffer_pool_pages_misc</literal>
+ </para>
+
+ <para>
+ The number of pages that are busy because they have been
+ allocated for administrative overhead such as row locks or the
+ adaptive hash index. This value can also be calculated as
+ <literal role="statvar">Innodb_buffer_pool_pages_total</literal>
+ −
+ <literal role="statvar">Innodb_buffer_pool_pages_free</literal>
+ −
+ <literal role="statvar">Innodb_buffer_pool_pages_data</literal>.
+ Added in MySQL 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_buffer_pool_pages_total">
+ <literal role="statvar">Innodb_buffer_pool_pages_total</literal>
+ </para>
+
+ <para>
+ The total size of buffer pool, in pages. Added in MySQL 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_buffer_pool_read_ahead_rnd">
+ <literal role="statvar">Innodb_buffer_pool_read_ahead_rnd</literal>
+ </para>
+
+ <para>
+ The number of <quote>random</quote> read-aheads initiated by
+ <literal>InnoDB</literal>. This happens when a query scans a
+ large portion of a table but in random order. Added in MySQL
+ 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_buffer_pool_read_ahead_seq">
+ <literal role="statvar">Innodb_buffer_pool_read_ahead_seq</literal>
+ </para>
+
+ <para>
+ The number of sequential read-aheads initiated by
+ <literal>InnoDB</literal>. This happens when
+ <literal>InnoDB</literal> does a sequential full table scan.
+ Added in MySQL 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_buffer_pool_read_requests">
+ <literal role="statvar">Innodb_buffer_pool_read_requests</literal>
+ </para>
+
+ <para>
+ The number of logical read requests <literal>InnoDB</literal>
+ has done. Added in MySQL 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_buffer_pool_reads">
+ <literal role="statvar">Innodb_buffer_pool_reads</literal>
+ </para>
+
+ <remark role="todo">
+ Clarify.
+ </remark>
+
+ <para>
+ The number of logical reads that <literal>InnoDB</literal>
+ could not satisfy from the buffer pool and had to do a
+ single-page read. Added in MySQL 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_buffer_pool_wait_free">
+ <literal role="statvar">Innodb_buffer_pool_wait_free</literal>
+ </para>
+
+ <remark role="todo">
+ How small is "small"?
+ </remark>
+
+ <para>
+ Normally, writes to the <literal>InnoDB</literal> buffer pool
+ happen in the background. However, if it is necessary to read
+ or create a page and no clean pages are available, it is also
+ necessary to wait for pages to be flushed first. This counter
+ counts instances of these waits. If the buffer pool size has
+ been set properly, this value should be small. Added in MySQL
+ 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_buffer_pool_write_requests">
+ <literal role="statvar">Innodb_buffer_pool_write_requests</literal>
+ </para>
+
+ <para>
+ The number writes done to the <literal>InnoDB</literal> buffer
+ pool. Added in MySQL 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_data_fsyncs">
+ <literal role="statvar">Innodb_data_fsyncs</literal>
+ </para>
+
+ <para>
+ The number of <literal>fsync()</literal> operations so far.
+ Added in MySQL 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_data_pending_fsyncs">
+ <literal role="statvar">Innodb_data_pending_fsyncs</literal>
+ </para>
+
+ <para>
+ The current number of pending <literal>fsync()</literal>
+ operations. Added in MySQL 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_data_pending_reads">
+ <literal role="statvar">Innodb_data_pending_reads</literal>
+ </para>
+
+ <para>
+ The current number of pending reads. Added in MySQL 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_data_pending_writes">
+ <literal role="statvar">Innodb_data_pending_writes</literal>
+ </para>
+
+ <para>
+ The current number of pending writes. Added in MySQL 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_data_read">
+ <literal role="statvar">Innodb_data_read</literal>
+ </para>
+
+ <remark role="todo">
+ Explain "so far". Since the server was restarted?
+ </remark>
+
+ <para>
+ The amount of data read so far, in bytes. Added in MySQL
+ 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_data_reads">
+ <literal role="statvar">Innodb_data_reads</literal>
+ </para>
+
+ <para>
+ The total number of data reads. Added in MySQL 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_data_writes">
+ <literal role="statvar">Innodb_data_writes</literal>
+ </para>
+
+ <para>
+ The total number of data writes. Added in MySQL 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_data_written">
+ <literal role="statvar">Innodb_data_written</literal>
+ </para>
+
+ <remark role="todo">
+ Explain "so far". Since the server was restarted?
+ </remark>
+
+ <para>
+ The amount of data written so far, in bytes. Added in MySQL
+ 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_dblwr_writes">
+ <literal role="statvar">Innodb_dblwr_writes</literal>
+ </para>
+
+ <para>
+ The number of doublewrite operations that have been performed.
+ Added in MySQL 5.0.2. See <xref linkend="innodb-disk-io"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_dblwr_pages_written">
+ <literal role="statvar">Innodb_dblwr_pages_written</literal>
+ </para>
+
+ <para>
+ The number of pages that have been written for doublewrite
+ operations. Added in MySQL 5.0.2. See
+ <xref linkend="innodb-disk-io"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_log_waits">
+ <literal role="statvar">Innodb_log_waits</literal>
+ </para>
+
+ <para>
+ The number of times that the log buffer was too small and a
+ wait was required for it to be flushed before continuing.
+ Added in MySQL 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_log_write_requests">
+ <literal role="statvar">Innodb_log_write_requests</literal>
+ </para>
+
+ <para>
+ The number of log write requests. Added in MySQL 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_log_writes">
+ <literal role="statvar">Innodb_log_writes</literal>
+ </para>
+
+ <para>
+ The number of physical writes to the log file. Added in MySQL
+ 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_os_log_fsyncs">
+ <literal role="statvar">Innodb_os_log_fsyncs</literal>
+ </para>
+
+ <para>
+ The number of <literal>fsync()</literal> writes done to the
+ log file. Added in MySQL 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_os_log_pending_fsyncs">
+ <literal role="statvar">Innodb_os_log_pending_fsyncs</literal>
+ </para>
+
+ <para>
+ The number of pending log file <literal>fsync()</literal>
+ operations. Added in MySQL 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_os_log_pending_writes">
+ <literal role="statvar">Innodb_os_log_pending_writes</literal>
+ </para>
+
+ <para>
+ The number of pending log file writes. Added in MySQL 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_os_log_written">
+ <literal role="statvar">Innodb_os_log_written</literal>
+ </para>
+
+ <para>
+ The number of bytes written to the log file. Added in MySQL
+ 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_page_size">
+ <literal role="statvar">Innodb_page_size</literal>
+ </para>
+
+ <para>
+ The compiled-in <literal>InnoDB</literal> page size (default
+ 16KB). Many values are counted in pages; the page size allows
+ them to be easily converted to bytes. Added in MySQL 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_pages_created">
+ <literal role="statvar">Innodb_pages_created</literal>
+ </para>
+
+ <para>
+ The number of pages created. Added in MySQL 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_pages_read">
+ <literal role="statvar">Innodb_pages_read</literal>
+ </para>
+
+ <para>
+ The number of pages read. Added in MySQL 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_pages_written">
+ <literal role="statvar">Innodb_pages_written</literal>
+ </para>
+
+ <para>
+ The number of pages written. Added in MySQL 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_row_lock_current_waits">
+ <literal role="statvar">Innodb_row_lock_current_waits</literal>
+ </para>
+
+ <para>
+ The number of row locks currently being waited for. Added in
+ MySQL 5.0.3.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_row_lock_time">
+ <literal role="statvar">Innodb_row_lock_time</literal>
+ </para>
+
+ <para>
+ The total time spent in acquiring row locks, in milliseconds.
+ Added in MySQL 5.0.3.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_row_lock_time_avg">
+ <literal role="statvar">Innodb_row_lock_time_avg</literal>
+ </para>
+
+ <para>
+ The average time to acquire a row lock, in milliseconds. Added
+ in MySQL 5.0.3.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_row_lock_time_max">
+ <literal role="statvar">Innodb_row_lock_time_max</literal>
+ </para>
+
+ <para>
+ The maximum time to acquire a row lock, in milliseconds. Added
+ in MySQL 5.0.3.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_row_lock_waits">
+ <literal role="statvar">Innodb_row_lock_waits</literal>
+ </para>
+
+ <para>
+ The number of times a row lock had to be waited for. Added in
+ MySQL 5.0.3.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_rows_deleted">
+ <literal role="statvar">Innodb_rows_deleted</literal>
+ </para>
+
+ <para>
+ The number of rows deleted from <literal>InnoDB</literal>
+ tables. Added in MySQL 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_rows_inserted">
+ <literal role="statvar">Innodb_rows_inserted</literal>
+ </para>
+
+ <para>
+ The number of rows inserted into <literal>InnoDB</literal>
+ tables. Added in MySQL 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_rows_read">
+ <literal role="statvar">Innodb_rows_read</literal>
+ </para>
+
+ <para>
+ The number of rows read from <literal>InnoDB</literal> tables.
+ Added in MySQL 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Innodb_rows_updated">
+ <literal role="statvar">Innodb_rows_updated</literal>
+ </para>
+
+ <para>
+ The number of rows updated in <literal>InnoDB</literal>
+ tables. Added in MySQL 5.0.2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Key_blocks_not_flushed">
+ <literal role="statvar">Key_blocks_not_flushed</literal>
+ </para>
+
+ <para>
+ The number of key blocks in the key cache that have changed
+ but have not yet been flushed to disk.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Key_blocks_unused">
+ <literal role="statvar">Key_blocks_unused</literal>
+ </para>
+
+ <para>
+ The number of unused blocks in the key cache. You can use this
+ value to determine how much of the key cache is in use; see
+ the discussion of
+ <literal role="sysvar">key_buffer_size</literal> in
+ <xref linkend="server-system-variables"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Key_blocks_used">
+ <literal role="statvar">Key_blocks_used</literal>
+ </para>
+
+ <para>
+ The number of used blocks in the key cache. This value is a
+ high-water mark that indicates the maximum number of blocks
+ that have ever been in use at one time.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Key_read_requests">
+ <literal role="statvar">Key_read_requests</literal>
+ </para>
+
+ <para>
+ The number of requests to read a key block from the cache.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Key_reads">
+ <literal role="statvar">Key_reads</literal>
+ </para>
+
+ <para>
+ The number of physical reads of a key block from disk. If
+ <literal role="statvar">Key_reads</literal> is large, then
+ your <literal role="sysvar">key_buffer_size</literal> value is
+ probably too small. The cache miss rate can be calculated as
+ <literal role="statvar">Key_reads</literal>/<literal role="statvar">Key_read_requests</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Key_write_requests">
+ <literal role="statvar">Key_write_requests</literal>
+ </para>
+
+ <para>
+ The number of requests to write a key block to the cache.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Key_writes">
+ <literal role="statvar">Key_writes</literal>
+ </para>
+
+ <para>
+ The number of physical writes of a key block to disk.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Last_query_cost">
+ <literal role="statvar">Last_query_cost</literal>
+ </para>
+
+ <para>
+ The total cost of the last compiled query as computed by the
+ query optimizer. This is useful for comparing the cost of
+ different query plans for the same query. The default value of
+ 0 means that no query has been compiled yet. This variable was
+ added in MySQL 5.0.1, with a default value of -1. In MySQL
+ 5.0.7, the default was changed to 0; also in version 5.0.7,
+ the scope of <literal role="statvar">Last_query_cost</literal>
+ was changed to session rather than global.
+ </para>
+
+ <para>
+ The <literal role="statvar">Last_query_cost</literal> value
+ can be computed accurately only for simple <quote>flat</quote>
+ queries, not complex queries such as those with subqueries or
+ <literal>UNION</literal>. For the latter, the value is set to
+ 0.
+ </para>
+
+ <para>
+ Prior to MySQL 5.0.16, this variable was not updated for
+ queries served from the query cache.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Max_used_connections">
+ <literal role="statvar">Max_used_connections</literal>
+ </para>
+
+ <para>
+ The maximum number of connections that have been in use
+ simultaneously since the server started.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Not_flushed_delayed_rows">
+ <literal role="statvar">Not_flushed_delayed_rows</literal>
+ </para>
+
+ <para>
+ The number of rows waiting to be written in <literal>INSERT
+ DELAY</literal> queues.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Open_files">
+ <literal role="statvar">Open_files</literal>
+ </para>
+
+ <para>
+ The number of files that are open.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Open_streams">
+ <literal role="statvar">Open_streams</literal>
+ </para>
+
+ <para>
+ The number of streams that are open (used mainly for logging).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Open_tables">
+ <literal role="statvar">Open_tables</literal>
+ </para>
+
+ <para>
+ The number of tables that are open.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Opened_tables">
+ <literal role="statvar">Opened_tables</literal>
+ </para>
+
+ <para>
+ The number of tables that have been opened. If
+ <literal role="statvar">Opened_tables</literal> is big, your
+ <literal role="sysvar">table_cache</literal> value is probably
+ too small.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Prepared_stmt_count">
+ <literal role="statvar">Prepared_stmt_count</literal>
+ </para>
+
+ <para>
+ The current number of prepared statements. (The maximum number
+ of statements is given by the
+ <literal role="sysvar">max_prepared_stmt_count</literal>
+ system variable.) This variable was added in MySQL 5.0.32.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Qcache_free_blocks">
+ <literal role="statvar">Qcache_free_blocks</literal>
+ </para>
+
+ <para>
+ The number of free memory blocks in the query cache.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Qcache_free_memory">
+ <literal role="statvar">Qcache_free_memory</literal>
+ </para>
+
+ <para>
+ The amount of free memory for the query cache.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Qcache_hits">
+ <literal role="statvar">Qcache_hits</literal>
+ </para>
+
+ <para>
+ The number of query cache hits.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Qcache_inserts">
+ <literal role="statvar">Qcache_inserts</literal>
+ </para>
+
+ <para>
+ The number of queries added to the query cache.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Qcache_lowmem_prunes">
+ <literal role="statvar">Qcache_lowmem_prunes</literal>
+ </para>
+
+ <para>
+ The number of queries that were deleted from the query cache
+ because of low memory.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Qcache_not_cached">
+ <literal role="statvar">Qcache_not_cached</literal>
+ </para>
+
+ <para>
+ The number of non-cached queries (not cacheable, or not cached
+ due to the <literal role="sysvar">query_cache_type</literal>
+ setting).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Qcache_queries_in_cache">
+ <literal role="statvar">Qcache_queries_in_cache</literal>
+ </para>
+
+ <para>
+ The number of queries registered in the query cache.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Qcache_total_blocks">
+ <literal role="statvar">Qcache_total_blocks</literal>
+ </para>
+
+ <para>
+ The total number of blocks in the query cache.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Questions">
+ <literal role="statvar">Questions</literal>
+ </para>
+
+ <para>
+ The number of statements that clients have sent to the server.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Rpl_status">
+ <literal role="statvar">Rpl_status</literal>
+ </para>
+
+ <para>
+ The status of fail-safe replication (not yet implemented).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Select_full_join">
+ <literal role="statvar">Select_full_join</literal>
+ </para>
+
+ <para>
+ The number of joins that perform table scans because they do
+ not use indexes. If this value is not 0, you should carefully
+ check the indexes of your tables.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Select_full_range_join">
+ <literal role="statvar">Select_full_range_join</literal>
+ </para>
+
+ <para>
+ The number of joins that used a range search on a reference
+ table.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Select_range">
+ <literal role="statvar">Select_range</literal>
+ </para>
+
+ <para>
+ The number of joins that used ranges on the first table.
+
+ <remark role="todo">
+ Why not? Why the comment, if it's not important?
+ </remark>
+
+ This is normally not a critical issue even if the value is
+ quite large.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Select_range_check">
+ <literal role="statvar">Select_range_check</literal>
+ </para>
+
+ <para>
+ The number of joins without keys that check for key usage
+ after each row. If this is not 0, you should carefully check
+ the indexes of your tables.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Select_scan">
+ <literal role="statvar">Select_scan</literal>
+ </para>
+
+ <para>
+ The number of joins that did a full scan of the first table.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Slave_open_temp_tables">
+ <literal role="statvar">Slave_open_temp_tables</literal>
+ </para>
+
+ <para>
+ The number of temporary tables that the slave SQL thread
+ currently has open.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Slave_retried_transactions">
+ <literal role="statvar">Slave_retried_transactions</literal>
+ </para>
+
+ <para>
+ The total number of times since startup that the replication
+ slave SQL thread has retried transactions. This variable was
+ added in version 5.0.4.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Slave_running">
+ <literal role="statvar">Slave_running</literal>
+ </para>
+
+ <para>
+ This is <literal>ON</literal> if this server is a slave that
+ is connected to a master, and both the I/O SQL and threads are
+ running.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Slow_launch_threads">
+ <literal role="statvar">Slow_launch_threads</literal>
+ </para>
+
+ <para>
+ The number of threads that have taken more than
+ <literal role="sysvar">slow_launch_time</literal> seconds to
+ create.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Slow_queries">
+ <literal role="statvar">Slow_queries</literal>
+ </para>
+
+ <para>
+ The number of queries that have taken more than
+ <literal role="sysvar">long_query_time</literal> seconds. See
+ <xref linkend="slow-query-log"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Sort_merge_passes">
+ <literal role="statvar">Sort_merge_passes</literal>
+ </para>
+
+ <para>
+ The number of merge passes that the sort algorithm has had to
+ do. If this value is large, you should consider increasing the
+ value of the <literal role="sysvar">sort_buffer_size</literal>
+ system variable.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Sort_range">
+ <literal role="statvar">Sort_range</literal>
+ </para>
+
+ <para>
+ The number of sorts that were done using ranges.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Sort_rows">
+ <literal role="statvar">Sort_rows</literal>
+ </para>
+
+ <para>
+ The number of sorted rows.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Sort_scan">
+ <literal role="statvar">Sort_scan</literal>
+ </para>
+
+ <para>
+ The number of sorts that were done by scanning the table.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Ssl_accept_renegotiates">
+ <literal role="statvar">Ssl_accept_renegotiates</literal>
+ </para>
+
+ <para>
+ The number of negotiates needed to establish the connection.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Ssl_accepts">
+ <literal role="statvar">Ssl_accepts</literal>
+ </para>
+
+ <para>
+ The number of accepted SSL connections.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Ssl_callback_cache_hits">
+ <literal role="statvar">Ssl_callback_cache_hits</literal>
+ </para>
+
+ <para>
+ The number of callback cache hits.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Ssl_cipher">
+ <literal role="statvar">Ssl_cipher</literal>
+ </para>
+
+ <para>
+ The current SSL cipher (empty for non-SSL connections).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Ssl_cipher_list">
+ <literal role="statvar">Ssl_cipher_list</literal>
+ </para>
+
+ <para>
+ The list of possible SSL ciphers.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Ssl_client_connects">
+ <literal role="statvar">Ssl_client_connects</literal>
+ </para>
+
+ <para>
+ The number of SSL connection attempts to an SSL-enabled
+ master.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Ssl_connect_renegotiates">
+ <literal role="statvar">Ssl_connect_renegotiates</literal>
+ </para>
+
+ <para>
+ The number of negotiates needed to establish the connection to
+ an SSL-enabled master.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Ssl_ctx_verify_depth">
+ <literal role="statvar">Ssl_ctx_verify_depth</literal>
+ </para>
+
+ <para>
+ The SSL context verification depth (how many certificates in
+ the chain are tested).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Ssl_ctx_verify_mode">
+ <literal role="statvar">Ssl_ctx_verify_mode</literal>
+ </para>
+
+ <para>
+ The SSL context verification mode.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Ssl_default_timeout">
+ <literal role="statvar">Ssl_default_timeout</literal>
+ </para>
+
+ <para>
+ The default SSL timeout.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Ssl_finished_accepts">
+ <literal role="statvar">Ssl_finished_accepts</literal>
+ </para>
+
+ <para>
+ The number of successful SSL connections to the server.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Ssl_finished_connects">
+ <literal role="statvar">Ssl_finished_connects</literal>
+ </para>
+
+ <para>
+ The number of successful slave connections to an SSL-enabled
+ master.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Ssl_session_cache_hits">
+ <literal role="statvar">Ssl_session_cache_hits</literal>
+ </para>
+
+ <para>
+ The number of SSL session cache hits.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Ssl_session_cache_misses">
+ <literal role="statvar">Ssl_session_cache_misses</literal>
+ </para>
+
+ <para>
+ The number of SSL session cache misses.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Ssl_session_cache_mode">
+ <literal role="statvar">Ssl_session_cache_mode</literal>
+ </para>
+
+ <para>
+ The SSL session cache mode.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Ssl_session_cache_overflows">
+ <literal role="statvar">Ssl_session_cache_overflows</literal>
+ </para>
+
+ <para>
+ The number of SSL session cache overflows.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Ssl_session_cache_size">
+ <literal role="statvar">Ssl_session_cache_size</literal>
+ </para>
+
+ <para>
+ The SSL session cache size.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Ssl_session_cache_timeouts">
+ <literal role="statvar">Ssl_session_cache_timeouts</literal>
+ </para>
+
+ <para>
+ The number of SSL session cache timeouts.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Ssl_sessions_reused">
+ <literal role="statvar">Ssl_sessions_reused</literal>
+ </para>
+
+ <para>
+ How many SSL connections were reused from the cache.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Ssl_used_session_cache_entries">
+ <literal role="statvar">Ssl_used_session_cache_entries</literal>
+ </para>
+
+ <para>
+ How many SSL session cache entries were used.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Ssl_verify_depth">
+ <literal role="statvar">Ssl_verify_depth</literal>
+ </para>
+
+ <para>
+ The verification depth for replication SSL connections.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Ssl_verify_mode">
+ <literal role="statvar">Ssl_verify_mode</literal>
+ </para>
+
+ <para>
+ The verification mode for replication SSL connections.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Ssl_version">
+ <literal role="statvar">Ssl_version</literal>
+ </para>
+
+ <para>
+ The SSL version number.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Table_locks_immediate">
+ <literal role="statvar">Table_locks_immediate</literal>
+ </para>
+
+ <para>
+ The number of times that a request for a table lock could be
+ granted immediately.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Table_locks_waited">
+ <literal role="statvar">Table_locks_waited</literal>
+ </para>
+
+ <para>
+ The number of times that a request for a table lock could not
+ be granted immediately and a wait was needed. If this is high
+ and you have performance problems, you should first optimize
+ your queries, and then either split your table or tables or
+ use replication.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Tc_log_max_pages_used">
+ <literal role="statvar">Tc_log_max_pages_used</literal>
+ </para>
+
+ <para>
+ For the memory-mapped implementation of the log that is used
+ by <command>mysqld</command> when it acts as the transaction
+ coordinator for recovery of internal XA transactions, this
+ variable indicates the largest number of pages used for the
+ log since the server started. If the product of
+ <literal role="statvar">Tc_log_max_pages_used</literal> and
+ <literal role="statvar">Tc_log_page_size</literal> is always
+ significantly less than the log size, the size is larger than
+ necessary and can be reduced. (The size is set by the
+ <option>--log-tc-size</option> option. Currently, this
+ variable is unused: It is unneeded for binary log-based
+ recovery, and the memory-mapped recovery log method is not
+ used unless the number of storage engines capable of two-phase
+ commit is greater than one. (<literal>InnoDB</literal> is the
+ only applicable engine.) Added in MySQL 5.0.3.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Tc_log_page_size">
+ <literal role="statvar">Tc_log_page_size</literal>
+ </para>
+
+ <para>
+ The page size used for the memory-mapped implementation of the
+ XA recovery log. The default value is determined using
+ <literal>getpagesize()</literal>. Currently, this variable is
+ unused for the same reasons as described for
+ <literal role="statvar">Tc_log_max_pages_used</literal>. Added
+ in MySQL 5.0.3.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Tc_log_page_waits">
+ <literal role="statvar">Tc_log_page_waits</literal>
+ </para>
+
+ <para>
+ For the memory-mapped implementation of the recovery log, this
+ variable increments each time the server was not able to
+ commit a transaction and had to wait for a free page in the
+ log. If this value is large, you might want to increase the
+ log size (with the <option>--log-tc-size</option> option). For
+ binary log-based recovery, this variable increments each time
+ the binary log cannot be closed because there are two-phase
+ commits in progress. (The close operation waits until all such
+ transactions are finished.) Added in MySQL 5.0.3.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Threads_cached">
+ <literal role="statvar">Threads_cached</literal>
+ </para>
+
+ <para>
+ The number of threads in the thread cache.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Threads_connected">
+ <literal role="statvar">Threads_connected</literal>
+ </para>
+
+ <para>
+ The number of currently open connections.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Threads_created">
+ <literal role="statvar">Threads_created</literal>
+ </para>
+
+ <para>
+ The number of threads created to handle connections. If
+ <literal role="statvar">Threads_created</literal> is big, you
+ may want to increase the
+ <literal role="sysvar">thread_cache_size</literal> value. The
+ cache miss rate can be calculated as
+ <literal role="statvar">Threads_created</literal>/<literal role="statvar">Connections</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Threads_running">
+ <literal role="statvar">Threads_running</literal>
+ </para>
+
+ <para>
+ The number of threads that are not sleeping.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Uptime">
+ <literal role="statvar">Uptime</literal>
+ </para>
+
+ <para>
+ The number of seconds that the server has been up.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="statvar_Uptime_since_flush_status">
+ <literal role="statvar">Uptime_since_flush_status</literal>
+ </para>
+
+ <para>
+ The number of seconds since the most recent <literal>FLUSH
+ STATUS</literal> statement. This variable was added in 5.0.35.
+ (MySQL Community only)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </section>
+
+ <section id="server-sql-mode">
+
+ <title>Server SQL Modes</title>
+
+ <indexterm>
+ <primary>SQL mode</primary>
+ </indexterm>
+
+ <para>
+ The MySQL server can operate in different SQL modes, and can apply
+ these modes differently for different clients. This capability
+ enables each application to tailor the server's operating mode to
+ its own requirements.
+ </para>
+
+ <para>
+ For answers to some questions that are often asked about server
+ SQL modes in MySQL, see <xref linkend="faqs-sql-modes"/>.
+ </para>
+
+ <para>
+ Modes define what SQL syntax MySQL should support and what kind of
+ data validation checks it should perform. This makes it easier to
+ use MySQL in different environments and to use MySQL together with
+ other database servers.
+ </para>
+
+ <para>
+ You can set the default SQL mode by starting
+ <command>mysqld</command> with the
+ <option>--sql-mode="<replaceable>modes</replaceable>"</option>
+ option, or by using
+ <option>sql-mode="<replaceable>modes</replaceable>"</option>
+ in <filename>my.cnf</filename> (Unix operating systems) or
+ <filename>my.ini</filename> (Windows).
+ <replaceable>modes</replaceable> is a list of different modes
+ separated by comma (<quote><literal>,</literal></quote>)
+ characters. The default value is empty (no modes set). The
+ <replaceable>modes</replaceable> value also can be empty
+ (<option>--sql-mode=""</option> on the command line, or
+ <option>sql-mode=""</option> in
+ <filename>my.cnf</filename> on Unix systems or in
+ <filename>my.ini</filename> on Windows) if you want to clear it
+ explicitly.
+ </para>
+
+ <para>
+ You can change the SQL mode at runtime by using a <literal>SET
+ [GLOBAL|SESSION]
+ sql_mode='<replaceable>modes</replaceable>'</literal> statement to
+ set the <literal role="sysvar">sql_mode</literal> system value.
+ Setting the <literal>GLOBAL</literal> variable requires the
+ <literal role="priv">SUPER</literal> privilege and affects the
+ operation of all clients that connect from that time on. Setting
+ the <literal>SESSION</literal> variable affects only the current
+ client. Any client can change its own session
+ <literal role="sysvar">sql_mode</literal> value at any time.
+ </para>
+
+ <para>
+ You can retrieve the current global or session
+ <literal role="sysvar">sql_mode</literal> value with the following
+ statements:
+ </para>
+
+<programlisting>
+SELECT @@GLOBAL.sql_mode;
+SELECT @@SESSION.sql_mode;
+</programlisting>
+
+ <para>
+ The most important <literal role="sysvar">sql_mode</literal>
+ values are probably these:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <indexterm>
+ <primary>ANSI SQL mode</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>SQL mode</primary>
+ <secondary>ANSI</secondary>
+ </indexterm>
+
+ <literal role="sqlmode">ANSI</literal>
+ </para>
+
+ <para>
+ This mode changes syntax and behavior to conform more closely
+ to standard SQL.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <indexterm>
+ <primary>STRICT_TRANS_TABLES SQL mode</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>SQL mode</primary>
+ <secondary>STRICT_TRANS_TABLES</secondary>
+ </indexterm>
+
+ <literal role="sqlmode">STRICT_TRANS_TABLES</literal>
+ </para>
+
+ <para>
+ If a value could not be inserted as given into a transactional
+ table, abort the statement. For a non-transactional table,
+ abort the statement if the value occurs in a single-row
+ statement or the first row of a multiple-row statement. More
+ detail is given later in this section. (Implemented in MySQL
+ 5.0.2)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <indexterm>
+ <primary>TRADITIONAL SQL mode</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>SQL mode</primary>
+ <secondary>TRADITIONAL</secondary>
+ </indexterm>
+
+ <literal role="sqlmode">TRADITIONAL</literal>
+ </para>
+
+ <para>
+ Make MySQL behave like a <quote>traditional</quote> SQL
+ database system. A simple description of this mode is
+ <quote>give an error instead of a warning</quote> when
+ inserting an incorrect value into a column.
+ </para>
+
+ <note>
+ <para>
+ The
+ <literal role="stmt">INSERT</literal>/<literal role="stmt">UPDATE</literal>
+ aborts as soon as the error is noticed. This may not be what
+ you want if you are using a non-transactional storage
+ engine, because data changes made prior to the error may not
+ be rolled back, resulting in a <quote>partially done</quote>
+ update. (Added in MySQL 5.0.2)
+ </para>
+ </note>
+ </listitem>
+
+ </itemizedlist>
+
+ <indexterm>
+ <primary>strict SQL mode</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>SQL mode</primary>
+ <secondary>strict</secondary>
+ </indexterm>
+
+ <para>
+ When this manual refers to <quote>strict mode,</quote> it means a
+ mode where at least one of
+ <literal role="sqlmode">STRICT_TRANS_TABLES</literal> or
+ <literal role="sqlmode">STRICT_ALL_TABLES</literal> is enabled.
+ </para>
+
+ <para>
+ The following list describes all supported modes:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para id="sqlmode_allow_invalid_dates">
+ <indexterm>
+ <primary>ALLOW_INVALID_DATES SQL mode</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>SQL mode</primary>
+ <secondary>ALLOW_INVALID_DATES</secondary>
+ </indexterm>
+
+ <literal role="sqlmode">ALLOW_INVALID_DATES</literal>
+ </para>
+
+ <para>
+ Don't do full checking of dates. Check only that the month is
+ in the range from 1 to 12 and the day is in the range from 1
+ to 31. This is very convenient for Web applications where you
+ obtain year, month, and day in three different fields and you
+ want to store exactly what the user inserted (without date
+ validation). This mode applies to
+ <literal role="type">DATE</literal> and
+ <literal role="type">DATETIME</literal> columns. It does not
+ apply <literal role="type">TIMESTAMP</literal> columns, which
+ always require a valid date.
+ </para>
+
+ <para>
+ This mode is implemented in MySQL 5.0.2. Before 5.0.2, this
+ was the default MySQL date-handling mode. As of 5.0.2, the
+ server requires that month and day values be legal, and not
+ merely in the range 1 to 12 and 1 to 31, respectively. With
+ strict mode disabled, invalid dates such as
+ <literal>'2004-04-31'</literal> are converted to
+ <literal>'0000-00-00'</literal> and a warning is generated.
+ With strict mode enabled, invalid dates generate an error. To
+ allow such dates, enable
+ <literal role="sqlmode">ALLOW_INVALID_DATES</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sqlmode_ansi_quotes">
+ <indexterm>
+ <primary>ANSI_QUOTES SQL mode</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>SQL mode</primary>
+ <secondary>ANSI_QUOTES</secondary>
+ </indexterm>
+
+ <literal role="sqlmode">ANSI_QUOTES</literal>
+ </para>
+
+ <para>
+ Treat <quote><literal>"</literal></quote> as an
+ identifier quote character (like the
+ <quote><literal>`</literal></quote> quote character) and not
+ as a string quote character. You can still use
+ <quote><literal>`</literal></quote> to quote identifiers with
+ this mode enabled. With
+ <literal role="sqlmode">ANSI_QUOTES</literal> enabled, you
+ cannot use double quotes to quote literal strings, because it
+ is interpreted as an identifier.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sqlmode_error_for_division_by_zero">
+ <indexterm>
+ <primary>ERROR_FOR_DIVISION_BY_ZERO SQL mode</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>SQL mode</primary>
+ <secondary>ERROR_FOR_DIVISION_BY_ZERO</secondary>
+ </indexterm>
+
+ <literal role="sqlmode">ERROR_FOR_DIVISION_BY_ZERO</literal>
+ </para>
+
+ <para>
+ Produce an error in strict mode (otherwise a warning) when a
+ division by zero (or <literal role="func">MOD(X,0)</literal>)
+ occurs during an <literal role="stmt">INSERT</literal> or
+ <literal role="stmt">UPDATE</literal>. If this mode is not
+ enabled, MySQL instead returns <literal>NULL</literal> for
+ divisions by zero. For <literal>INSERT IGNORE</literal> or
+ <literal>UPDATE IGNORE</literal>, MySQL generates a warning
+ for divisions by zero, but the result of the operation is
+ <literal>NULL</literal>. (Implemented in MySQL 5.0.2)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sqlmode_high_not_precedence">
+ <indexterm>
+ <primary>HIGH_NOT_PRECEDENCE SQL mode</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>SQL mode</primary>
+ <secondary>HIGH_NOT_PRECEDENCE</secondary>
+ </indexterm>
+
+ <literal role="sqlmode">HIGH_NOT_PRECEDENCE</literal>
+ </para>
+
+ <para>
+ From MySQL 5.0.2 on, the precedence of the
+ <literal role="op">NOT</literal> operator is such that
+ expressions such as <literal>NOT a BETWEEN b AND c</literal>
+ are parsed as <literal>NOT (a BETWEEN b AND c)</literal>.
+ Before MySQL 5.0.2, the expression is parsed as <literal>(NOT
+ a) BETWEEN b AND c</literal>. The old higher-precedence
+ behavior can be obtained by enabling the
+ <literal role="sqlmode">HIGH_NOT_PRECEDENCE</literal> SQL
+ mode. (Added in MySQL 5.0.2)
+ </para>
+
+<programlisting>
+mysql> <userinput>SET sql_mode = '';</userinput>
+mysql> <userinput>SELECT NOT 1 BETWEEN -5 AND 5;</userinput>
+ -> 0
+mysql> <userinput>SET sql_mode = 'HIGH_NOT_PRECEDENCE';</userinput>
+mysql> <userinput>SELECT NOT 1 BETWEEN -5 AND 5;</userinput>
+ -> 1
+</programlisting>
+ </listitem>
+
+ <listitem>
+ <para id="sqlmode_ignore_space">
+ <indexterm>
+ <primary>IGNORE_SPACE SQL mode</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>SQL mode</primary>
+ <secondary>IGNORE_SPACE</secondary>
+ </indexterm>
+
+ <literal role="sqlmode">IGNORE_SPACE</literal>
+ </para>
+
+ <para>
+ Allow spaces between a function name and the
+ <quote><literal>(</literal></quote> character. This causes
+ built-in function names to be treated as reserved words. As a
+ result, identifiers that are the same as function names must
+ be quoted as described in <xref linkend="identifiers"/>. For
+ example, because there is a
+ <literal role="func">COUNT()</literal> function, the use of
+ <literal>count</literal> as a table name in the following
+ statement causes an error:
+ </para>
+
+<programlisting>
+mysql> <userinput>CREATE TABLE count (i INT);</userinput>
+ERROR 1064 (42000): You have an error in your SQL syntax
+</programlisting>
+
+ <para>
+ The table name should be quoted:
+ </para>
+
+<programlisting>
+mysql> <userinput>CREATE TABLE `count` (i INT);</userinput>
+Query OK, 0 rows affected (0.00 sec)
+</programlisting>
+
+ <para>
+ The <literal role="sqlmode">IGNORE_SPACE</literal> SQL mode
+ applies to built-in functions, not to user-defined functions
+ or stored functions. It is always allowable to have spaces
+ after a UDF or stored function name, regardless of whether
+ <literal role="sqlmode">IGNORE_SPACE</literal> is enabled.
+ </para>
+
+ <para>
+ For further discussion of
+ <literal role="sqlmode">IGNORE_SPACE</literal>, see
+ <xref linkend="function-resolution"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sqlmode_no_auto_create_user">
+ <indexterm>
+ <primary>NO_AUTO_CREATE_USER SQL mode</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>SQL mode</primary>
+ <secondary>NO_AUTO_CREATE_USER</secondary>
+ </indexterm>
+
+ <literal role="sqlmode">NO_AUTO_CREATE_USER</literal>
+ </para>
+
+ <para>
+ Prevent the <literal role="stmt">GRANT</literal> statement
+ from automatically creating new users if it would otherwise do
+ so, unless a non-empty password also is specified. (Added in
+ MySQL 5.0.2)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sqlmode_no_auto_value_on_zero">
+ <indexterm>
+ <primary>NO_AUTO_VALUE_ON_ZERO SQL mode</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>SQL mode</primary>
+ <secondary>NO_AUTO_VALUE_ON_ZERO</secondary>
+ </indexterm>
+
+ <literal role="sqlmode">NO_AUTO_VALUE_ON_ZERO</literal>
+ </para>
+
+ <para>
+ <literal role="sqlmode">NO_AUTO_VALUE_ON_ZERO</literal>
+ affects handling of <literal>AUTO_INCREMENT</literal> columns.
+ Normally, you generate the next sequence number for the column
+ by inserting either <literal>NULL</literal> or
+ <literal>0</literal> into it.
+ <literal role="sqlmode">NO_AUTO_VALUE_ON_ZERO</literal>
+ suppresses this behavior for <literal>0</literal> so that only
+ <literal>NULL</literal> generates the next sequence number.
+ </para>
+
+ <para>
+ This mode can be useful if <literal>0</literal> has been
+ stored in a table's <literal>AUTO_INCREMENT</literal> column.
+ (Storing <literal>0</literal> is not a recommended practice,
+ by the way.) For example, if you dump the table with
+ <command>mysqldump</command> and then reload it, MySQL
+ normally generates new sequence numbers when it encounters the
+ <literal>0</literal> values, resulting in a table with
+ contents different from the one that was dumped. Enabling
+ <literal role="sqlmode">NO_AUTO_VALUE_ON_ZERO</literal> before
+ reloading the dump file solves this problem.
+ <command>mysqldump</command> now automatically includes in its
+ output a statement that enables
+ <literal role="sqlmode">NO_AUTO_VALUE_ON_ZERO</literal>, to
+ avoid this problem.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sqlmode_no_backslash_escapes">
+ <indexterm>
+ <primary>NO_BACKSLASH_ESCAPES SQL mode</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>SQL mode</primary>
+ <secondary>NO_BACKSLASH_ESCAPES</secondary>
+ </indexterm>
+
+ <literal role="sqlmode">NO_BACKSLASH_ESCAPES</literal>
+ </para>
+
+ <para>
+ Disable the use of the backslash character
+ (<quote><literal>\</literal></quote>) as an escape character
+ within strings. With this mode enabled, backslash becomes an
+ ordinary character like any other. (Implemented in MySQL
+ 5.0.1)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sqlmode_no_dir_in_create">
+ <indexterm>
+ <primary>NO_DIR_IN_CREATE SQL mode</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>SQL mode</primary>
+ <secondary>NO_DIR_IN_CREATE</secondary>
+ </indexterm>
+
+ <literal role="sqlmode">NO_DIR_IN_CREATE</literal>
+ </para>
+
+ <para>
+ When creating a table, ignore all <literal>INDEX
+ DIRECTORY</literal> and <literal>DATA DIRECTORY</literal>
+ directives. This option is useful on slave replication
+ servers.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sqlmode_no_engine_substitution">
+ <indexterm>
+ <primary>NO_ENGINE_SUBSTITUTION SQL mode</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>SQL mode</primary>
+ <secondary>NO_ENGINE_SUBSTITUTION</secondary>
+ </indexterm>
+
+ <literal role="sqlmode">NO_ENGINE_SUBSTITUTION</literal>
+ </para>
+
+ <para>
+ Control automatic substitution of the default storage engine
+ when a statement such as <literal role="stmt">CREATE
+ TABLE</literal> or <literal role="stmt">ALTER TABLE</literal>
+ specifies a storage engine that is disabled or not compiled
+ in. (Implemented in MySQL 5.0.8)
+ </para>
+
+ <para>
+ With <literal role="sqlmode">NO_ENGINE_SUBSTITUTION</literal>
+ disabled, the default engine is used and a warning occurs if
+ the desired engine is known but disabled or not compiled in.
+ If the desired engine is invalid (not a known engine name), an
+ error occurs and the table is not created or altered.
+ </para>
+
+ <para>
+ With <literal role="sqlmode">NO_ENGINE_SUBSTITUTION</literal>
+ enabled, an error occurs and the table is not created or
+ altered if the desired engine is unavailable for any reason
+ (whether disabled or invalid).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sqlmode_no_field_options">
+ <indexterm>
+ <primary>NO_FIELD_OPTIONS SQL mode</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>SQL mode</primary>
+ <secondary>NO_FIELD_OPTIONS</secondary>
+ </indexterm>
+
+ <literal role="sqlmode">NO_FIELD_OPTIONS</literal>
+ </para>
+
+ <para>
+ Do not print MySQL-specific column options in the output of
+ <literal role="stmt">SHOW CREATE TABLE</literal>. This mode is
+ used by <command>mysqldump</command> in portability mode.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sqlmode_no_key_options">
+ <indexterm>
+ <primary>NO_KEY_OPTIONS SQL mode</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>SQL mode</primary>
+ <secondary>NO_KEY_OPTIONS</secondary>
+ </indexterm>
+
+ <literal role="sqlmode">NO_KEY_OPTIONS</literal>
+ </para>
+
+ <para>
+ Do not print MySQL-specific index options in the output of
+ <literal role="stmt">SHOW CREATE TABLE</literal>. This mode is
+ used by <command>mysqldump</command> in portability mode.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sqlmode_no_table_options">
+ <indexterm>
+ <primary>NO_TABLE_OPTIONS SQL mode</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>SQL mode</primary>
+ <secondary>NO_TABLE_OPTIONS</secondary>
+ </indexterm>
+
+ <literal role="sqlmode">NO_TABLE_OPTIONS</literal>
+ </para>
+
+ <para>
+ Do not print MySQL-specific table options (such as
+ <literal>ENGINE</literal>) in the output of
+ <literal role="stmt">SHOW CREATE TABLE</literal>. This mode is
+ used by <command>mysqldump</command> in portability mode.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="sqlmode_no_unsigned_subtraction">
+ <indexterm>
+ <primary>NO_UNSIGNED_SUBTRACTION SQL mode</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>SQL mode</primary>
+ <secondary>NO_UNSIGNED_SUBTRACTION</secondary>
+ </indexterm>
+
+ <literal role="sqlmode">NO_UNSIGNED_SUBTRACTION</literal>
+ </para>
+
+ <para>
+ In integer subtraction operations, do not mark the result as
+ <literal>UNSIGNED</literal> if one of the operands is
+ unsigned. In other words, <emphasis>the result of a
+ subtraction is always signed whenever this mode is in effect,
+ even if one of the operands is unsigned</emphasis>. For
+ example, compare the type of column <literal>c2</literal> in
+ table <literal>t1</literal> with that of column
+ <literal>c2</literal> in table <literal>t2</literal>:
+ </para>
+
+<programlisting>
+mysql> <userinput>SET SQL_MODE='';</userinput>
+mysql> <userinput>CREATE TABLE test (c1 BIGINT UNSIGNED NOT NULL);</userinput>
+mysql> <userinput>CREATE TABLE t1 SELECT c1 - 1 AS c2 FROM test;</userinput>
+mysql> <userinput>DESCRIBE t1;</userinput>
++-------+---------------------+------+-----+---------+-------+
+| Field | Type | Null | Key | Default | Extra |
++-------+---------------------+------+-----+---------+-------+
+| c2 | bigint(21) unsigned | | | 0 | |
++-------+---------------------+------+-----+---------+-------+
+
+mysql> <userinput>SET SQL_MODE='NO_UNSIGNED_SUBTRACTION';</userinput>
+mysql> <userinput>CREATE TABLE t2 SELECT c1 - 1 AS c2 FROM test;</userinput>
+mysql> <userinput>DESCRIBE t2;</userinput>
++-------+------------+------+-----+---------+-------+
+| Field | Type | Null | Key | Default | Extra |
++-------+------------+------+-----+---------+-------+
+| c2 | bigint(21) | | | 0 | |
++-------+------------+------+-----+---------+-------+
+</programlisting>
+
+ <para>
+ Note that this means that <literal>BIGINT UNSIGNED</literal>
+ is not 100% usable in all con