文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  MySQL 原始碼組態選項

2.8.7 MySQL 原始碼組態選項

CMake 程式在您組態 MySQL 原始碼發行版時,提供相當大的控制權。一般而言,您會使用 CMake 命令列上的選項來執行此操作。如需 CMake 支援的選項相關資訊,請在最上層原始碼目錄中執行下列任一命令

$> cmake . -LH

$> ccmake .

您也可以使用特定的環境變數來影響 CMake。請參閱第 6.9 節「環境變數」

對於布林值選項,值可以指定為 1ON 來啟用選項,或是指定為 0OFF 來停用選項。

許多選項會組態編譯時預設值,這些值可在伺服器啟動時覆寫。例如,組態預設安裝基本目錄位置、TCP/IP 連接埠號碼與 Unix Socket 檔案的 CMAKE_INSTALL_PREFIXMYSQL_TCP_PORTMYSQL_UNIX_ADDR 選項,可以在伺服器啟動時使用 --basedir--port--socket 選項來變更 mysqld。如果適用,組態選項描述會指出對應的 mysqld 啟動選項。

下列各節提供關於 CMake 選項的詳細資訊。

CMake 選項參考

下表顯示可用的 CMake 選項。在 預設 欄中,PREFIX 代表 CMAKE_INSTALL_PREFIX 選項的值,此選項指定安裝基本目錄。此值會用作數個安裝子目錄的父系位置。

表 2.13 MySQL 原始碼組態選項參考 (CMake)

格式 描述 預設
ADD_GDB_INDEX 是否要在二進位檔中啟用 .gdb_index 區段的產生
BUILD_CONFIG 使用與官方版本相同的建置選項
BUNDLE_RUNTIME_LIBRARIES 將執行階段程式庫與適用於 Windows 的伺服器 MSI 和 Zip 套件組合 OFF
CMAKE_BUILD_TYPE 要產生的建置類型 RelWithDebInfo
CMAKE_CXX_FLAGS C++ 編譯器的旗標
CMAKE_C_FLAGS C 編譯器的旗標
CMAKE_INSTALL_PREFIX 安裝基本目錄 /usr/local/mysql
COMPILATION_COMMENT 關於編譯環境的註解
COMPILATION_COMMENT_SERVER 關於由 mysqld 使用的編譯環境的註解
COMPRESS_DEBUG_SECTIONS 壓縮二進位執行檔的除錯區段 OFF
CPACK_MONOLITHIC_INSTALL 套件建置是否產生單一檔案 OFF
DEFAULT_CHARSET 預設伺服器字元集 utf8mb4
DEFAULT_COLLATION 預設伺服器定序 utf8mb4_0900_ai_ci
DISABLE_PSI_COND 排除效能結構描述條件檢測 OFF
DISABLE_PSI_DATA_LOCK 排除效能結構描述資料鎖定檢測 OFF
DISABLE_PSI_ERROR 排除效能結構描述伺服器錯誤檢測 OFF
DISABLE_PSI_FILE 排除效能結構描述檔案檢測 OFF
DISABLE_PSI_IDLE 排除效能結構描述閒置檢測 OFF
DISABLE_PSI_MEMORY 排除效能結構描述記憶體檢測 OFF
DISABLE_PSI_METADATA 排除效能結構描述中繼資料檢測 OFF
DISABLE_PSI_MUTEX 排除效能結構描述互斥鎖檢測 OFF
DISABLE_PSI_PS 排除效能結構描述預先準備的陳述式 OFF
DISABLE_PSI_RWLOCK 排除效能結構描述讀寫鎖定檢測 OFF
DISABLE_PSI_SOCKET 排除效能結構描述 Socket 檢測 OFF
DISABLE_PSI_SP 排除效能結構描述儲存的程式檢測 OFF
DISABLE_PSI_STAGE 排除效能結構描述階段檢測 OFF
DISABLE_PSI_STATEMENT 排除效能結構描述陳述式檢測 OFF
DISABLE_PSI_STATEMENT_DIGEST 排除效能結構描述 statements_digest 檢測 OFF
DISABLE_PSI_TABLE 排除效能結構描述資料表檢測 OFF
DISABLE_PSI_THREAD 排除效能結構描述執行緒檢測 OFF
DISABLE_PSI_TRANSACTION 排除效能結構描述交易檢測 OFF
ENABLED_LOCAL_INFILE 是否要為 LOAD DATA 啟用 LOCAL OFF
ENABLED_PROFILING 是否要啟用查詢分析程式碼 ON
ENABLE_EXPERIMENTAL_SYSVARS 是否要啟用實驗性的 InnoDB 系統變數 OFF
ENABLE_GCOV 是否要納入 gcov 支援
ENABLE_GPROF 啟用 gprof (僅限最佳化的 Linux 建置) OFF
FORCE_COLORED_OUTPUT 是否要為編譯器輸出上色 OFF
FORCE_INSOURCE_BUILD 是否要強制進行來源內建置 OFF
FORCE_UNSUPPORTED_COMPILER 是否要允許不支援的編譯器 OFF
FPROFILE_GENERATE 是否要產生設定檔導向最佳化資料 OFF
FPROFILE_USE 是否要使用設定檔導向最佳化資料 OFF
HAVE_PSI_MEMORY_INTERFACE 啟用效能結構描述記憶體追蹤模組,以用於動態儲存過度對齊類型的記憶體配置函數 OFF
忽略 AIO 檢查 使用 -DBUILD_CONFIG=mysql_release 時,忽略 libaio 檢查 OFF
INSTALL_BINDIR 使用者可執行檔目錄 PREFIX/bin
INSTALL_DOCDIR 文件目錄 PREFIX/docs
INSTALL_DOCREADMEDIR README 檔案目錄 PREFIX
INSTALL_INCLUDEDIR 標頭檔目錄 PREFIX/include
INSTALL_INFODIR Info 檔案目錄 PREFIX/docs
INSTALL_LAYOUT 選擇預定義的安裝佈局 獨立 (STANDALONE)
INSTALL_LIBDIR 程式庫檔案目錄 PREFIX/lib
INSTALL_MANDIR 手冊頁目錄 PREFIX/man
INSTALL_MYSQLSHAREDIR 共享資料目錄 PREFIX/share
INSTALL_MYSQLTESTDIR mysql-test 目錄 PREFIX/mysql-test
INSTALL_PKGCONFIGDIR mysqlclient.pc pkg-config 檔案的目錄 INSTALL_LIBDIR/pkgconfig
INSTALL_PLUGINDIR 外掛程式目錄 PREFIX/lib/plugin
INSTALL_PRIV_LIBDIR 安裝私有程式庫目錄
INSTALL_SBINDIR 伺服器可執行檔目錄 PREFIX/bin
INSTALL_SECURE_FILE_PRIVDIR secure_file_priv 預設值 平台特定
INSTALL_SHAREDIR aclocal/mysql.m4 安裝目錄 PREFIX/share
INSTALL_STATIC_LIBRARIES 是否安裝靜態程式庫 ON
INSTALL_SUPPORTFILESDIR 額外支援檔案目錄 PREFIX/support-files
LINK_RANDOMIZE 是否隨機化 mysqld 二進制檔中符號的順序 OFF
LINK_RANDOMIZE_SEED LINK_RANDOMIZE 選項的種子值 mysql
MAX_INDEXES 每個資料表的最大索引數 64
MSVC_CPPCHECK 啟用 MSVC 程式碼分析。 ON
MUTEX_TYPE InnoDB 互斥鎖類型 事件
MYSQLX_TCP_PORT X Plugin 使用的 TCP/IP 連接埠號碼 33060
MYSQLX_UNIX_ADDR X Plugin 使用的 Unix socket 檔案 /tmp/mysqlx.sock
MYSQL_DATADIR 資料目錄
MYSQL_MAINTAINER_MODE 是否啟用 MySQL 維護者特定的開發環境 OFF
MYSQL_PROJECT_NAME Windows/macOS 專案名稱 MySQL
MYSQL_TCP_PORT TCP/IP 連接埠號碼 3306
MYSQL_UNIX_ADDR Unix socket 檔案 /tmp/mysql.sock
NDB_UTILS_LINK_DYNAMIC 使 NDB 工具動態連結到 ndbclient
ODBC_INCLUDES ODBC include 目錄
ODBC_LIB_DIR ODBC 程式庫目錄
OPTIMIZER_TRACE 是否支援最佳化工具追蹤
OPTIMIZE_SANITIZER_BUILDS 是否最佳化消毒工具建置 ON
REPRODUCIBLE_BUILD 格外注意建立獨立於建置位置和時間的建置結果
SHOW_SUPPRESSED_COMPILER_WARNING 是否顯示被抑制的編譯器警告,而不是因 -Werror 而失敗。 OFF
SYSCONFDIR 選項檔案目錄
SYSTEMD_PID_DIR systemd 下 PID 檔案的目錄 /var/run/mysqld
SYSTEMD_SERVICE_NAME systemd 下 MySQL 服務的名稱 mysqld
TMPDIR tmpdir 預設值
WIN_DEBUG_NO_INLINE 是否停用函式內聯 OFF
WITHOUT_SERVER 不建置伺服器 OFF
WITHOUT_xxx_STORAGE_ENGINE 從建置中排除儲存引擎 xxx
WITH_ANT 用於建置 GCS Java 包裝器的 Ant 路徑
WITH_ASAN 啟用 AddressSanitizer OFF
WITH_ASAN_SCOPE 啟用 AddressSanitizer -fsanitize-address-use-after-scope Clang 標誌 OFF
WITH_AUTHENTICATION_CLIENT_PLUGINS 如果建置任何對應的伺服器驗證外掛程式,則自動啟用
WITH_AUTHENTICATION_LDAP 如果無法建置 LDAP 驗證外掛程式,是否報告錯誤 OFF
WITH_AUTHENTICATION_PAM 建置 PAM 驗證外掛程式 OFF
WITH_AWS_SDK Amazon Web Services 軟體開發套件的位置
WITH_BUILD_ID 在 Linux 系統上,產生唯一的建置 ID ON
WITH_CLASSPATH 建置 MySQL Cluster Connector for Java 時使用的類別路徑。預設值為空字串。
WITH_CLIENT_PROTOCOL_TRACING 建置用戶端協定追蹤架構 ON
WITH_CURL curl 程式庫的位置
WITH_DEBUG 是否包含偵錯支援 OFF
WITH_DEFAULT_COMPILER_OPTIONS 是否使用預設編譯器選項 ON
WITH_DEVELOPER_ENTITLEMENTS 是否將「get-task-allow」權限新增至 macOS 上的所有可執行檔,以便在發生意外伺服器停止時產生核心傾印 OFF
WITH_EDITLINE 要使用的 libedit/editline 程式庫 綁定
WITH_ERROR_INSERT 在 NDB 儲存引擎中啟用錯誤注入。不應將其用於建置打算用於生產的二進制檔。 OFF
WITH_ICU ICU 支援的類型 綁定
WITH_INNODB_EXTRA_DEBUG 是否包含 InnoDB 的額外偵錯支援。 OFF
WITH_JEMALLOC 是否與 -ljemalloc 連結 OFF
WITH_LD 是否使用 LLVM lld 或 mold 連結器
WITH_LIBEVENT 要使用的 libevent 程式庫 綁定
WITH_LIBWRAP 是否包含 libwrap (TCP wrappers) 支援 OFF
WITH_LOCK_ORDER 是否啟用 LOCK_ORDER 工具 OFF
WITH_LSAN 是否執行 LeakSanitizer,但不使用 AddressSanitizer OFF
WITH_LTO 啟用連結時間最佳化工具 OFF
WITH_LZ4 LZ4 程式庫支援的類型 綁定
WITH_MECAB 編譯 MeCab
WITH_MSAN 啟用 MemorySanitizer OFF
WITH_MSCRT_DEBUG 啟用 Visual Studio CRT 記憶體洩漏追蹤 OFF
WITH_MYSQLX 是否停用 X 協定 ON
WITH_NDB 建置 MySQL NDB Cluster,包括 NDB 儲存引擎和所有 NDB 程式 OFF
WITH_NDBAPI_EXAMPLES 建置 API 範例程式。 OFF
WITH_NDBCLUSTER NDB 8.0.30 及更早版本:建置 NDB 儲存引擎。NDB 8.0.31 及更新版本:已過時;請改用 WITH_NDB OFF
WITH_NDBCLUSTER_STORAGE_ENGINE 在 NDB 8.0.31 之前,這僅供內部使用。NDB 8.0.31 及更新版本:切換 (僅) 包含 NDBCLUSTER 儲存引擎 ON
WITH_NDBMTD 建置多執行緒資料節點二進制檔 ON
WITH_NDB_DEBUG 產生用於測試或疑難排解的偵錯建置。 OFF
WITH_NDB_JAVA 啟用 Java 和 ClusterJ 支援的建置。預設為啟用。僅在 MySQL Cluster 中支援。 ON
WITH_NDB_PORT 使用此選項建置的管理伺服器使用的預設連接埠。如果未使用此選項建置,管理伺服器的預設連接埠為 1186。 [無]
WITH_NDB_TEST 包含 NDB API 測試程式。 OFF
WITH_NDB_TLS_SEARCH_PATH NDB 程式用來搜尋 TLS 憑證和金鑰檔案的預設路徑。 $HOME/ndb-tls
WITH_NUMA 設定 NUMA 記憶體配置原則
WITH_PACKAGE_FLAGS 對於通常用於 RPM/DEB 套件的旗標,是否將其新增至這些平台上的獨立建置
WITH_PROTOBUF 要使用的 Protocol Buffers 套件 綁定
WITH_RAPID 是否建置快速開發週期外掛程式 ON
WITH_RAPIDJSON RapidJSON 支援的類型 綁定
WITH_ROUTER 是否建置 MySQL Router ON
WITH_SHOW_PARSE_TREE 支援 SHOW PARSE_TREE 偵錯陳述式
WITH_SSL SSL 支援的類型 系統
WITH_SYSTEMD 啟用 systemd 支援檔案的安裝 OFF
WITH_SYSTEMD_DEBUG 啟用額外的 systemd 偵錯資訊 OFF
WITH_SYSTEM_LIBS 設定未明確設定的程式庫選項的系統值 OFF
WITH_TCMALLOC 是否與 -ltcmalloc 連結。僅在 Linux 上支援 BUNDLED OFF
WITH_TEST_TRACE_PLUGIN 建置測試協定追蹤外掛程式 OFF
WITH_TSAN 啟用 ThreadSanitizer OFF
WITH_UBSAN 啟用未定義行為消毒工具 OFF
WITH_UNIT_TESTS 使用單元測試編譯 MySQL ON
WITH_UNIXODBC 啟用 unixODBC 支援 OFF
WITH_VALGRIND 是否在 Valgrind 標頭檔案中編譯 OFF
WITH_WIN_JEMALLOC 包含 jemalloc.dll 的目錄路徑
WITH_ZLIB zlib 支援的類型 綁定
WITH_ZSTD zstd 支援的類型 綁定
WITH_xxx_STORAGE_ENGINE 將儲存引擎 xxx 靜態編譯到伺服器中

一般選項

  • -DBUILD_CONFIG=mysql_release

    此選項使用 Oracle 用於產生官方 MySQL 發行版本的二進制發行版本的相同建置選項,來設定來源發行版本。

  • -DWITH_BUILD_ID=bool

    在 Linux 系統上,會產生唯一的建置 ID,該 ID 用作 build_id 系統變數的值,並在啟動時寫入 MySQL 伺服器記錄。將此選項設定為 OFF 以停用此功能。

    此選項在 Linux 以外的平台上無效。

  • -DBUNDLE_RUNTIME_LIBRARIES=bool

    是否將執行階段程式庫與 Windows 的伺服器 MSI 和 Zip 套件捆綁在一起。

  • -DCMAKE_BUILD_TYPE=type

    要產生的建置類型

    • RelWithDebInfo:啟用最佳化並產生偵錯資訊。這是預設的 MySQL 建置類型。

    • Release:啟用最佳化,但省略偵錯資訊以減少建置大小。

    • Debug:停用最佳化並產生偵錯資訊。如果啟用 WITH_DEBUG 選項,也會使用此建置類型。也就是說,-DWITH_DEBUG=1 的效果與 -DCMAKE_BUILD_TYPE=Debug 相同。

    不支援選項值 NoneMinSizeRel

  • -DCPACK_MONOLITHIC_INSTALL=bool

    此選項會影響 make package 作業是產生多個安裝套件檔案還是單一檔案。如果停用,該作業會產生多個安裝套件檔案,如果您只想安裝完整 MySQL 安裝的一部分,則可能很有用。如果啟用,則會產生單一檔案以安裝所有內容。

  • -DFORCE_INSOURCE_BUILD=bool

    定義是否強制執行原始碼內建置。建議使用原始碼外建置,因為它們允許從相同的來源進行多次建置,並且可以透過移除建置目錄來快速執行清除。若要強制執行原始碼內建置,請使用 -DFORCE_INSOURCE_BUILD=ON 叫用 CMake

  • -DFORCE_COLORED_OUTPUT=bool

    定義在命令列上編譯時是否為 gccclang 啟用彩色編譯器輸出。預設為 OFF

安裝佈局選項

CMAKE_INSTALL_PREFIX 選項會指出基本安裝目錄。名稱格式為 INSTALL_xxx 的其他選項會指出元件位置,並相對於前置詞來解譯,且其值為相對路徑名稱。其值不應包含前置詞。

儲存引擎選項

儲存引擎以外掛程式的形式建置。您可以將外掛程式建置為靜態模組(編譯到伺服器中)或動態模組(建置為動態程式庫,該程式庫必須使用 INSTALL PLUGIN 陳述式或 --plugin-load 選項安裝到伺服器中,然後才能使用)。某些外掛程式可能不支援靜態或動態建置。

InnoDBMyISAMMERGEMEMORYCSV 引擎是強制性的(始終編譯到伺服器中),不需要明確安裝。

若要將儲存引擎靜態編譯到伺服器中,請使用 -DWITH_engine_STORAGE_ENGINE=1。一些允許的 engine 值包括 ARCHIVEBLACKHOLEEXAMPLEFEDERATED。範例:

-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1

若要建置支援 NDB Cluster 的 MySQL,請使用 WITH_NDB 選項。

注意

不可能在不支援效能架構的情況下進行編譯。如果希望在沒有特定類型的檢測的情況下進行編譯,可以使用以下 CMake 選項來完成。

DISABLE_PSI_COND
DISABLE_PSI_DATA_LOCK
DISABLE_PSI_ERROR
DISABLE_PSI_FILE
DISABLE_PSI_IDLE
DISABLE_PSI_MEMORY
DISABLE_PSI_METADATA
DISABLE_PSI_MUTEX
DISABLE_PSI_PS
DISABLE_PSI_RWLOCK
DISABLE_PSI_SOCKET
DISABLE_PSI_SP
DISABLE_PSI_STAGE
DISABLE_PSI_STATEMENT
DISABLE_PSI_STATEMENT_DIGEST
DISABLE_PSI_TABLE
DISABLE_PSI_THREAD
DISABLE_PSI_TRANSACTION

例如,若要在沒有互斥鎖檢測的情況下進行編譯,請使用 -DDISABLE_PSI_MUTEX=1 來設定 MySQL。

若要從建置中排除儲存引擎,請使用 -DWITH_engine_STORAGE_ENGINE=0。範例:

-DWITH_ARCHIVE_STORAGE_ENGINE=0
-DWITH_EXAMPLE_STORAGE_ENGINE=0
-DWITH_FEDERATED_STORAGE_ENGINE=0

也可以使用 -DWITHOUT_engine_STORAGE_ENGINE=1 從建置中排除儲存引擎(但建議使用 -DWITH_engine_STORAGE_ENGINE=0)。範例:

-DWITHOUT_ARCHIVE_STORAGE_ENGINE=1
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1

如果沒有為給定的儲存引擎指定 -DWITH_engine_STORAGE_ENGINE-DWITHOUT_engine_STORAGE_ENGINE,則該引擎將作為共用模組建置,如果無法作為共用模組建置,則會排除該引擎。

功能選項

  • -DADD_GDB_INDEX=bool

    此選項決定是否在二進位檔案中啟用產生 .gdb_index 區段,這可加快在偵錯工具中載入它們的速度。預設情況下,此選項為停用狀態。 使用 lld 連結器,如果使用 lld 或 GNU gold 以外的連結器,則此選項沒有作用。

  • -DCOMPILATION_COMMENT=string

    關於編譯環境的描述性註解。雖然 mysqld 使用 COMPILATION_COMMENT_SERVER,但其他程式會使用 COMPILATION_COMMENT

  • -DCOMPRESS_DEBUG_SECTIONS=bool

    是否壓縮二進位可執行檔的偵錯區段(僅限 Linux)。壓縮可執行檔偵錯區段可節省空間,但會在建置過程中耗費額外的 CPU 時間。

    預設值為 OFF。如果未明確設定此選項,但設定了 COMPRESS_DEBUG_SECTIONS 環境變數,則此選項會從該變數取得其值。

  • -DCOMPILATION_COMMENT_SERVER=string

    mysqld 使用的關於編譯環境的描述性註解(例如,設定 version_comment 系統變數)。伺服器以外的程式會使用 COMPILATION_COMMENT

  • -DDEFAULT_CHARSET=charset_name

    伺服器字元集。依預設,MySQL 使用 utf8mb4 字元集。

    charset_name 可以是 binaryarmscii8asciibig5cp1250cp1251cp1256cp1257cp850cp852cp866cp932dec8eucjpmseuckrgb2312gbkgeostd8greekhebrewhp8keybcs2koi8rkoi8ulatin1latin2latin5latin7maccemacromansjisswe7tis620ucs2ujisutf8mb3utf8mb4utf16utf16leutf32 其中之一。

    此值可以使用 --character-set-server 選項在伺服器啟動時設定。

  • -DDEFAULT_COLLATION=collation_name

    伺服器定序。依預設,MySQL 使用 utf8mb4_0900_ai_ci。使用 SHOW COLLATION 陳述式來判斷每個字元集可用的定序。

    此值可以使用 --collation_server 選項在伺服器啟動時設定。

  • -DDISABLE_PSI_COND=bool

    是否排除效能架構條件檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_FILE=bool

    是否排除效能架構檔案檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_IDLE=bool

    是否排除效能架構閒置檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_MEMORY=bool

    是否排除效能架構記憶體檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_METADATA=bool

    是否排除效能架構中繼資料檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_MUTEX=bool

    是否排除效能架構互斥鎖檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_RWLOCK=bool

    是否排除效能架構讀寫鎖檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_SOCKET=bool

    是否排除效能架構通訊端檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_SP=bool

    是否排除效能架構儲存程式檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_STAGE=bool

    是否排除效能架構階段檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_STATEMENT=bool

    是否排除效能架構陳述式檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_STATEMENT_DIGEST=bool

    是否排除效能架構陳述式摘要檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_TABLE=bool

    是否排除效能架構資料表檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_PS=bool

    排除效能架構預先準備的陳述式執行個體檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_THREAD=bool

    排除效能架構執行緒檢測。預設值為 OFF(包含)。

    只有在建置時沒有任何檢測時才停用執行緒,因為其他檢測會依賴執行緒。

  • -DDISABLE_PSI_TRANSACTION=bool

    排除效能架構交易檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_DATA_LOCK=bool

    排除效能架構資料鎖定檢測。預設值為 OFF(包含)。

  • -DDISABLE_PSI_ERROR=bool

    排除效能架構伺服器錯誤檢測。預設值為 OFF(包含)。

  • -DENABLE_EXPERIMENTAL_SYSVARS=bool

    是否啟用實驗性的 InnoDB 系統變數。實驗性系統變數旨在供參與 MySQL 開發的人員使用,僅應在開發或測試環境中使用,並且可能會在未來的 MySQL 版本中被移除,恕不另行通知。有關實驗性系統變數的資訊,請參閱 MySQL 原始碼樹中的 /storage/innobase/handler/ha_innodb.cc。可以搜尋 PLUGIN_VAR_EXPERIMENTAL 來識別實驗性系統變數。

  • -DWITHOUT_SERVER=bool

    是否在沒有 MySQL Server 的情況下建置。預設值為 OFF,表示會建置伺服器。

    這被視為實驗性選項;建議使用伺服器進行建置。

  • -DENABLE_GCOV=bool

    是否包含 gcov 支援(僅限 Linux)。

  • -DENABLE_GPROF=bool

    是否啟用 gprof(僅限最佳化 Linux 建置)。

  • -DENABLED_LOCAL_INFILE=bool

    此選項控制 MySQL 用戶端程式庫中編譯時預設的 LOCAL 功能。因此,未明確設定的用戶端會根據 MySQL 建置時指定的 ENABLED_LOCAL_INFILE 設定,停用或啟用 LOCAL 功能。

    預設情況下,MySQL 二進位發行版中的用戶端程式庫在編譯時會停用 ENABLED_LOCAL_INFILE。如果您從原始碼編譯 MySQL,請根據未明確設定的用戶端是否應該停用或啟用 LOCAL 功能,設定為停用或啟用 ENABLED_LOCAL_INFILE

    ENABLED_LOCAL_INFILE 控制用戶端 LOCAL 功能的預設值。對於伺服器,local_infile 系統變數控制伺服器端的 LOCAL 功能。若要明確使伺服器拒絕或允許 LOAD DATA LOCAL 陳述式(無論用戶端程式和程式庫在建置時或執行時如何設定),請分別在停用或啟用 --local-infile 的情況下啟動 mysqldlocal_infile 也可以在執行時設定。請參閱第 8.1.6 節,〈LOAD DATA LOCAL 的安全性考量〉

  • -DENABLED_PROFILING=bool

    是否啟用查詢分析程式碼(用於 SHOW PROFILESHOW PROFILES 陳述式)。

  • -DFORCE_UNSUPPORTED_COMPILER=bool

    預設情況下,CMake 會檢查支援的編譯器的最低版本;若要停用此檢查,請使用 -DFORCE_UNSUPPORTED_COMPILER=ON

  • -DSHOW_SUPPRESSED_COMPILER_WARNINGS=bool

    顯示已隱藏的編譯器警告,且不會因 -Werror 而失敗。預設為 OFF

  • -DFPROFILE_GENERATE=bool

    是否產生設定檔導向最佳化 (PGO) 資料。此選項可用於使用 GCC 實驗 PGO。請參閱 MySQL 原始碼發行版中的 cmake/fprofile.cmake,以取得有關使用 FPROFILE_GENERATEFPROFILE_USE 的資訊。這些選項已使用 GCC 8 和 9 進行測試。

  • -DFPROFILE_USE=bool

    是否使用設定檔導向最佳化 (PGO) 資料。此選項可用於使用 GCC 實驗 PGO。請參閱 MySQL 原始碼發行版中的 cmake/fprofile.cmake 檔案,以取得有關使用 FPROFILE_GENERATEFPROFILE_USE 的資訊。這些選項已使用 GCC 8 和 9 進行測試。

    啟用 FPROFILE_USE 也會啟用 WITH_LTO

  • -DHAVE_PSI_MEMORY_INTERFACE=bool

    是否為動態儲存對齊類型中使用的記憶體配置函式(ut::aligned_name 程式庫函式)啟用效能架構記憶體追蹤模組。

  • -DIGNORE_AIO_CHECK=bool

    如果在 Linux 上提供 -DBUILD_CONFIG=mysql_release 選項,則預設情況下必須連結 libaio 程式庫。如果您沒有 libaio 或不想安裝它,您可以透過指定 -DIGNORE_AIO_CHECK=1 來隱藏其檢查。

  • -DMAX_INDEXES=num

    每個資料表的最大索引數。預設值為 64。最大值為 255。小於 64 的值會被忽略,並使用預設值 64。

  • -DMYSQL_MAINTAINER_MODE=bool

    是否啟用 MySQL 維護者專用的開發環境。如果啟用,此選項會使編譯器警告變成錯誤。

  • -DWITH_DEVELOPER_ENTITLEMENTS=bool

    是否在所有可執行檔中新增 get-task-allow 權利,以便在伺服器意外停止時產生核心傾印。

    在 macOS 11+ 上,核心傾印僅限於具有 com.apple.security.get-task-allow 權利的處理程序,此 CMake 選項會啟用此權利。此權利允許其他處理程序附加並讀取/修改處理程序的記憶體,並允許 --core-file 如預期運作。

  • -DMUTEX_TYPE=type

    InnoDB 使用的互斥鎖類型。選項包括

    • event:使用事件互斥鎖。這是預設值和原始的 InnoDB 互斥鎖實作。

    • sys:在 UNIX 系統上使用 POSIX 互斥鎖。如果可用,則在 Windows 上使用 CRITICAL_SECTION 物件。

    • futex:使用 Linux futexes 而不是條件變數來排程等待執行緒。

  • -DMYSQLX_TCP_PORT=port_num

    X Plugin 接聽 TCP/IP 連線的連接埠號碼。預設值為 33060。

    此值可以在伺服器啟動時使用 mysqlx_port 系統變數設定。

  • -DMYSQLX_UNIX_ADDR=file_name

    伺服器接聽 X Plugin 通訊端連線的 Unix 通訊端檔案路徑。這必須是絕對路徑名稱。預設值為 /tmp/mysqlx.sock

    此值可以在伺服器啟動時使用 mysqlx_port 系統變數設定。

  • -DMYSQL_PROJECT_NAME=name

    對於 Windows 或 macOS,要併入專案檔名稱中的專案名稱。

  • -DMYSQL_TCP_PORT=port_num

    伺服器接聽 TCP/IP 連線的連接埠號碼。預設值為 3306。

    此值可以在伺服器啟動時使用 --port 選項設定。

  • -DMYSQL_UNIX_ADDR=file_name

    伺服器接聽通訊端連線的 Unix 通訊端檔案路徑。這必須是絕對路徑名稱。預設值為 /tmp/mysql.sock

    此值可以在伺服器啟動時使用 --socket 選項設定。

  • -DOPTIMIZER_TRACE=bool

    是否支援最佳化工具追蹤。請參閱 MySQL 內部結構:追蹤最佳化工具

  • -DREPRODUCIBLE_BUILD=bool

    對於 Linux 系統上的建置,此選項控制是否額外注意建立獨立於建置位置和時間的建置結果。

    對於 RelWithDebInfo 建置,此選項預設為 ON

  • -DWITH_LD=string

    CMake 預設使用標準連結器。您可以選擇傳入 lldmold 以指定替代連結器。mold 必須是版本 2 或更新版本。

    此選項可用於 Enterprise Linux 以外的 Linux 系統,Enterprise Linux 一律使用 ld 連結器。

    注意

    先前,可以使用 USE_LD_LLD 選項來啟用(預設)或明確停用 Clang 的 LLVM lld 連結器。在 MySQL 8.3 中,已移除 USE_LD_LLD

  • -DWIN_DEBUG_NO_INLINE=bool

    是否在 Windows 上停用函式內嵌。預設值為 OFF(啟用內嵌)。

  • -DWITH_ANT=path_name

    設定 Ant 的路徑,這是建置 GCS Java 包裝函式時所必需的。將 WITH_ANT 設定為儲存 Ant tarball 或未封裝的封存的路徑。當未設定 WITH_ANT,或設定為特殊值 system 時,建置程序會假設 $PATH 中存在二進位 ant

  • -DWITH_ASAN=bool

    是否為支援 AddressSanitizer 的編譯器啟用 AddressSanitizer。預設值為 OFF

  • -DWITH_ASAN_SCOPE=bool

    是否啟用 AddressSanitizer 的 -fsanitize-address-use-after-scope Clang 旗標以偵測 scope 後使用 (use-after-scope)。預設為關閉。要使用此選項,也必須啟用 -DWITH_ASAN

  • -DWITH_AUTHENTICATION_CLIENT_PLUGINS=bool

    如果建置任何對應的伺服器身份驗證外掛程式,則會自動啟用此選項。因此,其值取決於其他 CMake 選項,不應明確設定。

  • -DWITH_AUTHENTICATION_LDAP=bool

    是否在無法建置 LDAP 身份驗證外掛程式時報告錯誤

    • 如果停用此選項(預設),則在找到所需的標頭檔和程式庫時會建置 LDAP 外掛程式。如果找不到,CMake 會顯示相關註解。

    • 如果啟用此選項,則在找不到所需的標頭檔和程式庫時,CMake 會產生錯誤,防止建置伺服器。

  • -DWITH_AUTHENTICATION_PAM=bool

    是否針對包含此外掛程式的原始碼樹狀結構建置 PAM 身份驗證外掛程式。(請參閱第 8.4.1.5 節,「PAM 可插拔身份驗證」。)如果指定此選項且無法編譯此外掛程式,則建置會失敗。

  • -DWITH_AWS_SDK=path_name

    Amazon Web Services 軟體開發套件的位置。

  • -DWITH_CLIENT_PROTOCOL_TRACING=bool

    是否將用戶端協定追蹤框架建置到用戶端程式庫中。預設情況下,會啟用此選項。

    如需撰寫協定追蹤用戶端外掛程式的資訊,請參閱撰寫協定追蹤外掛程式

    另請參閱 WITH_TEST_TRACE_PLUGIN 選項。

  • -DWITH_CURL=curl_type

    curl 程式庫的位置。curl_type 可以是 system(使用系統的 curl 程式庫)、curl 程式庫的路徑名稱、no|off|none 來停用 curl 支援,或是 bundled 來使用 extra/curl/ 中綁定的 curl 發行版本。

  • -DWITH_DEBUG=bool

    是否包含偵錯支援。

    使用偵錯支援設定 MySQL,可讓您在啟動伺服器時使用 --debug="d,parser_debug" 選項。這會導致用於處理 SQL 陳述式的 Bison 分析器將分析器追蹤傾印到伺服器的標準錯誤輸出。通常,此輸出會寫入錯誤日誌。

    使用 WITH_DEBUG 選項編譯偵錯支援時,InnoDB 儲存引擎的同步偵錯檢查會在 UNIV_DEBUG 下定義且可用。編譯偵錯支援時,可以使用 innodb_sync_debug 設定選項來啟用或停用 InnoDB 同步偵錯檢查。

    啟用 WITH_DEBUG 也會啟用 Debug Sync。此功能用於測試和偵錯。編譯時,Debug Sync 在執行階段預設為停用。若要啟用它,請使用 --debug-sync-timeout=N 選項啟動 mysqld,其中 N 是大於 0 的逾時值。(預設值為 0,會停用 Debug Sync。)N 會成為各個同步點的預設逾時。

    使用 WITH_DEBUG 選項編譯偵錯支援時,InnoDB 儲存引擎的同步偵錯檢查會可用。

    如需 Debug Sync 功能以及如何使用同步點的說明,請參閱MySQL 內部:測試同步

  • -DWITH_EDITLINE=value

    要使用的 libedit/editline 程式庫。允許的值為 bundled (預設) 和 system

  • -DWITH_ICU={icu_type|path_name}

    MySQL 使用國際碼組件 (ICU) 來支援正規表示式運算。WITH_ICU 選項會指出要包含的 ICU 支援類型或要使用的 ICU 安裝路徑名稱。

    • icu_type 可以是下列其中一個值

      • bundled:使用與散發版本綁定的 ICU 程式庫。這是預設值,也是 Windows 唯一支援的選項。

      • system:使用系統 ICU 程式庫。

    • path_name 是要使用的 ICU 安裝路徑名稱。這可能比使用 systemicu_type 值更佳,因為它可以防止 CMake 偵測並使用系統上安裝的舊版或不正確的 ICU 版本。(執行相同操作的另一個允許方式是將 WITH_ICU 設定為 system,並將 CMAKE_PREFIX_PATH 選項設定為 path_name。)

  • -DWITH_INNODB_EXTRA_DEBUG=bool

    是否包含額外的 InnoDB 偵錯支援。

    啟用 WITH_INNODB_EXTRA_DEBUG 會開啟額外的 InnoDB 偵錯檢查。只有在啟用 WITH_DEBUG 時,才能啟用此選項。

  • -DWITH_JEMALLOC=bool

    是否連結 -ljemalloc。如果啟用,內建的 malloc()calloc()realloc()free() 常式會停用。預設值為 OFF

    WITH_JEMALLOCWITH_TCMALLOC 是互斥的。

  • -DWITH_WIN_JEMALLOC=string

    在 Windows 上,傳遞包含 jemalloc.dll 的目錄路徑以啟用 jemalloc 功能。建置系統會將 jemalloc.dll 複製到與 mysqld.exe 和/或 mysqld-debug.exe 相同的目錄,並將其用於記憶體管理作業。如果找不到 jemalloc.dll 或未匯出所需的函式,則會使用標準記憶體函式。資訊層級的記錄訊息會記錄是否找到並使用 jemalloc。

    此選項已為 Windows 的官方 MySQL 二進位檔啟用。

  • -DWITH_LIBEVENT=string

    要使用的 libevent 程式庫。允許的值為 bundled (預設) 和 system。如果指定 system 且找不到系統 libevent 程式庫,則會發生錯誤,且不會使用綁定的 libevent

    X Plugin 和 MySQL Router 需要 libevent 程式庫。

  • -DWITH_LIBWRAP=bool

    是否包含 libwrap (TCP wrappers) 支援。

  • -DWITH_LOCK_ORDER=bool

    是否啟用 LOCK_ORDER 工具。預設情況下,會停用此選項,且伺服器建置不包含任何工具。如果啟用工具,則可以使用 LOCK_ORDER 工具,如第 7.9.3 節,「LOCK_ORDER 工具」中所述。

    注意

    啟用 WITH_LOCK_ORDER 選項後,MySQL 建置需要 flex 程式。

  • -DWITH_LSAN=bool

    是否執行 LeakSanitizer,而不執行 AddressSanitizer。預設值為 OFF

  • -DWITH_LTO=bool

    是否啟用連結時間最佳化器 (如果編譯器支援)。預設值為 OFF,除非啟用 FPROFILE_USE

  • -DWITH_LZ4=lz4_type

    WITH_LZ4 選項會指出 zlib 支援的來源

    • bundled:使用與散發版本綁定的 lz4 程式庫。這是預設值。

    • system:使用系統 lz4 程式庫。

  • -DWITH_MECAB={disabled|system|path_name}

    使用此選項來編譯 MeCab 分析器。如果您已將 MeCab 安裝到其預設安裝目錄,請設定 -DWITH_MECAB=systemsystem 選項適用於從來源或使用原生套件管理公用程式從二進位檔執行的 MeCab 安裝。如果您將 MeCab 安裝到自訂安裝目錄,請指定 MeCab 安裝的路徑,例如 -DWITH_MECAB=/opt/mecab。如果 system 選項不起作用,指定 MeCab 安裝路徑應在所有情況下都有效。

    如需相關資訊,請參閱第 14.9.9 節,「MeCab 全文剖析器外掛程式」

  • -DWITH_MSAN=bool

    是否啟用 MemorySanitizer,用於支援此功能的編譯器。預設為關閉。

    若要使此選項生效,所有連結到 MySQL 的程式庫也必須使用此選項啟用來進行編譯。

  • -DWITH_MSCRT_DEBUG=bool

    是否啟用 Visual Studio CRT 記憶體洩漏追蹤。預設值為 OFF

  • -DMSVC_CPPCHECK=bool

    是否啟用 MSVC 程式碼分析。預設值為 ON

  • -DWITH_MYSQLX=bool

    是否建置 X Plugin 的支援。預設值為 ON。請參閱 第 22 章,使用 MySQL 作為文件儲存

  • -DWITH_NUMA=bool

    明確設定 NUMA 記憶體配置原則。CMake 會根據目前平台是否支援 NUMA 來設定預設的 WITH_NUMA 值。對於不支援 NUMA 的平台,CMake 的行為如下:

    • 在沒有 NUMA 選項的情況下(一般情況),CMake 會正常繼續,只產生此警告:NUMA 程式庫遺失或所需版本不可用

    • 使用 -DWITH_NUMA=ON 時,CMake 會中止並顯示此錯誤:NUMA 程式庫遺失或所需版本不可用

  • -DWITH_PACKAGE_FLAGS=bool

    對於通常用於 RPM 和 Debian 套件的標誌,是否將它們新增到這些平台上的獨立建置中。對於非除錯建置,預設值為 ON

  • -DWITH_PROTOBUF=protobuf_type

    要使用的 Protocol Buffers 套件。protobuf_type 可以是下列其中一個值:

    • bundled:使用與發行版本綁定的套件。這是預設值。您可以選擇使用 INSTALL_PRIV_LIBDIR 來修改動態 Protobuf 程式庫目錄。

    • system:使用系統上安裝的套件。

    其他值會被忽略,並回退到 bundled

  • -DWITH_RAPID=bool

    是否建置快速開發週期外掛程式。啟用時,會在建置樹狀結構中建立一個包含這些外掛程式的 rapid 目錄。停用時,不會在建置樹狀結構中建立 rapid 目錄。預設值為 ON,除非 rapid 目錄從來源樹狀結構中移除,在這種情況下,預設值會變為 OFF

  • -DWITH_RAPIDJSON=rapidjson_type

    要包含的 RapidJSON 程式庫支援類型。rapidjson_type 可以是下列其中一個值:

    • bundled:使用與發行版本綁定的 RapidJSON 程式庫。這是預設值。

    • system:使用系統 RapidJSON 程式庫。需要 1.1.0 或更高版本。

  • -DWITH_ROUTER=bool

    是否建置 MySQL Router。預設值為 ON

  • -DWITH_SSL={ssl_type|path_name}

    為了支援加密連線、隨機數產生的熵和其他加密相關操作,MySQL 必須使用 SSL 程式庫建置。此選項指定要使用的 SSL 程式庫。

    • ssl_type 可以是下列其中一個值:

      • system:使用系統 OpenSSL 程式庫。這是預設值。

        在 macOS 和 Windows 上,使用 system 會將 MySQL 配置為如同使用 path_name 指向手動安裝的 OpenSSL 程式庫來呼叫 CMake。這是因為它們沒有系統 SSL 程式庫。在 macOS 上,brew install openssl 會安裝到 /usr/local/opt/openssl,以便 system 可以找到它。在 Windows 上,它會檢查 %ProgramFiles%/OpenSSL%ProgramFiles%/OpenSSL-Win32%ProgramFiles%/OpenSSL-Win64C:/OpenSSLC:/OpenSSL-Win32C:/OpenSSL-Win64

      • yes:這是 system 的同義詞。

      • opensslversion:使用替代的 OpenSSL 系統套件,例如 EL7 上的 openssl11,或 EL8 上的 openssl3(或 openssl3-fips)。

        由於身份驗證外掛程式(例如 LDAP 和 Kerberos)不支援這些替代版本的 OpenSSL,因此會停用它們。

    • path_name 是要使用的 OpenSSL 安裝路徑名稱。這可能比使用 ssl_typesystem 更為可取,因為它可以防止 CMake 偵測和使用系統上安裝的較舊或不正確的 OpenSSL 版本。(執行相同操作的另一種允許方式是將 WITH_SSL 設定為 system,並將 CMAKE_PREFIX_PATH 選項設定為 path_name。)

    如需配置 SSL 程式庫的更多資訊,請參閱 第 2.8.6 節,〈配置 SSL 程式庫支援〉

  • -DWITH_SHOW_PARSE_TREE=bool

    在伺服器中啟用 SHOW PARSE_TREE 的支援,僅用於開發和偵錯。不適用於發行版本,也不支援在生產環境中使用。

  • -DWITH_SYSTEMD=bool

    是否啟用安裝 systemd 支援檔案。預設情況下,此選項已停用。啟用時,會安裝 systemd 支援檔案,並且不會安裝 mysqld_safe 等指令碼和 System V 初始化指令碼。在 systemd 不可用的平台上,啟用 WITH_SYSTEMD 會導致 CMake 發生錯誤。

    當伺服器使用此選項建置時,MySQL 會在伺服器的錯誤日誌中包含所有 systemd 訊息(請參閱 第 7.4.2 節,〈錯誤日誌〉)。

    如需更多關於使用 systemd 的資訊,請參閱 第 2.5.9 節,〈使用 systemd 管理 MySQL 伺服器〉。該節還包括關於指定 [mysqld_safe] 選項群組中指定的選項的資訊。由於在使用 systemd 時不會安裝 mysqld_safe,因此必須以其他方式指定這些選項。

  • -DWITH_SYSTEM_LIBS=bool

    此選項作為一個「保護傘」選項,用於設定以下任何未明確設定的 CMake 選項的 system 值:WITH_CURLWITH_EDITLINEWITH_ICUWITH_LIBEVENTWITH_LZ4WITH_LZMAWITH_PROTOBUFWITH_RE2WITH_SSLWITH_ZLIBWITH_ZSTD

  • -DWITH_SYSTEMD_DEBUG=bool

    是否產生額外的 systemd 除錯資訊,適用於使用 systemd 來執行 MySQL 的平台。預設值為 OFF

  • -DWITH_TCMALLOC=bool

    是否與 -ltcmalloc 連結。如果啟用,則會停用內建的 malloc()calloc()realloc()free() 常式。預設值為 OFF

    從 MySQL 8.4.1 開始,來源中包含 tcmalloc 程式庫;您可以將此選項設定為 BUNDLED,以使建置使用綁定版本。BUNDLED 僅在 Linux 系統上受支援。

    WITH_TCMALLOCWITH_JEMALLOC 互斥。

  • -DWITH_TEST_TRACE_PLUGIN=bool

    是否建置測試協定追蹤用戶端外掛程式(請參閱使用測試協定追蹤外掛程式)。預設情況下,此選項為停用。除非啟用 WITH_CLIENT_PROTOCOL_TRACING 選項,否則啟用此選項無效。如果 MySQL 設定同時啟用這兩個選項,則建置的 libmysqlclient 用戶端程式庫會內建測試協定追蹤外掛程式,且所有標準 MySQL 用戶端都會載入此外掛程式。不過,即使啟用測試外掛程式,預設也不會生效。可以使用環境變數來控制此外掛程式;請參閱使用測試協定追蹤外掛程式

    注意

    如果您想使用自己的協定追蹤外掛程式,請不要啟用 WITH_TEST_TRACE_PLUGIN 選項,因為一次只能載入一個外掛程式,且嘗試載入第二個外掛程式時會發生錯誤。如果您已經建置啟用測試協定追蹤外掛程式的 MySQL 以了解其運作方式,則必須在可以使用自己的外掛程式之前,重新建置未啟用此外掛程式的 MySQL。

    如需有關撰寫追蹤外掛程式的資訊,請參閱撰寫協定追蹤外掛程式

  • -DWITH_TSAN=bool

    是否為支援 ThreadSanitizer 的編譯器啟用 ThreadSanitizer。預設為關閉。

  • -DWITH_UBSAN=bool

    是否為支援 Undefined Behavior Sanitizer 的編譯器啟用 Undefined Behavior Sanitizer。預設為關閉。

  • -DWITH_UNIT_TESTS={ON|OFF}

    如果啟用,則使用單元測試來編譯 MySQL。除非未編譯伺服器,否則預設為 ON

  • -DWITH_UNIXODBC=1

    啟用 Connector/ODBC 的 unixODBC 支援。

  • -DWITH_VALGRIND=bool

    是否編譯 Valgrind 標頭檔,以將 Valgrind API 公開給 MySQL 程式碼。預設為 OFF

    若要產生 Valgrind 感知的偵錯組建,-DWITH_VALGRIND=1 通常會與 -DWITH_DEBUG=1 結合使用。請參閱建置偵錯設定

  • -DWITH_ZLIB=zlib_type

    某些功能需要伺服器使用壓縮程式庫支援來建置,例如 COMPRESS()UNCOMPRESS() 函式,以及用戶端/伺服器協定的壓縮。WITH_ZLIB 選項表示 zlib 支援的來源

    zlib 的最低支援版本為 1.2.13。

    • bundled:使用與發行版配套的 zlib 程式庫。這是預設值。

    • system:使用系統 zlib 程式庫。

  • -DWITH_ZSTD=zstd_type

    使用 zstd 演算法的連線壓縮(請參閱第 6.2.8 節「連線壓縮控制」)需要伺服器使用 zstd 程式庫支援來建置。WITH_ZSTD 選項表示 zstd 支援的來源

    • bundled:使用與發行版配套的 zstd 程式庫。這是預設值。

    • system:使用系統 zstd 程式庫。

編譯器旗標

若要指定您自己的 C 和 C++ 編譯器旗標,對於不影響最佳化的旗標,請使用 CMAKE_C_FLAGSCMAKE_CXX_FLAGS CMake 選項。

當您提供自己的編譯器旗標時,您可能也會想要指定 CMAKE_BUILD_TYPE

例如,若要在 64 位元的 Linux 電腦上建立 32 位元的發行組建,請執行以下操作

$> mkdir build
$> cd build
$> cmake .. -DCMAKE_C_FLAGS=-m32 \
  -DCMAKE_CXX_FLAGS=-m32 \
  -DCMAKE_BUILD_TYPE=RelWithDebInfo

如果您設定影響最佳化的旗標 (-Onumber),則必須設定 CMAKE_C_FLAGS_build_type 和/或 CMAKE_CXX_FLAGS_build_type 選項,其中 build_type 對應至 CMAKE_BUILD_TYPE 值。若要為預設組建類型 (RelWithDebInfo) 指定不同的最佳化,請設定 CMAKE_C_FLAGS_RELWITHDEBINFOCMAKE_CXX_FLAGS_RELWITHDEBINFO 選項。例如,若要在 Linux 上使用 -O3 和偵錯符號進行編譯,請執行以下操作

$> cmake .. -DCMAKE_C_FLAGS_RELWITHDEBINFO="-O3 -g" \
  -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-O3 -g"

編譯 NDB Cluster 的 CMake 選項

若要編譯以支援 NDB Cluster,您可以使用 -DWITH_NDB,這會導致組建包含 NDB 儲存引擎和所有 NDB 程式。預設會啟用此選項。若要防止建置 NDB 儲存引擎外掛程式,請使用 -DWITH_NDBCLUSTER_STORAGE_ENGINE=OFF。可以使用本節中列出的其他選項來控制組建的其他方面。

當使用 NDB Cluster 支援來建置 MySQL 來源時,適用以下選項。

  • -DNDB_UTILS_LINK_DYNAMIC={ON|OFF}

    控制 NDB 公用程式(例如 ndb_drop_table)是否與 ndbclient 靜態 (OFF) 或動態 (ON) 連結;OFF (靜態連結) 為預設值。通常在建置這些公用程式時會使用靜態連結,以避免 LD_LIBRARY_PATH 發生問題,或在安裝多個版本的 ndbclient 時使用。此選項適用於建立 Docker 映像,以及目標環境受到精確控制且需要縮減映像大小的其他情況。

  • -DWITH_CLASSPATH=path

    設定建置 MySQL NDB Cluster Connector for Java 的類別路徑。預設值為空。如果使用 -DWITH_NDB_JAVA=OFF,則會忽略此選項。

  • -DWITH_ERROR_INSERT={ON|OFF}

    NDB 核心中啟用錯誤注入。僅適用於測試;不適用於建置生產二進位檔。預設值為 OFF

  • -DWITH_NDB={ON|OFF}

    建置 MySQL NDB Cluster;建置 NDB 外掛程式和所有 NDB Cluster 程式。

  • -DWITH_NDBAPI_EXAMPLES={ON|OFF}

    storage/ndb/ndbapi-examples/ 中建置 NDB API 範例程式。請參閱NDB API 範例,以取得有關這些程式的資訊。

  • -DWITH_NDBCLUSTER_STORAGE_ENGINE={ON|OFF}

    控制 (僅) NDBCLUSTER 儲存引擎是否包含在組建中;WITH_NDB 會自動啟用此選項,因此建議您改用 WITH_NDB

  • -DWITH_NDBCLUSTER={ON|OFF} (已過時)

    建置並連結 mysqldNDB 儲存引擎的支援。

    此選項已過時,且最終可能會移除;請改用 WITH_NDB

  • -DWITH_NDBMTD={ON|OFF}

    建置多執行緒資料節點可執行檔 ndbmtd。預設值為 ON

  • -DWITH_NDB_DEBUG={ON|OFF}

    啟用建置 NDB Cluster 二進位檔的除錯版本。預設為 OFF

  • -DWITH_NDB_JAVA={ON|OFF}

    啟用建置具有 Java 支援的 NDB Cluster,包括支援 ClusterJ(請參閱 MySQL NDB Cluster Java 連接器)。

    此選項預設為 ON。如果您不希望使用 Java 支援編譯 NDB Cluster,您必須在執行 CMake 時明確指定 -DWITH_NDB_JAVA=OFF 來停用它。否則,如果找不到 Java,建置組態會失敗。

  • -DWITH_NDB_PORT=port

    使建置的 NDB Cluster 管理伺服器(ndb_mgmd)預設使用此 port。如果未設定此選項,產生的管理伺服器預設會嘗試使用連接埠 1186。

  • -DWITH_NDB_TEST={ON|OFF}

    如果啟用,則包含一組 NDB API 測試程式。預設為 OFF

  • -DWITH_NDB_TLS_SEARCH_PATH=path

    設定 ndb_sign_keys 和其他 NDB 程式搜尋 TLS 憑證和金鑰檔案的預設路徑。

    Windows 平台的預設值為 $HOMEDIR/ndb-tls;其他平台(如 Linux)的預設值為 $HOME/ndb-tls