在Clickhouse中,user.xml用來系統管理使用者層級的參數設定以及使用者資訊、許可權資訊等,當您需要為ClickHouse叢集配置使用者層級參數時,可以通過修改user.xml來進行設定。本文介紹如何修改雲資料庫ClickHouse的user.xml設定檔中的參數。
背景介紹
ClickHouse叢集包含多個參數,其預設值通常配置在config.xml和user.xml檔案中。您可以通過修改這兩個檔案中的參數來最佳化叢集的效能。
您可以通過控制台線上修config.xml設定檔中的參數,並重新啟動叢集,以使參數修改生效。詳細資料,請參見配置config.xml參數。
您需要通過用戶端串連雲資料庫ClickHouse叢集,執行相關文法命令修改user.xml設定檔中的參數,但不支援通過clickhouse-client用戶端修改。
前提條件
叢集狀態為運行中。
操作步驟
叢集版本不同,修改user.xml的方式也不同。
社區相容版
社區相容版叢集user.xml設定檔的文法以及使用樣本。
文法
SET GLOBAL ON cluster default <setting_name> = <setting_value>;
參數說明
目前支援的參數清單,請參見ClickHouse參數列表。
setting_value取值是布爾類型或字元型時,需要用單引號括起來。
使用樣本
樣本1:設定從表載入資料時,在單個塊中包含的最大行數。
SET GLOBAL ON cluster default max_block_size = 10000;
樣本2:啟用資料格式的順序保留並行分析。
SET GLOBAL ON cluster default input_format_parallel_parsing = 'True';
查看參數
查看當前叢集user.xml配置的參數。
SELECT * FROM system.settings;
企業版
企業版的users.xml參數設定與社區版的不同,請您根據具體需求執行對應語句。
下文所有文法中setting_name、setting_value、profile_name的值請參見Core Settings | ClickHouse Docs和Restrictions on Query Complexity | ClickHouse Docs。
設定臨時生效的參數
修改當前登入所在會話的參數設定。
此種參數設定,參數資訊並沒有被持久化在叢集中,所以當您退出叢集串連後再重新串連,設定的參數就會失效。
文法
SET <setting_name> = <setting_value>;
樣本
當前session下啟用live view功能。
SET allow_experimental_live_view = 1;
使一個帳號的參數持久化生效
為叢集單個帳號設定參數、使用者資訊以及許可權資訊。
執行以下SQL需要高許可權帳號或擁有ACCESS MANAGEMENT許可權的帳號。
這種參數設定方法,參數會被持久化在叢集中,但當前的session並沒有更新,因此需要重新串連叢集,設定的參數才能在session中生效。
文法
ALTER USER user_name SETTINGS <setting_name> = <setting_value>;
樣本
將名字為Nancy的帳號的記憶體使用量量限制為4GB。
ALTER USER Nancy SETTINGS max_memory_usage_for_user = 4294967296;
使全帳號的參數持久化生效
為叢集所有帳號設定參數、使用者資訊以及許可權資訊。
執行以下SQL需要高許可權帳號或擁有ACCESS MANAGEMENT許可權的帳號。
這種參數設定方法,參數會被持久化在叢集中,但當前的session並沒有更新,因此需要重新串連叢集,設定的參數才能在session中生效。
文法
CREATE SETTINGS PROFILE profile_name SETTINGS <setting_name> = <setting_value> TO ALL;
樣本
將所有帳號在執行query時的執行時間長度限制為10秒。
CREATE SETTINGS PROFILE max_execution_time_profile SETTINGS max_execution_time = 10 TO ALL;
查看設定的參數是否持久化
文法
SHOW SETTINGS LIKE '%<settings_name>%';
樣本
查看設定的allow_experimental_live_view參數是否持久化生效。
SHOW SETTINGS LIKE '%allow_experimental_live_view%';