適用於 MySQL 的 Azure 資料庫中的伺服器參數
適用於: 適用於 MySQL 的 Azure 資料庫 - 單一伺服器
重要
適用於 MySQL 的 Azure 資料庫單一伺服器位於淘汰路徑上。 強烈建議您升級至適用於 MySQL 的 Azure 資料庫彈性伺服器。 如需移轉至適用於 MySQL 的 Azure 資料庫彈性伺服器的詳細資訊,請參閱 適用於 MySQL 的 Azure 資料庫單一伺服器會發生了什麽狀況?
本文提供在適用於 MySQL 的 Azure 資料庫中設定伺服器參數的考量和指導方針。
什麼是伺服器參數?
MySQL 引擎提供許多不同的伺服器變數和參數,讓您用來設定和調整引擎行為。 有些參數可以在執行階段期間動態設定,而其他參數則是靜態的,並且需要伺服器重新啟動才能套用。
適用於 MySQL 的 Azure 資料庫會使用 Azure 入口網站、Azure CLI 和 PowerShell 來公開變更各種 MySQL 伺服器參數值的功能,以達到您的工作負載需求。
可設定的伺服器參數
支援的伺服器參數清單會不斷成長。 在 Azure 入口網站中,使用 [伺服器參數] 索引標籤來檢視完整清單並設定伺服器參數值。
請參閱下列各節,以深入了解數個經常更新的伺服器參數的限制。 這些限制取決於伺服器的定價層和虛擬核心。
執行緒集區
MySQL 通常會為每個用戶端連線指派執行緒。 隨著並行使用者數目的增長,效能會相應下降。 許多作用中執行緒可能會大幅影響效能,因為 CPU 快取的內容切換增加、執行緒爭用,以及不正確的位置。
執行緒集區是一項伺服器端功能,並且與連線共用不同,藉由引進背景工作執行緒的動態集區,將效能最大化。 您可以使用此功能來限制伺服器上執行的作用中執行緒數目,並將執行緒流失降至最低。 這有助於確保連線高載不會造成伺服器用盡資源或記憶體。 執行緒集區對於簡短查詢和 CPU 密集工作負載 (例如 OLTP 工作負載) 最有效率。
如需詳細資訊,請參閱適用於 MySQL 的 Azure 資料庫中的執行緒集區簡介。
注意
MySQL 5.6 不支援執行緒集區。
設定執行緒集區
若要啟用執行緒集區,請將 thread_handling
伺服器參數更新為 pool-of-threads
。 依預設,此參數會設定為 one-thread-per-connection
,這表示 MySQL 會為每個新連線建立新的執行緒。 這是靜態參數,並且需要將伺服器重新啟動。
您也可以藉由設定下列伺服器參數,設定集區中的執行緒數目上限和下限:
thread_pool_max_threads
: 此值會限制集區中的執行緒數目。thread_pool_min_threads
: 此值會設定即使關閉連線之後,仍會保留的執行緒數目。
若要改善執行緒集區上簡短查詢的效能問題,您可以啟用批次執行。 執行緒在執行查詢之後不會立即返回執行緒集區,而是會短暫保持作用中,以等候透過此連線的下一個查詢。 然後執行緒會快速執行查詢,並在完成時,執行緒會等候下一個查詢。 此程序會繼續執行,直到耗費的整體時間超過某個閾值為止。
您可以使用下列伺服器參數來判斷批次執行的行為:
thread_pool_batch_wait_timeout
:此值會指定執行緒等候另一個查詢處理的時間。thread_pool_batch_max_time
:此值會決定執行緒將重複查詢執行週期,並等候下一個查詢的時間上限。
重要
在測試執行緒集區之前,請勿在生產環境中開啟執行緒集區。
log_bin_trust_function_creators
在適用於 MySQL 的 Azure 資料庫中,一律會啟用二進位記錄 (log_bin
參數設定為 ON
)。 如果您想要使用觸發程序,您會收到類似下列的錯誤: 您沒有 SUPER 權限且二進位記錄已啟用 (您可能會想使用較不安全的 log_bin_trust_function_creators
變數)。
二進位記錄格式一律為 ROW,而對伺服器的所有連線一律會使用以資料列為基礎的二進位記錄。 以資料列為基礎的二進位記錄有助於保有安全性,而且二進位記錄不會中斷,因此您可以安全地將 log_bin_trust_function_creators
設定為 TRUE
。
innodb_buffer_pool_size
請檢閱 MySQL 文件 \(英文\),以深入了解此參數。
伺服器採用一般用途儲存體 v1 (最多支援 4 TB)
定價層 | vCore(s) | 預設值 (位元組) | 最小值 (位元組) | 最大值 (位元組) |
---|---|---|---|---|
基本 | 1 | 872415232 | 134217728 | 872415232 |
基本 | 2 | 2684354560 | 134217728 | 2684354560 |
一般用途 | 2 | 3758096384 | 134217728 | 3758096384 |
一般用途 | 4 | 8053063680 | 134217728 | 8053063680 |
一般用途 | 8 | 16106127360 | 134217728 | 16106127360 |
一般用途 | 16 | 32749125632 | 134217728 | 32749125632 |
一般用途 | 32 | 66035122176 | 134217728 | 66035122176 |
一般用途 | 64 | 132070244352 | 134217728 | 132070244352 |
記憶體最佳化 | 2 | 7516192768 | 134217728 | 7516192768 |
記憶體最佳化 | 4 | 16106127360 | 134217728 | 16106127360 |
記憶體最佳化 | 8 | 32212254720 | 134217728 | 32212254720 |
記憶體最佳化 | 16 | 65498251264 | 134217728 | 65498251264 |
記憶體最佳化 | 32 | 132070244352 | 134217728 | 132070244352 |
伺服器採用一般用途儲存體 v2 (最多支援 16 TB)
定價層 | vCore(s) | 預設值 (位元組) | 最小值 (位元組) | 最大值 (位元組) |
---|---|---|---|---|
基本 | 1 | 872415232 | 134217728 | 872415232 |
基本 | 2 | 2684354560 | 134217728 | 2684354560 |
一般用途 | 2 | 7516192768 | 134217728 | 7516192768 |
一般用途 | 4 | 16106127360 | 134217728 | 16106127360 |
一般用途 | 8 | 32212254720 | 134217728 | 32212254720 |
一般用途 | 16 | 65498251264 | 134217728 | 65498251264 |
一般用途 | 32 | 132070244352 | 134217728 | 132070244352 |
一般用途 | 64 | 264140488704 | 134217728 | 264140488704 |
記憶體最佳化 | 2 | 15032385536 | 134217728 | 15032385536 |
記憶體最佳化 | 4 | 32212254720 | 134217728 | 32212254720 |
記憶體最佳化 | 8 | 64424509440 | 134217728 | 64424509440 |
記憶體最佳化 | 16 | 130996502528 | 134217728 | 130996502528 |
記憶體最佳化 | 32 | 264140488704 | 134217728 | 264140488704 |
innodb_file_per_table
MySQL 會根據在建立資料表期間所提供的設定,將 InnoDB
資料表儲存在不同的資料表空間中。 系統資料表空間 是 InnoDB
資料字典的儲存區域。 file-per-table 資料表空間 包含單一 InnoDB
資料表的資料和索引,且會獨自儲存在檔案系統的資料檔中。
您可以使用 innodb_file_per_table
伺服器參數來控制此行為。 將 innodb_file_per_table
設定為 OFF
會導致 InnoDB
在系統資料表空間中建立資料表。 否則,InnoDB
會在 file-per-table 資料表空間中建立資料表。
注意
您只能在一般用途儲存體 v2 和一般用途儲存體 v1 的一般用途和記憶體最佳化定價層中更新 innodb_file_per_table
。
適用於 MySQL 的 Azure 資料庫在一般用途儲存體 v2 上的單一資料檔案中最大支援 4 TB。 如果資料庫大小大於 4 TB,則應該在 innodb_file_per_table 資料表空間中建立資料表。 如果單一資料表大小大於 4 TB,則應該使用分割區資料表。
join_buffer_size
請檢閱 MySQL 文件 \(英文\),以深入了解此參數。
定價層 | vCore(s) | 預設值 (位元組) | 最小值 (位元組) | 最大值 (位元組) |
---|---|---|---|---|
基本 | 1 | 無法在基本層中設定 | N/A | N/A |
基本 | 2 | 無法在基本層中設定 | N/A | N/A |
一般用途 | 2 | 262144 | 128 | 268435455 |
一般用途 | 4 | 262144 | 128 | 536870912 |
一般用途 | 8 | 262144 | 128 | 1073741824 |
一般用途 | 16 | 262144 | 128 | 2147483648 |
一般用途 | 32 | 262144 | 128 | 4294967295 |
一般用途 | 64 | 262144 | 128 | 4294967295 |
記憶體最佳化 | 2 | 262144 | 128 | 536870912 |
記憶體最佳化 | 4 | 262144 | 128 | 1073741824 |
記憶體最佳化 | 8 | 262144 | 128 | 2147483648 |
記憶體最佳化 | 16 | 262144 | 128 | 4294967295 |
記憶體最佳化 | 32 | 262144 | 128 | 4294967295 |
max_connections
定價層 | vCore(s) | 預設值 | 最小值 | 最大值 |
---|---|---|---|---|
基本 | 1 | 50 | 10 | 50 |
基本 | 2 | 100 | 10 | 100 |
一般用途 | 2 | 300 | 10 | 600 |
一般用途 | 4 | 625 | 10 | 1250 |
一般用途 | 8 | 1250 | 10 | 2500 |
一般用途 | 16 | 2500 | 10 | 5000 |
一般用途 | 32 | 5000 | 10 | 10000 |
一般用途 | 64 | 10000 | 10 | 20000 |
記憶體最佳化 | 2 | 625 | 10 | 1250 |
記憶體最佳化 | 4 | 1250 | 10 | 2500 |
記憶體最佳化 | 8 | 2500 | 10 | 5000 |
記憶體最佳化 | 16 | 5000 | 10 | 10000 |
記憶體最佳化 | 32 | 10000 | 10 | 20000 |
當連線數目超過限制時,您可能會收到錯誤。
提示
若要有效率地管理連線,最好使用連線共用器,例如 ProxySQL。 若要了解如何設定 ProxySQL,請參閱部落格文章在適用於 MySQL 的 Azure 資料庫中使用 ProxySQL 負載平衡讀取複本。 請注意,ProxySQL 是開放原始碼社群工具。 Microsoft 會盡力提供支援。
max_heap_table_size
請檢閱 MySQL 文件 \(英文\),以深入了解此參數。
定價層 | vCore(s) | 預設值 (位元組) | 最小值 (位元組) | 最大值 (位元組) |
---|---|---|---|---|
基本 | 1 | 無法在基本層中設定 | N/A | N/A |
基本 | 2 | 無法在基本層中設定 | N/A | N/A |
一般用途 | 2 | 16777216 | 16384 | 268435455 |
一般用途 | 4 | 16777216 | 16384 | 536870912 |
一般用途 | 8 | 16777216 | 16384 | 1073741824 |
一般用途 | 16 | 16777216 | 16384 | 2147483648 |
一般用途 | 32 | 16777216 | 16384 | 4294967295 |
一般用途 | 64 | 16777216 | 16384 | 4294967295 |
記憶體最佳化 | 2 | 16777216 | 16384 | 536870912 |
記憶體最佳化 | 4 | 16777216 | 16384 | 1073741824 |
記憶體最佳化 | 8 | 16777216 | 16384 | 2147483648 |
記憶體最佳化 | 16 | 16777216 | 16384 | 4294967295 |
記憶體最佳化 | 32 | 16777216 | 16384 | 4294967295 |
query_cache_size
查詢快取依預設為關閉。 若要啟用查詢快取,請設定 query_cache_type
參數。
請檢閱 MySQL 文件 \(英文\),以深入了解此參數。
注意
查詢快取從 MySQL 5.7.20 開始就已取代,且已在 MySQL 8.0 中移除。
定價層 | vCore(s) | 預設值 (位元組) | 最小值 (位元組) | 最大值 |
---|---|---|---|---|
基本 | 1 | 無法在基本層中設定 | N/A | N/A |
基本 | 2 | 無法在基本層中設定 | N/A | N/A |
一般用途 | 2 | 0 | 0 | 16777216 |
一般用途 | 4 | 0 | 0 | 33554432 |
一般用途 | 8 | 0 | 0 | 67108864 |
一般用途 | 16 | 0 | 0 | 134217728 |
一般用途 | 32 | 0 | 0 | 134217728 |
一般用途 | 64 | 0 | 0 | 134217728 |
記憶體最佳化 | 2 | 0 | 0 | 33554432 |
記憶體最佳化 | 4 | 0 | 0 | 67108864 |
記憶體最佳化 | 8 | 0 | 0 | 134217728 |
記憶體最佳化 | 16 | 0 | 0 | 134217728 |
記憶體最佳化 | 32 | 0 | 0 | 134217728 |
lower_case_table_names
lower_case_table_name
參數預設設定為 1,您可以在 MySQL 5.6 和 MySQL 5.7 中更新此參數。
請檢閱 MySQL 文件 \(英文\),以深入了解此參數。
注意
在 MySQL 8.0 中,lower_case_table_name
預設設定為 1,而且您無法變更它。
innodb_strict_mode
如果您收到類似 Row size too large (> 8126)
的錯誤,請考慮關閉 innodb_strict_mode
參數。 您無法在伺服器層級全域修改 innodb_strict_mode
。 如果資料列資料大小大於 8K,則會截斷資料,而不會發生錯誤通知,導致潛在的資料遺失。 最好修改結構描述以符合頁面大小限制。
您可以使用 init_connect
在工作階段層級設定此參數。 若要在工作階段層級設定 innodb_strict_mode
,請參閱設定參數未列出。
注意
如果您有讀取複本伺服器,在來源伺服器上的工作階段層級將 innodb_strict_mode
設定為 OFF
會中斷複寫。 如果您有讀取複本,建議您將參數保持設定為 ON
。
sort_buffer_size
請檢閱 MySQL 文件 \(英文\),以深入了解此參數。
定價層 | vCore(s) | 預設值 (位元組) | 最小值 (位元組) | 最大值 (位元組) |
---|---|---|---|---|
基本 | 1 | 無法在基本層中設定 | N/A | N/A |
基本 | 2 | 無法在基本層中設定 | N/A | N/A |
一般用途 | 2 | 524288 | 32768 | 4194304 |
一般用途 | 4 | 524288 | 32768 | 8388608 |
一般用途 | 8 | 524288 | 32768 | 16777216 |
一般用途 | 16 | 524288 | 32768 | 33554432 |
一般用途 | 32 | 524288 | 32768 | 33554432 |
一般用途 | 64 | 524288 | 32768 | 33554432 |
記憶體最佳化 | 2 | 524288 | 32768 | 8388608 |
記憶體最佳化 | 4 | 524288 | 32768 | 16777216 |
記憶體最佳化 | 8 | 524288 | 32768 | 33554432 |
記憶體最佳化 | 16 | 524288 | 32768 | 33554432 |
記憶體最佳化 | 32 | 524288 | 32768 | 33554432 |
tmp_table_size
請檢閱 MySQL 文件 \(英文\),以深入了解此參數。
定價層 | vCore(s) | 預設值 (位元組) | 最小值 (位元組) | 最大值 (位元組) |
---|---|---|---|---|
基本 | 1 | 無法在基本層中設定 | N/A | N/A |
基本 | 2 | 無法在基本層中設定 | N/A | N/A |
一般用途 | 2 | 16777216 | 1024 | 67108864 |
一般用途 | 4 | 16777216 | 1024 | 134217728 |
一般用途 | 8 | 16777216 | 1024 | 268435456 |
一般用途 | 16 | 16777216 | 1024 | 536870912 |
一般用途 | 32 | 16777216 | 1024 | 1073741824 |
一般用途 | 64 | 16777216 | 1024 | 1073741824 |
記憶體最佳化 | 2 | 16777216 | 1024 | 134217728 |
記憶體最佳化 | 4 | 16777216 | 1024 | 268435456 |
記憶體最佳化 | 8 | 16777216 | 1024 | 536870912 |
記憶體最佳化 | 16 | 16777216 | 1024 | 1073741824 |
記憶體最佳化 | 32 | 16777216 | 1024 | 1073741824 |
InnoDB 緩衝集區暖機
重新啟動適用於 MySQL 的 Azure 資料庫之後,會載入磁碟中的資料頁,因為會查詢資料表。 這會導致第一次執行查詢的延遲和效能變慢。 對於對延遲敏感的工作負載,您可能會覺得這樣的效能變慢無法接受。
您可以使用 InnoDB
緩衝集區暖機來縮短暖機期間。 此程序會在重新啟動之前重新載入緩衝集區中的磁碟頁面,而不是等候 DML 或 SELECT 作業來存取對應的資料列。 如需詳細資訊,請參閱 InnoDB 緩衝集區伺服器參數。
但是,改善的效能需要花費伺服器較長的啟動時間。 啟用此參數時,伺服器啟動和重新啟動時間應該會根據伺服器上佈建的 IOPS 而增加。 最好測試和監視重新啟動時間,以確保啟動或重新啟動效能可接受,因為伺服器在該時間無法使用。 佈建的 IOPS 小於 1000 IOPS 時 (換句話說,佈建的儲存體小於 335 GB),請勿使用此參數。
若要在伺服器關機時儲存緩衝集區的狀態,請將伺服器參數 innodb_buffer_pool_dump_at_shutdown
設定為 ON
。 同樣地,請將伺服器參數 innodb_buffer_pool_load_at_startup
設定為 ON
,以在伺服器啟動時還原緩衝集區狀態。 您可以降低和微調伺服器參數 innodb_buffer_pool_dump_pct
的值,來控制對啟動或重新啟動時間的影響。 根據預設,此參數設定為 25
。
注意
InnoDB
緩衝集區暖機參數僅在最多 16 TB 儲存體的一般用途儲存體伺服器中支援。 如需詳細資訊,請參閱適用於 MySQL 的 Azure 資料庫儲存體選項。
time_zone
初始部署時,執行適用於 MySQL 的 Azure 資料庫的伺服器會包含時區資訊的系統資料表,但不會填入這些資料表。 您可以從 MySQL 命令列或 MySQL Workbench 等工具呼叫 mysql.az_load_timezone
預存程序,以填入資料表。 如需如何呼叫預存程序並設定全域或工作階段層級時區的資訊,請參閱使用時區參數 (Azure 入口網站) 或使用時區參數 (Azure CLI)。
binlog_expire_logs_seconds
在適用於 MySQL 的 Azure 資料庫中,此參數會指定服務在清除二進位記錄檔之前等候的秒數。
二進位記錄檔包含描述資料庫變更的事件,例如資料表建立作業或對資料表資料的變更。 它也包含可能會進行變更的陳述式的事件。 二進位記錄檔主要用於兩個用途:複寫和資料復原作業。
一般而言,只要控制代碼沒有服務、備份或複本集,就會清除二進位記錄檔。 如果有多個複本,二進位記錄檔會等候最慢的複本讀取變更,然後再清除。 如果您想要讓二進位記錄檔保存較長的時間,您可以設定 binlog_expire_logs_seconds
參數。 如果您將 binlog_expire_logs_seconds
設定為 0
,這是預設值,則會在釋放二進位記錄檔的控制代碼時立即清除。 如果您將 binlog_expire_logs_seconds
設定為大於 0,則二進位記錄檔只會在該期間之後清除。
針對適用於 MySQL 的 Azure 資料庫,備份和讀取二進位檔案的複本清除等受控功能會在內部處理。 從適用於 MySQL 的 Azure 資料庫服務複寫資料時,必須在主要複本中設定此參數,以避免在複本從主要複本讀取變更之前清除二進位記錄檔。 如果您將 binlog_expire_logs_seconds
設定為較高的值,則二進位記錄檔不會很快被清除。 這可能會導致儲存體計費增加。
event_scheduler
在適用於 MySQL 的 Azure 資料庫中,event_schedule
伺服器參數會管理建立、排程和執行事件,也就是根據排程執行的工作,並由特殊事件排程器執行緒執行。 當 event_scheduler
參數設定為 [開啟] 時,事件排程器執行緒會在 SHOW PROCESSLIST 的輸出中列為精靈程序。 您可以使用下列 SQL 語法來建立和排程事件:
CREATE EVENT <event name>
ON SCHEDULE EVERY _ MINUTE / HOUR / DAY
STARTS TIMESTAMP / CURRENT_TIMESTAMP
ENDS TIMESTAMP / CURRENT_TIMESTAMP + INTERVAL 1 MINUTE / HOUR / DAY
COMMENT ‘<comment>’
DO
<your statement>;
注意
如需建立事件的詳細資訊,請參閱此處的 MySQL Event Scheduler 文件:
設定 event_scheduler 伺服器參數
下列案例會說明在適用於 MySQL 的 Azure 資料庫中使用 event_scheduler
參數的一種方式。 若要示範案例,請考慮下列範例,簡單的資料表:
mysql> describe tab1;
+-----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| CreatedAt | timestamp | YES | | NULL | |
| CreatedBy | varchar(16) | YES | | NULL | |
+-----------+-------------+------+-----+---------+----------------+
3 rows in set (0.23 sec)
若要在適用於 MySQL 的 Azure 資料庫中設定 event_scheduler
伺服器參數,請執行下列步驟:
在 Azure 入口網站中,瀏覽至您的伺服器,然後在 [設定] 底下選取 [伺服器參數]。
在 [伺服器參數] 刀鋒視窗上,搜尋
event_scheduler
,在 [VALUE] 下拉式清單中,選取 [ON],然後選取 [儲存]。注意
動態伺服器參數設定變更將會部署,而不會重新啟動。
然後,若要建立事件,連線到 MySQL 伺服器,然後執行下列 SQL 命令:
CREATE EVENT test_event_01 ON SCHEDULE EVERY 1 MINUTE STARTS CURRENT_TIMESTAMP ENDS CURRENT_TIMESTAMP + INTERVAL 1 HOUR COMMENT ‘Inserting record into the table tab1 with current timestamp’ DO INSERT INTO tab1(id,createdAt,createdBy) VALUES('',NOW(),CURRENT_USER());
若要檢視 Event Scheduler 詳細資料,請執行下列 SQL 陳述式:
SHOW EVENTS;
會出現下列輸出:
mysql> show events; +-----+---------------+-------------+-----------+-----------+------------+----------------+----------------+---------------------+---------------------+---------+------------+----------------------+----------------------+--------------------+ | Db | Name | Definer | Time zone | Type | Execute at | Interval value | Interval field | Starts | Ends | Status | Originator | character_set_client | collation_connection | Database Collation | +-----+---------------+-------------+-----------+-----------+------------+----------------+----------------+---------------------+---------------------+---------+------------+----------------------+----------------------+--------------------+ | db1 | test_event_01 | azureuser@% | SYSTEM | RECURRING | NULL | 1 | MINUTE | 2023-04-05 14:47:04 | 2023-04-05 15:47:04 | ENABLED | 3221153808 | latin1 | latin1_swedish_ci | latin1_swedish_ci | +-----+---------------+-------------+-----------+-----------+------------+----------------+----------------+---------------------+---------------------+---------+------------+----------------------+----------------------+--------------------+ 1 row in set (0.23 sec)
幾分鐘後,查詢資料表中的資料列,以根據您設定的
event_scheduler
參數,開始檢視每分鐘插入的資料列:mysql> select * from tab1; +----+---------------------+-------------+ | id | CreatedAt | CreatedBy | +----+---------------------+-------------+ | 1 | 2023-04-05 14:47:04 | azureuser@% | | 2 | 2023-04-05 14:48:04 | azureuser@% | | 3 | 2023-04-05 14:49:04 | azureuser@% | | 4 | 2023-04-05 14:50:04 | azureuser@% | +----+---------------------+-------------+ 4 rows in set (0.23 sec)
一小時後,在資料表上執行 Select 陳述式,以檢視在案例中設定
event_scheduler
時,每分鐘插入資料表之值的完整結果。mysql> select * from tab1; +----+---------------------+-------------+ | id | CreatedAt | CreatedBy | +----+---------------------+-------------+ | 1 | 2023-04-05 14:47:04 | azureuser@% | | 2 | 2023-04-05 14:48:04 | azureuser@% | | 3 | 2023-04-05 14:49:04 | azureuser@% | | 4 | 2023-04-05 14:50:04 | azureuser@% | | 5 | 2023-04-05 14:51:04 | azureuser@% | | 6 | 2023-04-05 14:52:04 | azureuser@% | ..< 50 lines trimmed to compact output >.. | 56 | 2023-04-05 15:42:04 | azureuser@% | | 57 | 2023-04-05 15:43:04 | azureuser@% | | 58 | 2023-04-05 15:44:04 | azureuser@% | | 59 | 2023-04-05 15:45:04 | azureuser@% | | 60 | 2023-04-05 15:46:04 | azureuser@% | | 61 | 2023-04-05 15:47:04 | azureuser@% | +----+---------------------+-------------+ 61 rows in set (0.23 sec)
其他案例
您可以根據特定案例的需求來設定事件。 排程 SQL 陳述式以不同時間間隔執行的一些類似範例如下。
立即執行 SQL 陳述式並每天重複一次,沒有結束時間
CREATE EVENT <event name>
ON SCHEDULE
EVERY 1 DAY
STARTS (TIMESTAMP(CURRENT_DATE) + INTERVAL 1 DAY + INTERVAL 1 HOUR)
COMMENT 'Comment'
DO
<your statement>;
每小時執行 SQL 陳述式,沒有結束時間
CREATE EVENT <event name>
ON SCHEDULE
EVERY 1 HOUR
COMMENT 'Comment'
DO
<your statement>;
每天執行 SQL 陳述式,沒有結束時間
CREATE EVENT <event name>
ON SCHEDULE
EVERY 1 DAY
STARTS str_to_date( date_format(now(), '%Y%m%d 0200'), '%Y%m%d %H%i' ) + INTERVAL 1 DAY
COMMENT 'Comment'
DO
<your statement>;
無法設定的伺服器參數
下列伺服器參數無法在服務中設定:
參數 | 固定值 |
---|---|
innodb_file_per_table 在基本層中 |
OFF |
innodb_flush_log_at_trx_commit |
1 |
sync_binlog |
1 |
innodb_log_file_size |
256 MB |
innodb_log_files_in_group |
2 |
此處未列出的其他變數會設定為預設的 MySQL 值。 請參閱版本 8.0、5.7 和 5.6 的 MySQL 文件。