ALTER SETTINGS PROFILE
ALTER SETTINGS PROFILE
설정 프로필을 변경해요.
출처: 문서
본문
Syntax:
ALTER SETTINGS PROFILE [IF EXISTS] name1 [RENAME TO new_name |, name2 [,...]]
[ON CLUSTER cluster_name]
[SETTINGS variable [= value] [MIN [=] min_value] [MAX [=] max_value] [CONST|READONLY|WRITABLE|CHANGEABLE_IN_READONLY] | INHERIT 'profile_name'] [,...]
[ADD|MODIFY SETTINGS variable [= value] [MIN [=] min_value] [MAX [=] max_value] [CONST|READONLY|WRITABLE|CHANGEABLE_IN_READONLY] [,...]
[SET variable [= value] [MIN [=] min_value] [MAX [=] max_value] [CONST|READONLY|WRITABLE|CHANGEABLE_IN_READONLY] [,...] ]
[DROP SETTINGS variable [,...] ]
[ADD PROFILES 'profile_name' [,...] ]
[DROP PROFILES 'profile_name' [,...] ]
[DROP ALL SETTINGS]
[DROP ALL PROFILES]
[TO {{role1 | user1 [, role2 | user2 ...]} | NONE | ALL | ALL EXCEPT {role1 | user1 [, role2 | user2 ...]}}]
ON CLUSTER 절은 클러스터에서 설정 프로필을 변경할 수 있게 해주며, Distributed DDL을 참고하세요.
Replacing vs. modifying settings
ALTER SETTINGS PROFILE은 프로필의 설정과 부모(상속된) 프로필을 변경하는 두 가지 다른 방법을 지원해요. 그것들은 매우 다르게 동작하므로, 올바른 것을 선택하는 것이 중요합니다.
Replacing form: bare SETTINGS / INHERIT
SETTINGS만 있는 절(ADD, MODIFY, DROP 없이)은 전체 설정 목록과 프로필의 모든 부모 프로필을 정확히 나열한 것으로 교체해요. 이전에 있었지만 나열되지 않은 것은 경고 없이 조용히 버려집니다.
CREATE SETTINGS PROFILE OR REPLACE p
SETTINGS max_execution_time = 10, enable_lazy_columns_replication = 1;
ALTER SETTINGS PROFILE p SETTINGS max_memory_usage = 16106127360;
SHOW CREATE SETTINGS PROFILE p;
-- → CREATE SETTINGS PROFILE p SETTINGS max_memory_usage = 16106127360
-- max_execution_time and enable_lazy_columns_replication are gone.
bare SETTINGS 형태는 완전한 교체이므로, 채워진 기본 프로필 위에 "하나의 설정을 덮어쓰기" 위해 사용하면 그 프로필의 다른 모든 설정(그리고 모든 부모 프로필)을 버립니다. 나머지를 유지하면서 단일 설정만 변경하려면 아래 설명된 증분 MODIFY/ADD/DROP 형태를 사용하세요.
이것은 CREATE SETTINGS PROFILE의 SETTINGS와 같은 동작입니다. 이 절은 완전한 설정 목록을 정의합니다.
Incremental form: ADD / MODIFY / DROP
ADD, MODIFY, DROP 키워드는 프로필의 다른 모든 것을 건드리지 않고 개별 항목을 변경해요.
ADD SETTINGS variable = value [constraints]— 아직 없는 설정을 추가해요.MODIFY SETTINGS variable = value [constraints]— 단일 설정 항목을 교체해요. 전체 항목(값과 제약)이 덮어써지므로, 그것들을 유지하려면MIN/MAX/READONLY등을 다시 지정하세요.DROP SETTINGS variable [,...]— 나열된 설정을 제거해요.ADD PROFILES 'profile_name' [,...]/DROP PROFILES 'profile_name' [,...]— 부모(상속된) 프로필을 추가하거나 제거해요.DROP ALL SETTINGS/DROP ALL PROFILES— 모든 설정 또는 모든 부모 프로필을 제거해요.
이 절들 중 여러 개가 단일 문에서 결합될 수 있어요. 예: DROP SETTINGS a ADD SETTINGS b = 1.
SET variable = value는 MODIFY SETTINGS variable = value의 별칭이에요. SET이 자연스럽게 느껴지고, 증분 변경을 의도했을 때 교체 SETTINGS 절을 입력하는 것이 흔한 실수이기 때문에 제공됩니다.
Examples
채워진 프로필의 나머지를 보존하면서 단일 설정을 덮어쓰기:
ALTER SETTINGS PROFILE p MODIFY SETTINGS max_memory_usage = 16106127360;
새로운 제약된 설정을 추가하고 다른 설정을 버리기:
ALTER SETTINGS PROFILE my_profile
DROP SETTINGS readonly
ADD SETTINGS max_threads = 8 MIN 4 MAX 16 WRITABLE;
부모 프로필을 증분으로 관리하기:
ALTER SETTINGS PROFILE my_profile ADD PROFILES p1;
ALTER SETTINGS PROFILE my_profile DROP PROFILES p1;
항상 SHOW CREATE SETTINGS PROFILE로 결과를 확인하세요.
SHOW CREATE SETTINGS PROFILE my_profile;
Incremental vs full replacement
bare SETTINGS 절은 새 것을 적용하기 전에 프로필에서 모든 기존 설정과 모든 상속된(부모) 프로필을 제거해요.
나머지를 유지하면서 단일 설정을 변경하려면 ADD SETTINGS 또는 MODIFY SETTINGS를 사용하세요(아래 예시 참조).
ADD vs MODIFY
ADD SETTINGS와 MODIFY SETTINGS 모두 프로필의 다른 설정을 보존하지만, 같은 설정에 대한 기존 항목을 다르게 취급합니다:
ADD SETTINGS variable = value ...는 먼저variable에 대한 기존 항목을 버린 다음 새 것을 삽입해요. 따라서 값과 함께 그 설정의 모든 제약을 교체합니다. 반복하지 않는variable에 대해 이전에 정의된MIN,MAX, 또는 쓰기 가능성(READONLY/WRITABLE/CONST/CHANGEABLE_IN_READONLY)은 버려집니다.MODIFY SETTINGS variable = value ...는 필드별로 병합해요. 지정한 필드(값, 또는MIN, 또는MAX, 또는 쓰기 가능성)만 덮어쓰고 그 설정의 다른 필드는 그대로 유지합니다.
요약하면, 설정의 한 측면만 조정하려고 할 때(예: 기존 MAX를 유지하면서 값만) MODIFY SETTINGS를 사용하고, 설정을 처음부터 다시 정의하려면 ADD SETTINGS를 사용하세요.
Examples
아래 예시에서 사용할 프로필을 만들어요.
CREATE SETTINGS PROFILE OR REPLACE p SETTINGS max_execution_time = 60;
MODIFY SETTINGS
다른 것을 유지하면서 단일 설정을 추가하거나 변경하기:
ALTER SETTINGS PROFILE p MODIFY SETTINGS max_memory_usage = 20000000000;
SHOW CREATE SETTINGS PROFILE p;
-- CREATE SETTINGS PROFILE p SETTINGS
-- max_execution_time = 60,
-- max_memory_usage = 20000000000
MODIFY는 필드별로 병합하므로 값만 변경하면 기존 제약이 유지됩니다:
ALTER SETTINGS PROFILE p MODIFY SETTINGS max_memory_usage = 20000000000 MAX 30000000000;
ALTER SETTINGS PROFILE p MODIFY SETTINGS max_memory_usage = 25000000000;
SHOW CREATE SETTINGS PROFILE p;
-- ... max_memory_usage = 25000000000 MAX 30000000000 -- the MAX constraint is preserved
ADD SETTINGS
설정 추가하기(다른 것도 유지하며, 이미 있으면 완전히 재정의):
ALTER SETTINGS PROFILE p ADD SETTINGS max_threads = 8 MAX 16 READONLY;
MODIFY와 달리 값만으로 ADD를 다시 실행하면 그 설정에 대해 이전에 정의된 제약이 버려집니다:
ALTER SETTINGS PROFILE p ADD SETTINGS max_threads = 4;
SHOW CREATE SETTINGS PROFILE p;
-- ... max_threads = 4 -- the MAX and READONLY constraints are gone
DROP SETTINGS
하나 이상의 명명된 설정 제거:
ALTER SETTINGS PROFILE p DROP SETTINGS max_threads;
모든 설정을 한 번에 제거:
ALTER SETTINGS PROFILE p DROP ALL SETTINGS;
Working with inherited profiles
프로필의 자체 설정에 영향을 주지 않고 부모(상속된) 프로필 추가/제거:
ALTER SETTINGS PROFILE p ADD PROFILES base_profile;
ALTER SETTINGS PROFILE p DROP PROFILES base_profile;
ALTER SETTINGS PROFILE p DROP ALL PROFILES;