MySQL動態系統變數

2013-08-21_111620

這是MySQL 5實力養成暨評量裡的6-09.『執行「SET GLOBAL 指令 = ‘SYSTEM’;」,當敘述中的「指令」為下列何項時,可設定MySQL的時區為作業系統時區?』

答案:(D) time_zone

僕自學MySQL,已涉八月,這段歷程還真是久,當中當然也有低落不想繼續的心情,但總能撐過,實為上蒼之祝福,希望這個題目將是最後一題。大家可以參閱MySQL 5.7 Reference Manual :: 10 Globalization :: 10.6 MySQL Server Time Zone Support 或是MySQL 5.1参考手册 :: 5. 数据库管理::5.3. mysqld:MySQL服务器::5.3.3. 服务器系统变量

轉譯成繁體中文於下:

伺服器將維護許多資料表示其配置的系統變數。所有變數均有預設值。可以在命令列中或選項檔案設置選項在伺服器啟動時對它們進行設置。大多數可以在運行時使用SET語句來設置。

mysqld伺服器維護兩種變數。全域變數影響伺服器的全局操作。會話變數影響具體客戶端連接相關操作。

伺服器啟動時,將所有全域變數初始化為預設值。可以在選項檔案或命令列中指定的選項來更改這些預設值。伺服器啟動後,通過連接伺服器並執行SET GLOBAL var_name語句可以更改動態全域變數。要想更改全域變數,必須具有SUPER權限。

伺服器還為每個客戶端連接維護會話變數。連接時使用相應全域變數的當前值對客戶端會話變數進行初始化。客戶可以通過SET SESSIONvar_name語句來更改動態會話變數。設置會話變數不需要特殊權限,但客戶可以只更改自己的會話變數,而不更改其它客戶的會話變數。

任何訪問全域變數的客戶端都可以看見對全域變數的更改。但是,它只影響在更改後連接的從該全域變數初始化相應會話變數的客戶端。它不會影響已經連接上的客戶端的會話變數(甚至是執行SET GLOBAL語句的客戶端)。

當使用啟動選項設置變數時,變數值可以使用後綴K、M或G分別資料表示千字節、兆字節或gigabytes。例如,下面的命令啟動伺服器時的鍵值緩衝區大小為16 megabytes:

mysqld --key_buffer_size=16M

後綴的大小寫沒關係;16M和16m是同樣的。

運行時,使用SET語句來設置系統變數。此時,不能使用後綴,但值可以採取下列資料表達式:

mysql> SET sort_buffer_size = 10 * 1024 * 1024;

要想顯式指定是否設置全域或會話變數,使用GLOBAL或SESSION選項:

mysql> SET GLOBAL sort_buffer_size = 10 * 1024 * 1024;
mysql> SET SESSION sort_buffer_size = 10 * 1024 * 1024;

兩個選項均沒有,則語句設置會話變數。

5.3.3.1節,「動態系統變數」中列出了可以在運行時設置的變數。

如果您想用SET語句限制系統變數可設的最大值,可以在伺服器啟動時通過–maximum-var_name形式的選項來指定。例如,要想防止query_cache_size的值運行時超過32MB,使用選項–maximum-query_cache_size=32M。

您可以通過SHOW VARIABLES語句查看系統變數及其值。詳細訊息參見9.4節,「系統變數」

mysql> SHOW VARIABLES;
+---------------------------------+-------------------------------------------+
| Variable_name                   | Value                                     |
+---------------------------------+-------------------------------------------+
| auto_increment_increment        | 1                                         |
| auto_increment_offset           | 1                                         |
| automatic_sp_privileges         | ON                                        |
| back_log                        | 50                                        |
| basedir                         | /home/jon/bin/mysql/                      |
| binlog_cache_size               | 32768                                     |
| bulk_insert_buffer_size         | 8388608                                   |
| character_set_client            | latin1                                    |
| character_set_connection        | latin1                                    |
| character_set_database          | latin1                                    |
| character_set_results           | latin1                                    |
| character_set_server            | latin1                                    |
| character_set_system            | utf8                                      |
| character_sets_dir              | /home/jon/bin/mysql/share/mysql/charsets/ |
| collation_connection            | latin1_swedish_ci                         |
| collation_database              | latin1_swedish_ci                         |
| collation_server                | latin1_swedish_ci                         |
| completion_type                 | 0                                         |
| concurrent_insert               | 1                                         |
| connect_timeout                 | 5                                         |
| datadir                         | /home/jon/bin/mysql/var/                  |
| date_format                     | %Y-%m-%d                                  |
| datetime_format                 | %Y-%m-%d %H:%i:%s                         |
| default_week_format             | 0                                         |
| delay_key_write                 | ON                                        |
| delayed_insert_limit            | 100                                       |
| delayed_insert_timeout          | 300                                       |
| delayed_queue_size              | 1000                                      |
| div_precision_increment         | 4                                         |
| engine_condition_pushdown       | OFF                                       |
| expire_logs_days                | 0                                         |
| flush                           | OFF                                       |
| flush_time                      | 0                                         |
| ft_boolean_syntax               | + -><()~*:""&|                            |
| ft_max_word_len                 | 84                                        |
| ft_min_word_len                 | 4                                         |
| ft_query_expansion_limit        | 20                                        |
| ft_stopword_file                | (built-in)                                |
| group_concat_max_len            | 1024                                      |
| have_archive                    | YES                                       |
| have_bdb                        | NO                                        |
| have_blackhole_engine           | YES                                       |
| have_compress                   | YES                                       |
| have_crypt                      | YES                                       |
| have_csv                        | YES                                       |
| have_example_engine             | NO                                        |
| have_federated_engine           | NO                                        |
| have_geometry                   | YES                                       |
| have_innodb                     | YES                                       |
| have_isam                       | NO                                        |
| have_ndbcluster                 | DISABLED                                  |
| have_openssl                    | NO                                        |
| have_partition_engine           | YES                                       |
| have_query_cache                | YES                                       |
| have_raid                       | NO                                        |
| have_rtree_keys                 | YES                                       |
| have_symlink                    | YES                                       |
| init_connect                    |                                           |
| init_file                       |                                           |
| init_slave                      |                                           |
| 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            |                                           |
| innodb_doublewrite              | ON                                        |
| innodb_fast_shutdown            | 1                                         |
| innodb_file_io_threads          | 4                                         |
| innodb_file_per_table           | OFF                                       |
| innodb_flush_log_at_trx_commit  | 1                                         |
| innodb_flush_method             |                                           |
| innodb_force_recovery           | 0                                         |
| innodb_lock_wait_timeout        | 50                                        |
| innodb_locks_unsafe_for_binlog  | OFF                                       |
| innodb_log_arch_dir             |                                           |
| innodb_log_archive              | OFF                                       |
| innodb_log_buffer_size          | 1048576                                   |
| innodb_log_file_size            | 5242880                                   |
| innodb_log_files_in_group       | 2                                         |
| innodb_log_group_home_dir       | ./                                        |
| innodb_max_dirty_pages_pct      | 90                                        |
| innodb_max_purge_lag            | 0                                         |
| innodb_mirrored_log_groups      | 1                                         |
| innodb_open_files               | 300                                       |
| innodb_support_xa               | ON                                        |
| innodb_sync_spin_loops          | 20                                        |
| innodb_table_locks              | ON                                        |
| innodb_thread_concurrency       | 20                                        |
| innodb_thread_sleep_delay       | 10000                                     |
| interactive_timeout             | 28800                                     |
| join_buffer_size                | 131072                                    |
| key_buffer_size                 | 8388600                                   |
| key_cache_age_threshold         | 300                                       |
| key_cache_block_size            | 1024                                      |
| key_cache_division_limit        | 100                                       |
| language                        | /home/jon/bin/mysql/share/mysql/english/  |
| large_files_support             | ON                                        |
| large_page_size                 | 0                                         |
| large_pages                     | OFF                                       |
| license                         | GPL                                       |
| local_infile                    | ON                                        |
| locked_in_memory                | OFF                                       |
| log                             | ON                                        |
| log_bin                         | ON                                        |
| log_bin_trust_routine_creators  | OFF                                       |
| log_error                       | /home/jon/bin/mysql/var/master1.err       |
| log_slave_updates               | OFF                                       |
| log_slow_queries                | OFF                                       |
| log_warnings                    | 1                                         |
| long_query_time                 | 10                                        |
| low_priority_updates            | OFF                                       |
| lower_case_file_system          | OFF                                       |
| lower_case_table_names          | 0                                         |
| max_allowed_packet              | 1048576                                   |
| max_binlog_cache_size           | 4294967295                                |
| max_binlog_size                 | 1073741824                                |
| max_connect_errors              | 10                                        |
| max_connections                 | 100                                       |
| max_delayed_threads             | 20                                        |
| max_error_count                 | 64                                        |
| max_heap_table_size             | 16777216                                  |
| max_insert_delayed_threads      | 20                                        |
| max_join_size                   | 4294967295                                |
| max_length_for_sort_data        | 1024                                      |
| max_relay_log_size              | 0                                         |
| max_seeks_for_key               | 4294967295                                |
| max_sort_length                 | 1024                                      |
| max_tmp_tables                  | 32                                        |
| max_user_connections            | 0                                         |
| max_write_lock_count            | 4294967295                                |
| multi_range_count               | 256                                       |
| myisam_data_pointer_size        | 6                                         |
| myisam_max_sort_file_size       | 2147483647                                |
| myisam_recover_options          | OFF                                       |
| myisam_repair_threads           | 1                                         |
| myisam_sort_buffer_size         | 8388608                                   |
| ndb_autoincrement_prefetch_sz   | 32                                        |
| ndb_cache_check_time            | 0                                         |
| ndb_force_send                  | ON                                        |
| ndb_index_stat_cache_entries    | 32                                        |
| ndb_index_stat_enable           | ON                                        |
| ndb_index_stat_update_freq      | 20                                        |
| ndb_use_exact_count             | ON                                        |
| ndb_use_transactions            | ON                                        |
| net_buffer_length               | 16384                                     |
| net_read_timeout                | 30                                        |
| net_retry_count                 | 10                                        |
| net_write_timeout               | 60                                        |
| new                             | OFF                                       |
| old_alter_table                 | OFF                                       |
| old_passwords                   | OFF                                       |
| open_files_limit                | 1024                                      |
| optimizer_prune_level           | 1                                         |
| optimizer_search_depth          | 62                                        |
| pid_file                        | /home/jon/bin/mysql/var/hostname.pid1     |
| port                            | 3306                                      |
| preload_buffer_size             | 32768                                     |
| protocol_version                | 10                                        |
| query_alloc_block_size          | 8192                                      |
| query_cache_limit               | 1048576                                   |
| query_cache_min_res_unit        | 4096                                      |
| query_cache_size                | 0                                         |
| query_cache_type                | ON                                        |
| query_cache_wlock_invalidate    | OFF                                       |
| query_prealloc_size             | 8192                                      |
| range_alloc_block_size          | 2048                                      |
| read_buffer_size                | 131072                                    |
| read_only                       | OFF                                       |
| read_rnd_buffer_size            | 262144                                    |
| relay_log_purge                 | ON                                        |
| relay_log_space_limit           | 0                                         |
| rpl_recovery_rank               | 0                                         |
| secure_auth                     | OFF                                       |
| server_id                       | 1                                         |
| skip_external_locking           | ON                                        |
| skip_networking                 | OFF                                       |
| skip_show_database              | OFF                                       |
| slave_compressed_protocol       | OFF                                       |
| slave_load_tmpdir               | /tmp/                                     |
| slave_net_timeout               | 3600                                      |
| slave_skip_errors               | OFF                                       |
| slave_transaction_retries       | 10                                        |
| slow_launch_time                | 2                                         |
| socket                          | /tmp/mysql.sock                           |
| sort_buffer_size                | 2097144                                   |
| sql_mode                        |                                           |
| sql_notes                       | ON                                        |
| sql_warnings                    | ON                                        |
| storage_engine                  | MyISAM                                    |
| sync_binlog                     | 0                                         |
| sync_frm                        | ON                                        |
| sync_replication                | 0                                         |
| sync_replication_slave_id       | 0                                         |
| sync_replication_timeout        | 10                                        |
| system_time_zone                | EST                                       |
| table_cache                     | 64                                        |
| table_lock_wait_timeout         | 50                                        |
| table_type                      | MyISAM                                    |
| thread_cache_size               | 0                                         |
| thread_stack                    | 196608                                    |
| time_format                     | %H:%i:%s                                  |
| time_zone                       | SYSTEM                                    |
| timed_mutexes                   | OFF                                       |
| tmp_table_size                  | 33554432                                  |
| tmpdir                          |                                           |
| transaction_alloc_block_size    | 8192                                      |
| transaction_prealloc_size       | 4096                                      |
| tx_isolation                    | REPEATABLE-READ                           |
| updatable_views_with_limit      | YES                                       |
| version                         | 5.1.2-alpha-log                           |
| version_comment                 | Source distribution                       |
| version_compile_machine         | i686                                      |
| version_compile_os              | suse-linux                                |
| wait_timeout                    | 28800                                     |
+---------------------------------+-------------------------------------------+
218 rows in set (0.03 sec)

此處描述了大多數系統變數。沒有版本的變數在所有MySQL 5.1 發佈中適用。關於其使用歷史訊息,請參見MySQL 5.0參考指南MySQL 4.1參考指南。InnoDB系統變數列於 15.2.4節,「InnoDB啟動選項」

若沒有另行規定,緩衝區大小、長度和堆棧大小的單位均為字節。

關於這些變數的調節訊息參見7.5.2節,「調節伺服器參數」

·         auto_increment_increment

auto_increment_increment和auto_increment_offset用於主伺服器-主伺服器(master-to-master)複製,並可以用來控制AUTO_INCREMENT欄位的操作。兩個變數均可以設置為全域或局部變數,並且假定每個值都可以為1到65,535之間的整數值。將其中一個變數設置為0會使該變數為1。如果試圖將這些變數設置為大於65,535或小於0的值,則會將該值設置為65,535。如果向將auto_increment_increment或auto_increment_offset設置為非整數值,則會給出錯誤,並且變數的實際值在這種情況下保持不變。

這兩個變數影響AUTO_INCREMENT欄位的方式:

o        auto_increment_increment控制欄位中的值的增量值。例如:

o                       mysql> SHOW VARIABLES LIKE 'auto_inc%';
o                       +--------------------------+-------+
o                       | Variable_name            | Value |
o                       +--------------------------+-------+
o                       | auto_increment_increment | 1     |
o                       | auto_increment_offset    | 1     |
o                       +--------------------------+-------+
o                       2 rows in set (0.00 sec)
o
o                       mysql> CREATE TABLE autoinc1 (col INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
o                       Query OK, 0 rows affected (0.04 sec)
o
o                       mysql> SET @auto_increment_increment=10;
o                       Query OK, 0 rows affected (0.00 sec)
o
o                       mysql> SHOW VARIABLES LIKE 'auto_inc%';
o                       +--------------------------+-------+
o                       | Variable_name            | Value |
o                       +--------------------------+-------+
o                       | auto_increment_increment | 10    |
o                       | auto_increment_offset    | 1     |
o                       +--------------------------+-------+
o                       2 rows in set (0.01 sec)
o
o                       mysql> INSERT INTO autoinc1 VALUES (NULL), (NULL), (NULL), (NULL);
o                       Query OK, 4 rows affected (0.00 sec)
o                       Records: 4  Duplicates: 0  Warnings: 0
o
o                       mysql> SELECT col FROM autoinc1;
o                       +-----+
o                       | col |
o                       +-----+
o                       |   1 |
o                       |  11 |
o                       |  21 |
o                       |  31 |
o                       +-----+
o                       4 rows in set (0.00 sec)

(註明如何使用SHOW VARIABLES來獲取這些變數的當前值)。

o        auto_increment_offset確定AUTO_INCREMENT欄位值的起點。假定在與前面的例子的相同的會話中執行下面的命令:

o                       mysql> SET @auto_increment_offset=5;
o                       Query OK, 0 rows affected (0.00 sec)
o
o                       mysql> SHOW VARIABLES LIKE 'auto_inc%';
o                       +--------------------------+-------+
o                       | Variable_name            | Value |
o                       +--------------------------+-------+
o                       | auto_increment_increment | 10    |
o                       | auto_increment_offset    | 5     |
o                       +--------------------------+-------+
o                       2 rows in set (0.00 sec)
o
o                       mysql> CREATE TABLE autoinc2 (col INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
o                       Query OK, 0 rows affected (0.06 sec)
o
o                       mysql> INSERT INTO autoinc2 VALUES (NULL), (NULL), (NULL), (NULL);
o                       Query OK, 4 rows affected (0.00 sec)
o                       Records: 4  Duplicates: 0  Warnings: 0
o
o                       mysql> SELECT col FROM autoinc2;
o                       +-----+
o                       | col |
o                       +-----+
o                       |   5 |
o                       |  15 |
o                       |  25 |
o                       |  35 |
o                       +-----+
o                       4 rows in set (0.02 sec)
o

如果auto_increment_offset的值大於auto_increment_increment的值,則auto_increment_offset的值被忽略。

如果其中一個或兩個變數被更改了,然後更改插入到包含AUTO_INCREMENT欄位的資料表中的新行,結果可能看上去有問題,由於計算AUTO_INCREMENT系列值時沒有考慮欄位內已經存在的值,並且插入的下一個值是欄位內最小的值,大於AUTO_INCREMENT欄位內已有的最大值。換句話說,數值的計算方法為:

auto_increment_offset+ N * auto_increment_increment

其中N為系列內的正整數值[1,2,3,…]。例如:

mysql> SHOW VARIABLES LIKE 'auto_inc%';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| auto_increment_increment | 10    |
| auto_increment_offset    | 5     |
+--------------------------+-------+
2 rows in set (0.00 sec)

mysql> SELECT col FROM autoinc1;
+-----+
| col |
+-----+
|   1 |
|  11 |
|  21 |
|  31 |
+-----+
4 rows in set (0.00 sec)

mysql> INSERT INTO autoinc1 VALUES (NULL), (NULL), (NULL), (NULL);
Query OK, 4 rows affected (0.00 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> SELECT col FROM autoinc1;
+-----+
| col |
+-----+
|   1 |
|  11 |
|  21 |
|  31 |
|  35 |
|  45 |
|  55 |
|  65 |
+-----+
8 rows in set (0.00 sec)

auto_increment_increment和auto_increment_offset所示的值可以生成系列5 + N * 10,即,[5,15,25,35,45,…]。在INSERT前col 欄位內最大的值為31,AUTO_INCREMENT數列的下一個值為35,因此col中插入的值從該點開始,結果如SELECT查詢所示。

一定要記住不可能將這兩個變數的結果限制到一個資料表中,因此不會替代其它資料庫管理系統提供的序列;這些變數控制MySQL伺服器上all資料表AUTO_INCREMENT欄位的所有行為。如果某個變數設為全域變數,則只有通過局部設置將全域值更改和覆蓋後或mysqld重啟後其作用方可改變;如果局部設置,則新值影響所有資料表的AUTO_INCREMENT欄位,在這個會話期間當前用戶在這些資料表中插入了新行,除非在會話期間更改了這些值。

auto_increment_increment的 預設值為1。參見6.12節,「多伺服器複製中的Auto-Increment」

·         auto_increment_offset

該變數的預設值為1。詳見auto_increment_increment的描述。

·         back_log

MySQL有的主要連接請求的數量。當主MySQL線程在短時間內得到許多連接請求時發揮作用。主線程需要花一些時間(儘管很少)來檢查連接並啟動一個新線程。back_log值說明MySQL臨時停止響應新請求前在短時間內可以堆起多少請求。如果您需要在短時間內允許大量連接,可以增加該數值。

換句話說,該值為「進」TCP/IP連接幀聽隊列的大小。作業系統有該隊列自己的限制值。本手冊中Unix listen()系統使用頁應有更詳細的訊息。該變數最大值請查閱OS文檔。企圖將back_log設置為高於您的作業系統限值是徒勞無益的。

·         basedir

MySQL安裝基準目錄。可以用–basedir選項設置該變數。

·         bdb_cache_size

為BDB資料表緩存索引和行分配的緩衝區的大小。如果您不使用BDB資料表,您應用–skip-bdb啟動mysqld以便不浪費該緩存。

·         bdb_home

BDB資料表基準目錄。應與datadir變數的值相同。

·         bdb_log_buffer_size

為BDB資料表緩存索引和行分配的緩衝區的大小。如果您不使用BDB資料表,您應將該值設置為0或用–skip-bdb啟動mysqld以便不浪費該緩存。

·         bdb_logdir

BDB儲存引擎寫它日誌檔案的目錄。可以用–bdb-logdir選項設置該變數。

·         bdb_max_lock

在BDB資料表下可以激活的最大鎖數(預設為10,000)。如果當您執行長交易或當mysqld必須檢查許多行來計算查詢時出現下面的錯誤,您應增加該值:

bdb: Lock table is out of available locks
Got error 12 from ...

·         bdb_shared_data

如果您正使用–bdb-shared-data應為ON。

·         bdb_tmpdir

–bdb-tmpdir選項的值。

 

·         binlog_cache_size

在交易過程中容納二進制日誌SQL語句的緩存大小。二進制日誌緩存是伺服器支援交易儲存引擎並且伺服器啟用了二進制日誌(–log-bin選項)的前提下為每個客戶端分配的內存。如果您經常使用大的,多語句交易,您可以增加該值以獲得更有的性能。Binlog_cache_use和Binlog_cache_disk_use狀態變數可以用來調整該變數的大小。參見5.11.3節,「二進制日誌」

·         bulk_insert_buffer_size

MyISAM 使用專用樹狀緩存來使INSERT … SELECT、INSERT … VALUES (…)、(…)、 …和LOAD DATA INFILE的大塊插入更快。該變數用每線程的字節數限制緩存樹的大小。將它設置為0禁用最佳化。釋:只有向非空資料表新增數據時才使用該緩存。 預設值是8MB。

·         character_set_client

來自客戶端的語句的字元編碼。

·         character_set_connection

用於沒有字元編碼導入符的文字和數字-字串轉換。

·         character_set_database

預設資料庫使用的字元編碼。當預設資料庫更改時,伺服器則設置該變數。如果沒有預設資料庫,變數的值同character_set_server。

·         character_set_results

用於向客戶端返回查詢結果的字元編碼。

·         character_set_ server

伺服器的預設字元編碼。

·         character_set_system

伺服器用來保存識別符的字元編碼。該值一定是utf8。

·         character_sets_dir

字元編碼安裝目錄。

·         collation_connection

連接字元編碼的校對規則。

·         collation_database

預設資料庫使用的校對規則。當預設資料庫改變時伺服器則設置該變數。如果沒有預設資料庫,變數的值同collation_server。

·         collation_server

伺服器的預設校對規則。

·         completion_type

交易結束類型:

o        如果該值為0(預設),COMMIT和ROLLBACK不受影響。

o        如果該值為1,COMMIT和ROLLBACK分別等同於COMMIT AND CHAIN和ROLLBACK AND CHAIN。(新交易用剛剛結束的交易相同的間隔等級立即啟動)。

o        如果該值為2,COMMIT和ROLLBACK分別等同於COMM它RELEASE和ROLLBACK RELEASE。(交易終止後,伺服器中斷)。

·         concurrent_insert

如果為ON(預設值),MySQL允許INSERT和SELECT語句在中間沒有空資料塊的MyISAM資料表中並行運行。您可以用–safe或–skip-new啟動mysqld關閉該選項。

該變數為整數,有3個值:

描述
0
1 (預設)在沒有空資料塊的MyISAM資料表中啟用並行插入
2 為所有MyISAM資料表啟用並行插入。如果資料表有空記錄或正被另一線程使用,新行將插入到資料表的最後。如果資料表未使用,MySQL將進行普通讀鎖定並將新行插入空記錄。

·         connect_timeout

mysqld伺服器用Bad handshake響應前等待連接包的秒數。

·         datadir

MySQL資料目錄。可以用–datadir選項設置該變數。

·         date_format

該變數未使用。

·         datetime_format

該變數未使用。

·         default_week_format

WEEK() 函數使用的預設模式。

·         delay_key_write

該選項只適用MyISAM資料表。它具有下述值可以影響CREATE TABLE語句使用的DELAY_KEY_WRITE資料表選項的處理。

選項 描述
OFF DELAY_KEY_WRITE被忽略。
ON MySQL在CREATE TABLE中用DELAY_KEY_WRITE選項。這是 預設值。
ALL 用啟用DELAY_KEY_WRITE選項建立資料表的相同方法對所有新打開資料表的進行處理。

如果啟用了DELAY_KEY_WRITE,說明使用該項的資料表的鍵緩衝區在每次更新索引時不被清空,只有關閉資料表時才清空。遮掩蓋可以大大加快鍵的寫操作,但如果您使用該特性,您應用–myisam-recover選項啟動伺服器,為所有MyISAM資料表新增自動檢查(例如,–myisam-recover=BACKUP,FORCE)。參見5.3.1節,「mysqld命令行選項」15.1.1節,「MyISAM啟動選項」

請注意–external-locking不為使用延遲鍵寫入的資料表提供索引破壞保護。

·         delayed_insert_limit

插入delayed_insert_limit 延遲行後,INSERT DELAYED 處理器線程檢查是否有掛起的SELECT語句。如果有,在繼續插入延遲的行之前,允許它們先執行。

·         delayed_insert_timeout

INSERT DELAYED處理器線程終止前應等待INSERT語句的時間。

·         delayed_queue_size

這是各個資料表中處理INSERT DELAYED語句時隊列中行的數量限制。如果隊列滿了,執行INSERT DELAYED語句的客戶端應等待直到隊列內再有空間。

·         div_precision_increment

該變數說明用/操作符執行除操作的結果可增加的精確度的位數。 預設值是4。最小和最大值分別為0和30。下面的示範說明了增加 預設值的結果。

mysql> SELECT 1/7;
+--------+
| 1/7    |
+--------+
| 0.1429 |
+--------+
mysql> SET div_precision_increment = 12;
mysql> SELECT 1/7;
+----------------+
| 1/7            |
+----------------+
| 0.142857142857 |
+----------------+

·         engine_condition_pushdown

該變數適用於NDB。預設值為0(OFF):如果您執行類似查詢SELECT * FROM t WHERE mycol = 42,其中mycol為沒有索引的欄位,當滿了的資料表掃瞄每個NDB節點時,執行該查詢。每個節點使用WHERE條件將每一行發送給MySQL伺服器。如果engine_condition_pushdown被設置為1(ON),該條件「pushed down」給儲存引擎並發送給NDB節點。每個節點都執行掃瞄,並只向MySQL伺服器發送回匹配條件的行。

·         expire_logs_days

二進制日誌自動刪除的天數。預設值為0,資料表示「沒有自動刪除」。啟動時和二進制日誌循環時可能刪除。

·         flush

如果用–flush選項啟動mysqld該值為ON。

·         flush_time

如果設為非零值,每隔flush_time秒則關閉所有資料表以釋放硬盤資源並同步未清空的資料。我們建議只在Windows 9x或Me,或有最小資源的系統中使用該選項。

·         ft_boolean_syntax

使用IN BOOLEAN MODE執行的布爾全文搜索支援的操作符系列。參見12.7.1節,「布爾全文搜索」

預設變數值為 ‘+ -><()~*:””&|’。更改這些值的規則是:

o        操作符函數由其在字串內的位置決定。

o        替換值必須是14個字元。

o        每個字元必須為ASCII碼非文字數字字元。

o        第1個或第2個字元必須為空格。

o        除非語句在第11個字元和第12個字元處引用了操作符,否則不允許複製。這兩個字元可以不相同,但這是唯一可能的兩個。

o        位置10、13和14(預設設置為『:』、『&』和『|』)保留用於將來延伸。

·         ft_max_word_len

FULLTEXT索引中所包含的字的最大長度。

釋:更改該變數後必須重建FULLTEXT索引。應使用REPAIR TABLE tbl_name QUICK。

·         ft_min_word_len

FULLTEXT索引中所包含的字的最小長度。

釋:更改該變數後必須重建FULLTEXT索引。應使用REPAIR TABLE tbl_name QUICK。

·         ft_query_expansion_limit

使用WITH QUERY EXPANSION進行全文搜索的最大匹配數。

·         ft_stopword_file

用於讀取全文搜索的停止字清單的檔案。該檔案中的所有字都會用到;註釋不重要。預設情況下,使用內嵌式停止字清單(如myisam/ft_static.c檔案中所定義)。將該變數設置為空字串(”)則禁用停止字過濾。

釋:更改該變數或停止字檔案的內容後必須重建FULLTEXT索引。應使用REPAIR TABLE tbl_name QUICK。

·         group_concat_max_len

允許的GROUP_CONCAT()函數結果的最大長度。

·         have_archive

如果mysqld支援ARCHIVE資料表則為YES,否則為NO。

·         have_bdb

如果mysqld支援BDB資料表則為YES。如果使用–skip-bdb則為DISABLED。

·         have_blackhole_engine

如果mysqld支援BLACKHOLE資料表則為YES,否則為NO。

·         have_compress

是否zlib壓縮庫適合該伺服器。如果不適合,不能使用COMPRESS()和UNCOMPRESS()函數。

·         have_crypt

是否crypt()系統使用適合該伺服器。如果不適合,不能使用CRYPT()函數。

·         have_csv

如果mysqld支援ARCHIVE資料表則為YES,否則為NO。

·         have_example_engine

如果mysqld支援EXAMPLE資料表則為YES,否則為NO。

have_federated_engine

如果mysqld支援FEDERATED資料表則為YES,否則為NO。

·         have_geometry

是否伺服器支援空間數據類型。

·         have_innodb

如果mysqld支援InnoDB資料表則為YES。如果使用–skip-innodb則為DISABLED。

·         have_isam

在MySQL 5.1中,只是為了向後兼容顯示該值,並且總是NO,因為不再支援ISAM資料表。

·         have_ndbcluster

如果mysqld支援NDB CLUSTER資料表則為YES。如果使用了–skip-ndbcluster則為DISABLED。

·         have_partition_engine

如果mysqld支援分區則為YES。在MySQL 5.1.1中加入。

·         have_openssl

如果mysqld支援客戶端/伺服器協議的SSL(加密)則為YES。

·         have_query_cache

如果mysqld支援查詢緩存則為YES。

·         have_raid

如果mysqld支援RAID選項則為YES。

·         have_rtree_keys

RTREE索引是否可用。(用於MyISAM資料表的空間索引)。

·         have_symlink

是否啟用符號連結支援。在Unix中需要用於支援DATA DIRECTORY和INDEX DIRECTORY資料表選項。

·         init_connect

伺服器為每個連接的客戶端執行的字串。字串由一個或多個SQL語句組成。要想指定多個語句,用分號間隔開。例如,每個客戶端開始時預設啟用autocommit模式。沒有全域伺服器變數可以規定autocommit預設情況下應禁用,但可以用init_connect來獲得相同的效果:

SET GLOBAL init_connect='SET AUTOCOMMIT=0';

還可以在命令行或選項檔案中設置該變數。要想使用選項檔案設置變數,應包括下述行:

[mysqld]
init_connect='SET AUTOCOMMIT=0'

請注意init_connect的內容並不為擁有SUPER權限的用戶執行;實際是內容設置錯誤(包含錯誤查詢,例如語法錯誤),這樣使所有連接失敗。不為SUPER用戶執行,使SUPER用戶可以打開連接並固定init_connect。

·         init_file

啟動伺服器時用–init-file選項指定的檔案名。檔案中包含伺服器啟動時要執行的SQL語句。每個語句必須在同一行中並且不能包括註釋。

·         init_slave

該變數類似init_connect,但是每次SQL線程啟動時從伺服器應執行該字串。該字串的格式與init_connect變數相同。

·         innodb_xxx

InnoDB系統變數列入15.2.4節,「InnoDB啟動選項」

·         interactive_timeout

伺服器關閉交互式連接前等待活動的秒數。交互式客戶端定義為在mysql_real_connect()中使用CLIENT_INTERACTIVE選項的客戶端。又見wait_timeout。

·         join_buffer_size

用於完全聯接的緩衝區的大小(當不使用索引的時候使用聯接操作)。一般情況獲得快速聯接的最好方法是新增索引。當增加索引時不可能通過增加join_buffer_size值來獲得快速完全聯接。將為兩個資料表之間的每個完全聯接分配聯接緩衝區。對於多個資料表之間不使用索引的複雜聯接,需要多聯接緩衝區。

·         key_buffer_size

MyISAM資料表的索引塊分配了緩衝區,由所有線程共享。key_buffer_size是索引塊緩衝區的大小。鍵值緩衝區即為鍵值緩存。

key_buffer_size的最大允許設定值為4GB。有效最大值可以更小,取決於可用物理RAM和作業系統或硬件平台強加的每個程序的RAM限制。

增加該值,達到您可以提供的更好的索引處理(所有讀和多個寫操作)。通常為主要運行MySQL的機器內存的25%。但是,如果您將該值設得過大(例如,大於總內存的50%),系統將轉換為頁並變得極慢。MySQL依賴作業系統來執行資料讀取時的檔案系統緩存,因此您必須為檔案系統緩存留一些空間。

同時寫多行時要想速度更快,應使用LOCK TABLES。參見13.4.5節,「LOCK TABLES和UNLOCK TABLES語法」

您可以通過執行SHOW STATUS語句並檢查Key_read_requests、Key_reads、Key_write_requests和Key_writes狀態變數來檢查鍵值緩衝區的性能。參見13.5.4節,「SHOW語法」

Key_reads/Key_read_requests比例一般應小於0.01。如果您使用更新和刪除,Key_writes/Key_write_requests比例通常接近1,但如果您更新時會同時影響到多行或如果您正使用DELAY_KEY_WRITE資料表選項,可能小得多。

用key_buffer_size結合Key_blocks_unused狀態變數和緩衝區塊大小,可以確定使用的鍵值緩衝區的比例。從key_cache_block_size伺服器變數可以獲得緩衝區塊大小。使用的緩衝區的比例為:

1 - ((Key_blocks_unused * key_cache_block_size) / key_buffer_size)

該值為約數,因為鍵值緩衝區的部分空間被分配用作內部管理結構。

可以建立多個MyISAM鍵值緩存。4GB限制可以適合每個緩存,而不是一個組。參見7.4.6節,「MyISAM鍵高速緩衝」

·         key_cache_age_threshold

該值控制將緩衝區從鍵值緩存熱子鏈(sub-chain)降級到溫子鏈(sub-chain)。如果值更低,則降級更快。最小值為100。 預設值是300。參見7.4.6節,「MyISAM鍵高速緩衝」

·         key_cache_block_size

鍵值緩存內塊的字節大小。預設值是1024。參見7.4.6節,「MyISAM鍵高速緩衝」

·         key_cache_division_limit

鍵值緩存緩衝區鏈熱子鏈和溫子鏈的劃分點。該值為緩衝區鏈用於溫子鏈的百分比。允許的值的範圍為1到100。 預設值是100。參見7.4.6節,「MyISAM鍵高速緩衝」

·         language

錯誤消息所用語言。

·          large_file_support

mysqld編譯時是否使用了大檔案支援選項。

·         large_pages

說明是否啟用了大頁面支援。

·         license

伺服器的授權類型。

·         local_infile

是否LOCAL支援LOAD DATA INFILE語句。

·         locked_in_memory

是否用–memlock將mysqld鎖在內存中。

·         log

是否啟用將所有查詢記錄到常規查詢日誌中。參見5.11.2節,「通用查詢日誌」

·         log_bin

是否啟用二進制日誌。參見5.11.3節,「二進制日誌」

·         log_bin_trust_routine_creators

若啟用了二進制記錄,則該變數適用。它控制是否可以信任保存的程式的作者不會建立向二進制日誌寫入不安全事件的程式。如果設置為0(預設情況),不允許用戶建立或修改保存的程式,除非他們不僅擁有CREATE ROUTINE或ALTER ROUTINE權限還擁有SUPER權限。

設置為0還強制限制,程式必須用DETERMINISTIC 特徵或用READS SQL DATA或NO SQL特徵聲明。如果變數設置為1,MySQL不對保存程式的建立強加限制。

參見20.4節,「儲存子程式和觸發程式的二進制日誌功能」

·         log_error

錯誤日誌的位置。

·         log_slave_updates

是否從伺服器從主伺服器收到的更新應記入從伺服器自己的二進制日誌。要想生效,必須啟用從伺服器的二進制記錄。參見6.8節,「複製啟動選項」

·         log_slow_queries

是否記錄慢查詢。用long_query_time變數的值來確定「慢查詢」。參見5.11.4節,「慢速查詢日誌」

·         log_warnings

是否產生其它警告消息。預設情況下啟用。放棄的連接不記入錯誤日誌,除非值大於1。

·         long_query_time

如果查詢時間超過該值,則增加Slow_queries狀態變數。如果您正使用–log-slow-queries選項,則查詢記入慢查詢日誌檔案。用實際時間測量該值,而不是CPU時間,因此低於輕負載系統閾值的查詢可能超過重負載系統的閾值。參見5.11.4節,「慢速查詢日誌」

·         low_priority_updates

如果設置為1,所有INSERT、UPDATE、DELETE和LOCK TABLE WRITE語句將等待直到受影響的資料表沒有掛起的SELECT或LOCK TABLE READ。該變數以前叫做sql_low_priority_updates。

·         lower_case_file_system

該變數說明是否資料目錄所在的檔案系統對檔案名的大小寫敏感。ON說明對檔案名的大小寫不敏感,OFF資料表示敏感。

·           lower_case_table_names

如果設置為1,資料表名用小寫保存到硬盤上,並且資料表名比較時不對大小寫敏感。如果設置為2,按照指定的保存資料表名,但按照小寫來比較。該選項還適合資料庫名和資料表的別名。參見9.2.2節,「識別符大小寫敏感性」

如果您正使用InnoDB資料表,您應在所有平台上將該變數設置為1,強制將名字轉換為小寫。

如果運行MySQL的系統對檔案名的大小寫不敏感(例如Windows或Mac OS X),您不應將該變數設置為0。如果啟動時沒有設置該變數,並且資料目錄所在檔案系統對檔案名的大小寫不敏感,MySQL自動將lower_case_table_names設置為2。

·         max_allowed_packet

包或任何生成的/中間字串的最大大小。

包消息緩衝區初始化為net_buffer_length字節,但需要時可以增長到max_allowed_packet字節。該值預設很小,以捕獲大的(可能是錯誤的)資料包。

如果您使用大的BLOB欄位或長字串,您必須增加該值。應同您想要使用的最大的BLOB一樣大。max_allowed_packet的協議限制為1GB。

·         max_binlog_cache_size

如果多語句交易需要更大的內存,您會得到錯誤Multi-statement transaction required more than ‘max_binlog_cache_size’ bytes of storage。

·         max_binlog_size

如果二進制日誌寫入的內容超出給定值,日誌就會發生滾動。您不能將該變數設置為大於1GB或小於4096字節。 預設值是1GB。

請注意如果您正使用交易:交易以一個塊寫入二進制日誌,因此不不能被幾個二進制日誌拆分。因此,如果您有大的交易,二進制日誌可能會大於max_binlog_size。

如果max_relay_log_size為0, max_binlog_size的值也適用於中繼日誌。

·         max_connect_errors

如果中斷的與主機的連接超過該數目,該主機則阻塞後面的連接。您可以用 FLUSH HOSTS語句解鎖鎖定的主機。

·         max_connections

允許的並行客戶端連接數目。增大該值則增加mysqld 需要的檔案描述符的數量。關於檔案描述符限制的註釋參見7.4.9節,「MySQL如何打開和關閉資料表」。還可參見A.2.6節,「連接數過多」

·         max_delayed_threads

不要啟動大於該數目的線程來處理INSERT DELAYED語句。如果所有INSERT DELAYED線程已經在使用,您想在新資料表中插入資料,行插入時好像未指定DELAYED屬性。如果您將該值設置為0,MySQL不會建立線程來處理DELAYED行;其結果是完全禁用了DELAYED。

·         max_error_count

保存由SHOW ERRORS或SHOW WARNINGS顯示的錯誤、警告和註解的最大數目。

·         max_heap_table_size

該變數設置MEMORY (HEAP)資料表可以增長到的最大空間大小。該變數用來計算MEMORY資料表的MAX_ROWS值。在已有的MEMORY資料表上設置該變數沒有效果,除非用CREATE TABLE或TRUNCATE TABLE等語句重新建立資料表。

·         max_insert_delayed_threads

該變數為max_delayed_threads的同義詞。

·         max_join_size

不允授權能需要檢查多於max_join_size行(為單個資料表語句)或行組合(為多個資料表語句)或可能執行大於max_join_size次硬盤查詢的SELECT語句。通過設置該值,您可以捕獲鍵使用不正確並可能花很長時間的SELECT語句。如果用戶想要執行沒有WHERE子句的花較長時間或返回數百萬行的聯接,則設置它。

將該變數設置為DEFAULT之外的值,將SQL_BIG_SELECTS的值重設為0。如果您重新設置SQL_BIG_SELECTS值,max_join_size變數被忽略。

如果查詢結果位於查詢緩存中,則不檢查結果大小,因為前面已經計算了結果,不會要求伺服器將它發送給客戶端。

該變數以前叫做sql_max_join_size。

·         max_length_for_sort_data

確定使用的filesort算法的索引值大小的限值。參見7.2.12節,「MySQL如何最佳化ORDER BY

·         max_relay_log_size

如果複製從伺服器寫入中繼日誌時超出給定值,則滾動中繼日誌。通過該變數您可以對中繼日誌和二進制日誌設置不同的限制。但是,將該變數設置為0,MySQL可以對二進制日誌和中繼日誌使用max_binlog_size。max_relay_log_size必須設置在4096字節和1GB(包括)之間,或為0。 預設值是0。參見6.3節,「複製實施細節」

·         max_seeks_for_key

限制根據鍵值尋找行時的最大搜索數。MySQL最佳化器假定當用掃瞄鍵在資料表內搜索匹配的行時,不需要超過該數量的鍵值搜索,而不管鍵的實際基數是什麼(參見13.5.4.11節,「SHOW INDEX語法」)。將該值設置為較低的值(100?),您可以強制MySQL選擇鍵值而不選擇資料表掃瞄。

·         max_sort_length

當排序BLOB或TEXT值時使用的字節數。只使用每個值的前max_sort_length字節;其它的被忽略。

·         max_tmp_tables

客戶端可以同時打開的臨時資料表的最大數。(但該選項還未生效)。

·         max_user_connections

任何給定的MySQL帳號允許的最大同時連接數。0值資料表示「沒有限制」。

該變數具有全域範圍和(只讀)會話範圍。會話變數的的值與全域變數的值相同,除非當前帳號具有非零MAX_USER_CONNECTIONS資源限制。在這種情況下,會話值反應了帳號限制。

·         max_write_lock_count

超過寫鎖定限制後,允許部分讀鎖定。

·         myisam_data_pointer_size

預設指針大小,單位是字節,當未指定MAX_ROWS選項時,CREATE TABLE使用該變數建立MyISAM資料表。該變數不能小於2或大於7。 預設值是6。參見A.2.11節,「資料表已滿」

·         (DEPRECATED) myisam_max_extra_sort_file_size

釋:MySQL 5.1不支援該變數。詳細訊息參見MySQL 5.0 參考手冊

·         myisam_max_sort_file_size

重建MyISAM索引(在REPAIR TABLE、ALTER TABLE或LOAD DATA INFILE過程中)時,允許MySQL使用的臨時檔案的最大空間大小。如果檔案的大小超過該值,則使用鍵值緩存建立索引,要慢得多。該值的單位為字節。

·         myisam_recover_options

–myisam-recover選項的值。

·         myisam_repair_threads

如果該值大於1,在Repair by sorting過程中並行建立MyISAM資料表索引(每個索引在自己的線程內)。 預設值是1。釋:多線程維護仍然是alpha 編碼。

·         myisam_sort_buffer_size

當在REPAIR TABLE或用CREATE INDEX建立索引或ALTER TABLE過程中排序 MyISAM索引分配的緩衝區。

·         myisam_stats_method

當為MyISAM資料表搜集關於索引值分發的統計訊息時伺服器如何處理NULL值。該變數有兩個可能的值,nulls_equal和nulls_unequal。對於nulls_equal,認為所有NULL索引值時相等的,並形成一個數值組,其空間大小等於NULL值的數。對於nulls_unequal,NULL值認為是不相等的,每個NULL形成一個數值組,大小為1。

方法用於生成資料表統計訊息,影響最佳化器如何選擇索引來執行查詢,詳細描述見7.4.7節,「MyISAM索引統計集合」

·         multi_read_range

指定範圍選擇過程中發送到儲存引擎的範圍的最大值。預設值是256。向引擎發送多個範圍可以大大改進某些選擇的性能,特別是對NDBCLUSTER。該引擎需要向所有節點發送範圍請求,同時發送許多請求可以大大降低通信成本。

·         named_pipe

(只適用Windows)說明伺服器是否支援命名管道連接。

·         net_buffer_length

在查詢之間將通信緩衝區重設為該值。一般情況不應改變,但如果內存很小,可以將它設置為期望的客戶端發送的SQL語句的長度。如果語句超出該長度,緩衝區自動擴大,直到max_allowed_packet字節。

·         net_read_timeout

中斷讀前等待連接的其它資料的秒數。當伺服器從客戶端讀數時,net_read_timeout指控制何時中斷的超時值。當伺服器向客戶端寫時,net_write_timeout指控制何時中斷的超時值。又見slave_net_timeout。

·         net_retry_count

如果某個通信端口的讀操作中斷了,在放棄前重試多次。在FreeBSD中該值應設得很高,因為內部中斷將發送至所有線程。

·         net_write_timeout

中斷寫之前等待塊寫入連接的秒數。又見net_read_timeout。

·         new

在MySQL 4.0中使用該變數來打開4.1中的一些行為,並用於向後相容性。在MySQL 5.1中,它的值一直是OFF.

·         old_passwords

是否伺服器應為MySQL用戶帳號使用pre-4.1-style密碼。參見A.2.3節,「客戶端不支援鑒定協議」

·         one_shot

這不是一個變數,但當設置變數是可以使用它。其描述見13.5.3節,「SET語法」

·         one_shot

這不是一個變數,但當設置變數是可以使用它。其描述見13.5.3節,「SET語法」

·         open_files_limit

作業系統允許mysqld打開的檔案的數量。這是系統允許的實際值,可能與您在啟動選項中賦給mysqld的值不同。若在系統中MySQL不能更改打開的檔案的數量,則該值為0。

·         optimizer_prune_level

在查詢最佳化從最佳化器搜索空間裁減低希望局部計劃中使用的控制方法。0值禁用該方法,以便最佳化器進行窮舉搜索。值為1使最佳化器根據中間方案中得出的行數來裁減方案。

·         optimizer_search_depth

查詢最佳化器進行的搜索的最大深度。如果值大於查詢中的關係數則查詢方案比較佳,但生成查詢執行方案需要的時間更長。值大於查詢中的關係數則返回的執行方案更快,但方案遠沒有最佳化。如果設置為0, 系統自動選擇合理的值。如果設置為查詢中使用的資料表的最大數加2,最佳化器轉換為MySQL 5.0.0(和以前的版本)中使用的算法並搜索。

·         pid_file

程序ID (PID)檔案的路徑名。可以用–pid-file選項設置該變數。

·         plugin_dir

插件目錄的路徑。在MySQL 5.1.2中加入了該變數。

·         port

伺服器幀聽TCP/IP連接所用端口。可以用–port選項設置該變數。

·         preload_buffer_size

重載索引時分配的緩衝區大小。

·         protocol_version

MySQL伺服器使用的客戶端/伺服器協議的版本。

·         query_alloc_block_size

為查詢分析和執行過程中建立的對象分配的內存塊大小。如果內存分段過程中遇到問題,將該變數增加一位會有幫助。

·         query_cache_limit

不要緩存大於該值的結果。預設值是1048576(1MB)。

·         query_cache_min_res_unit

查詢緩存分配的最小塊的大小(字節)。 預設值是4096(4KB)。關於該變數的調節訊息參見5.13.3節,「查詢高速緩衝配置」

·         query_cache_size

為緩存查詢結果分配的內存的數量。預設值是0,即禁用查詢緩存。請注意即使query_cache_type設置為0也將分配此數量的內存。詳細訊息參見5.13.3節,「查詢高速緩衝配置」

·         query_cache_type

設置查詢緩存類型。設置GLOBAL值可以設置後面的所有客戶端連接的類型。客戶端可以設置SESSION值以影響他們自己對查詢緩存的使用。下面的資料表顯示了可能的值:

選項 描述
0或OFF 不要緩存或查詢結果。請注意這樣不會取消分配的查詢緩存區。要想取消,您應將query_cache_size設置為0。
1或ON 緩存除了以SELECT SQL_NO_CACHE開頭的所有查詢結果。
2或DEMAND 只緩存以SELECT SQL_NO_CACHE開頭的查詢結果。

該變數預設設為ON。

·         query_cache_wlock_invalidate

一般情況,當客戶端對MyISAM資料表進行WRITE鎖定時,如果查詢結果位於查詢緩存中,則其它客戶端未被鎖定,可以對該資料表進行查詢。將該變數設置為1,則可以對資料表進行WRITE鎖定,使查詢緩存內所有對該資料表進行的查詢變得非法。這樣當鎖定生效時,可以強制其它試圖訪問資料表的客戶端來等待。

·         query_prealloc_size

用於查詢分析和執行的固定緩衝區的大小。在查詢之間該緩衝區不釋放。如果您執行複雜查詢,分配更大的query_prealloc_size值可以幫助提高性能,因為它可以降低查詢過程中伺服器分配內存的需求。

·         range_alloc_block_size

範圍最佳化時分配的塊的大小。

·         read_buffer_size

每個線程連續掃瞄時為掃瞄的每個資料表分配的緩衝區的大小(字節)。如果進行多次連續掃瞄,可能需要增加該值, 預設值為131072。

·         read_only

當變數對複製從伺服器設置為ON時,從伺服器不允許更新,除非通過從伺服器的線程或用戶擁有SUPER權限。可以確保從伺服器不接受客戶端的更新命令。

·         relay_log_purge

當不再需要中繼日誌時禁用或啟用自動清空中繼日誌。預設值是1(啟用)。

·         read_rnd_buffer_size

當排序後按排序後的順序讀取行時,則通過該緩衝區讀取行,避免搜索硬盤。將該變數設置為較大的值可以大大改進ORDER BY的性能。但是,這是為每個客戶端分配的緩衝區,因此您不應將全域變數設置為較大的值。相反,只為需要運行大查詢的客戶端更改會話變數。

·         secure_auth

如果用–secure-auth選項啟動了MySQL伺服器,它將阻塞有舊格式(4.1之前)密碼的所有帳號所發起的連接。在這種情況下,該變數的值為ON,否則為OFF。

如果您想要防止使用舊格式的密碼(致使網絡通信不安全),您應啟用該選項。

如果啟用該選項並且授權資料表為pre-4.1格式,伺服器啟動失敗並且會出現錯誤。參見A.2.3節,「客戶端不支援鑒定協議」

當用於客戶端選項時,如果伺服器需要該客戶端帳號的舊格式的密碼,則客戶端拒絕連接該伺服器。

·         server_id

–server-id選項的值。用於主複製伺服器和從複製伺服器。

·         shared_memory

(只用於Windows)伺服器是否允許共享內存連接。

·         shared_memory_base_name

(只用於Windows)說明伺服器是否允許共享內存連接,並為共享內存設置識別符。當在單台機器上運行多個MySQL實例時很有用。

·         skip_external_locking

如果mysqld使用外部鎖定,該值為OFF。

·         skip_networking

如果伺服器只允許本地(非TCP/IP)連接,該值為ON。在Unix中,本地連接使用Unix套接字檔案。在Windows中,本地連接使用命名管道或共享內存。在NetWare中,只支援TCP/IP連接,因此不要將該變數設置為ON。

·         skip_show_database

防止不具有SHOW DATABASES權限的人們使用SHOW DATABASES語句。如果您擔心用戶能夠看見屬於其它用戶的資料庫,這樣設置可以提高安全性。其效果取決於SHOW DATABASES權限:如果變數值為ON,只允許具有SHOW DATABASES權限的人們使用SHOW DATABASES語句,並且該語句將顯示所有資料庫名。如果值為OFF,允許所有用戶執行SHOW DATABASES,但只顯示用戶具有SHOW DATABASES或其它權限的資料庫的名稱。

·         slave_compressed_protocol

如果主、從伺服器均支援,確定是否使用從/主壓縮協議。

·         slave_load_tmpdir

從伺服器為複製LOAD DATA INFILE語句建立臨時檔案的目錄名。

·         slave_net_timeout

放棄讀操作前等待主/從連接的更多資料的等待秒數。

·         slave_skip_errors

從伺服器應跳過(忽視)的複製錯誤。

·         slave_transaction_retries

如果由於ofInnoDB死鎖或超過InnoDB的innodb_lock_wait_timeout或NDBCLUSTER的TransactionDeadlockDetectionTimeout或TransactionInactiveTimeout,複製從伺服器SQL線程未能執行交易,在提示錯誤並停止前它自動重複slave_transaction_retries次。 預設值是10。

·         slow_launch_time

如果建立線程的時間超過該秒數,伺服器增加Slow_launch_threads狀態變數。

·         socket

Unix平台:用於本地客戶端連接的套接字檔案。預設為/var/lib/mysql/mysql.sock。

Windows:用於本地客戶端連接的命名管道名。預設為mysql。

·         sort_buffer_size

每個排序線程分配的緩衝區的大小。增加該值可以加快ORDER BY或GROUP BY操作。參見A.4.4節,「MySQL將臨時檔案儲存在哪裡」

·         sql_mode

當前的伺服器SQL模式,可以動態設置。參見5.3.2節,「SQL伺服器模式」

·         sql_slave_skip_counter

從伺服器應跳過的來自主伺服器的事件數。

·         storage_engine

該變數是table_typeis的同義詞。在MySQL 5.1中,首選storage_engine。

·         sync_binlog

如果為正,當每個sync_binlog’th寫入該二進制日誌後,MySQL伺服器將它的二進制日誌同步到硬盤上(fdatasync())。請注意如果在autocommit模式,每執行一個語句向二進制日誌寫入一次,否則每個交易寫入一次。 預設值是0,不與硬盤同步。值為1是最安全的選擇,因為崩潰時,您最多丟掉二進制日誌中的一個語句/交易;但是,這是最慢的選擇(除非硬盤有電池備份緩存,從而使同步工作較快)。

·         sync_frm

如果該變數設為1,當建立非臨時資料表時它的.frm檔案被同步到硬盤上(fdatasync());這樣較慢但出現崩潰時較安全。 預設值為1。

·         system_time_zone

伺服器系統時區。當伺服器開始執行時,它繼承機器預設時區設置值,可以由運行伺服器的帳號或在啟動指令中進行修改。該值用來設置system_time_zone。典型情況用TZ環境變數來指定時區。還可以用mysqld_safe指令的–timez選項來指定。

·         table_cache

所有線程打開的資料表的數目。增大該值可以增加mysqld需要的檔案描述符的數量。您可以檢查Opened_tables狀態變數來檢查您是否需要增加資料表緩存。參見5.3.4節,「伺服器狀態變數」。如果Opened_tables值較大,並且多次執行FLUSH TABLES(只是強制關閉所有資料表並重新),則應增加table_cache變數的值。

關於資料表緩存的詳細訊息,參見7.4.9節,「MySQL如何打開和關閉資料表」

·         table_type

預設資料表類型(儲存引擎)。要想在伺服器啟動時設置資料表類型,使用–default-table-type選項。參見5.3.1節,「mysqld命令行選項」

·         thread_cache_size

伺服器應緩存多少線程以便重新使用。當客戶端中斷連接時,如果線程少於thread_cache_size,則客戶端的線程被放入緩存。當請求線程時如果允授權以從緩存中重新利用線程,並且只有當緩存空了時才會建立新線程。如果新連接很多,可以增加該變數以提高性能。(一般情況,如果線程執行得很好,性能提高不明顯)。檢查Connections和Threads_created狀態變數的差(詳見5.3.4節,「伺服器狀態變數」),您可以看見線程緩存的效率。

·         thread_concurrency

在Solaris中,mysqld用該值使用thr_setconcurrency()。該函數使應用程式向線程系統提供需要同時運行的期望的線程數目的提示。

·         thread_stack

每個線程的堆棧大小。用crash-me測試檢測出的許多限制取決於該值。 預設值足夠大,可以滿足普通操作。參見7.1.4節,「MySQL基準套件」

·         time_format

該變數為使用。

·         time_zone

當前的時區。初始值是’SYSTEM'(使用system_time_zone的值),但可以用–default-time-zone選項在伺服器啟動時顯式指定。

·         tmp_table_size

如果內存內的臨時資料表超過該值,MySQL自動將它轉換為硬盤上的MyISAM資料表。如果您執行許多高級GROUP BY查詢並且有大量內存,則可以增加tmp_table_size的值。

·         tmpdir

保存臨時檔案和臨時資料表的目錄。該變數可以設置為幾個路徑,按round-robin模式使用。在Unix中應該用冒號(『:』)間隔開路徑,在Windows、NetWare和OS/2中用分號(『;』)。

用來將負荷分散到幾個物理硬盤上。如果MySQL伺服器為複製從伺服器,您不應將tmpdir設置為指向基於內存的檔案系統上的目錄或當伺服器主機重啟時聲明的目錄。複製從伺服器需要部分臨時檔案來在機器重啟後仍可用,以便它可以複製臨時資料表或執行LOAD DATA INFILE操作。如果伺服器重啟時臨時檔案夾中的檔案丟失了,則複製失敗。但是,如果您使用MySQL 4.0.0或更新版本,您可以使用 slave_load_tmpdir變數設置從伺服器的臨時目錄。在這種情況下,從伺服器不再使用常規tmpdir,說明您可以將tmpdir設置到一個非固定位置。

·         transaction_alloc_block_size

為保存將保存到二進制日誌中的交易的查詢而分配的內存塊的大小(字節)。

·         transaction_prealloc_size

為transaction_alloc_blocks分配的固定緩衝區的大小(字節),在兩次查詢之間不會釋放。使該值足夠大,將所有查詢固定到一個交易中,可以避免多次malloc()使用。

·         tx_isolation

預設交易隔離級別。預設值為REPEATABLE-READ。

·         updatable_views_with_limit

該變數控制如果更新包含LIMIT子句,是否可以在當前資料表中使用不包含主關鍵字的視圖進行更新。(通常用GUI工具生成這類更新)。更新指UPDATE或DELETE語句。這兒主關鍵字指PRIMARY KEY,或一個UNIQUE索引,其中任何列不可以包含NULL。

該變數有兩個值:

o        1或YES:只發出警告(沒有錯誤消息)。這是 預設值。

o        0或NO:禁止更新。

·         version

伺服器版本號。

·         version_bdb

BDB儲存引擎版本。

·         version_comment

configure指令有一個–with-comment選項,當構建MySQL時可以進行註釋。該變數包含註釋值。

·         version_compile_machine

MySQL構建的機器或架構的類型。

·         version_compile_os

MySQL構建的作業系統的類型。

·         wait_timeout

伺服器關閉非交互連接之前等待活動的秒數。

線上程啟動時,根據全域wait_timeout值或全域interactive_timeout值初始化會話wait_timeout值,取決於客戶端類型(由mysql_real_connect()的連接選項CLIENT_INTERACTIVE定義)。又見interactive_timeout。

5.3.3.1. 动态系统变量

許多伺服器系統變數是動態的,可以使用SET GLOBAL或SET SESSION在運行時設置。您還可以使用SELECT獲得它們的值。參見9.4節,「系統變數」

下面的資料表列出了所有動態系統變數。最後1欄說明每個變數是否適用GLOBAL或SESSION(或二者)。

變數名 值型態 型態
autocommit boolean SESSION
big_tables boolean SESSION
binlog_cache_size numeric GLOBAL
bulk_insert_buffer_size numeric GLOBAL | SESSION
character_set_client string GLOBAL | SESSION
character_set_connection string GLOBAL | SESSION
character_set_results string GLOBAL | SESSION
character_set_server string GLOBAL | SESSION
collation_connection string GLOBAL | SESSION
collation_server string GLOBAL | SESSION
completion_type numeric GLOBAL | SESSION
concurrent_insert boolean GLOBAL
connect_timeout numeric GLOBAL
convert_character_set string GLOBAL | SESSION
default_week_format numeric GLOBAL | SESSION
delay_key_write OFF | ON | ALL GLOBAL
delayed_insert_limit numeric GLOBAL
delayed_insert_timeout numeric GLOBAL
delayed_queue_size numeric GLOBAL
div_precision_increment numeric GLOBAL | SESSION
engine_condition_pushdown boolean GLOBAL | SESSION
error_count numeric SESSION
expire_logs_days numeric GLOBAL
flush boolean GLOBAL
flush_time numeric GLOBAL
foreign_key_checks boolean SESSION
ft_boolean_syntax numeric GLOBAL
group_concat_max_len numeric GLOBAL | SESSION
identity numeric SESSION
innodb_autoextend_increment numeric GLOBAL
innodb_concurrency_tickets numeric GLOBAL
innodb_max_dirty_pages_pct numeric GLOBAL
innodb_max_purge_lag numeric GLOBAL
innodb_support_xa boolean GLOBAL | SESSION
innodb_sync_spin_loops numeric GLOBAL
innodb_table_locks boolean GLOBAL | SESSION
innodb_thread_concurrency numeric GLOBAL
innodb_thread_sleep_delay numeric GLOBAL
insert_id boolean SESSION
interactive_timeout numeric GLOBAL | SESSION
join_buffer_size numeric GLOBAL | SESSION
key_buffer_size numeric GLOBAL
last_insert_id numeric SESSION
local_infile boolean GLOBAL
log_warnings numeric GLOBAL
long_query_time numeric GLOBAL | SESSION
low_priority_updates boolean GLOBAL | SESSION
max_allowed_packet numeric GLOBAL | SESSION
max_binlog_cache_size numeric GLOBAL
max_binlog_size numeric GLOBAL
max_connect_errors numeric GLOBAL
max_connections numeric GLOBAL
max_delayed_threads numeric GLOBAL
max_error_count numeric GLOBAL | SESSION
max_heap_table_size numeric GLOBAL | SESSION
max_insert_delayed_threads numeric GLOBAL
max_join_size numeric GLOBAL | SESSION
max_relay_log_size numeric GLOBAL
max_seeks_for_key numeric GLOBAL | SESSION
max_sort_length numeric GLOBAL | SESSION
max_tmp_tables numeric GLOBAL | SESSION
max_user_connections numeric GLOBAL
max_write_lock_count numeric GLOBAL
myisam_stats_method enum GLOBAL | SESSION
multi_read_range numeric GLOBAL | SESSION
myisam_data_pointer_size numeric GLOBAL
log_bin_trust_routine_creators boolean GLOBAL
myisam_max_sort_file_size numeric GLOBAL | SESSION
myisam_repair_threads numeric GLOBAL | SESSION
myisam_sort_buffer_size numeric GLOBAL | SESSION
net_buffer_length numeric GLOBAL | SESSION
net_read_timeout numeric GLOBAL | SESSION
net_retry_count numeric GLOBAL | SESSION
net_write_timeout numeric GLOBAL | SESSION
old_passwords numeric GLOBAL | SESSION
optimizer_prune_level numeric GLOBAL | SESSION
optimizer_search_depth numeric GLOBAL | SESSION
preload_buffer_size numeric GLOBAL | SESSION
query_alloc_block_size numeric GLOBAL | SESSION
query_cache_limit numeric GLOBAL
query_cache_size numeric GLOBAL
query_cache_type enumeration GLOBAL | SESSION
query_cache_wlock_invalidate boolean GLOBAL | SESSION
query_prealloc_size numeric GLOBAL | SESSION
range_alloc_block_size numeric GLOBAL | SESSION
read_buffer_size numeric GLOBAL | SESSION
read_only numeric GLOBAL
read_rnd_buffer_size numeric GLOBAL | SESSION
rpl_recovery_rank numeric GLOBAL
safe_show_database boolean GLOBAL
secure_auth boolean GLOBAL
server_id numeric GLOBAL
slave_compressed_protocol boolean GLOBAL
slave_net_timeout numeric GLOBAL
slave_transaction_retries numeric GLOBAL
slow_launch_time numeric GLOBAL
sort_buffer_size numeric GLOBAL | SESSION
sql_auto_is_null boolean SESSION
sql_big_selects boolean SESSION
sql_big_tables boolean SESSION
sql_buffer_result boolean SESSION
sql_log_bin boolean SESSION
sql_log_off boolean SESSION
sql_log_update boolean SESSION
sql_low_priority_updates boolean GLOBAL | SESSION
sql_max_join_size numeric GLOBAL | SESSION
sql_mode enumeration GLOBAL | SESSION
sql_notes boolean SESSION
sql_quote_show_create boolean SESSION
sql_safe_updates boolean SESSION
sql_select_limit numeric SESSION
sql_slave_skip_counter numeric GLOBAL
updatable_views_with_limit enumeration GLOBAL | SESSION
sql_warnings boolean SESSION
sync_binlog numeric GLOBAL
sync_frm boolean GLOBAL
storage_engine enumeration GLOBAL | SESSION
table_cache numeric GLOBAL
table_type enumeration GLOBAL | SESSION
thread_cache_size numeric GLOBAL
time_zone string GLOBAL | SESSION
timestamp boolean SESSION
tmp_table_size enumeration GLOBAL | SESSION
transaction_alloc_block_size numeric GLOBAL | SESSION
transaction_prealloc_size numeric GLOBAL | SESSION
tx_isolation enumeration GLOBAL | SESSION
unique_checks boolean SESSION
wait_timeout numeric GLOBAL | SESSION
warning_count numeric SESSION

標記為string的變數採用字串值。標記為numeric的變數採用數字值。標記為boolean的變數可以設置為0、1、ON或OFF。標記為enumeration的變數一般情況應設置為該變數的某個可用值,但還可以設置為對應期望的枚舉值的數字。對於枚舉系統變數,第1個枚舉值應對應0。這不同於ENUM列,第1個枚舉值對應1。

當ㄚ琪讀完這裡時,突然有點靈感要看看自己的MySQL伺服器設定有沒有最佳化,用phpmyadmin還可以看到下面這樣的警告訊息,看來有得調整了。

Qcache_lowmem_prunes 34.0 k 爲快取新的查詢而被刪除的已快取查詢的個數,由最近最少使用算法 (LRU) 確定應刪除哪個已快取的查詢。該資訊可幫助您調整查詢快取大小

感謝你看到這裡,很快就可以離開了,但最好的獎勵行動就是按一下幫我分享或留言,感恩喔~

點我分享到Facebook

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *