SHOW 문
SHOW 문
SHOW 문은 데이터베이스, 테이블, 열, 사전, 사용자 등 ClickHouse 객체에 대한 정보를 조회할 때 사용해요. SHOW CREATE (TABLE|DATABASE|USER)는 다음 설정이 켜져 있지 않으면 비밀(secret)을 숨겨요.
출처: 문서
본문
SHOW CREATE (TABLE|DATABASE|USER)는 다음 설정이 켜져 있지 않으면 비밀을 숨겨요.
추가로 사용자는 displaySecretsInShowAndSelect 권한을 가지고 있어야 해요.
SHOW CREATE TABLE | DICTIONARY | VIEW | DATABASE
이 문들은 지정된 객체를 만드는 데 사용된 CREATE 쿼리를 담은 단일 String 타입 열을 반환해요.
Syntax (구문)
SHOW [CREATE] TABLE | TEMPORARY TABLE | DICTIONARY | VIEW | DATABASE [db.]table|view [INTO OUTFILE filename] [FORMAT format]
이 문을 사용해 시스템 테이블의 CREATE 쿼리를 얻으면 테이블 구조만 선언하는 가짜(fake) 쿼리를 얻게 되며, 이를 사용해 테이블을 만들 수는 없어요.
SHOW DATABASES
이 문은 모든 데이터베이스의 목록을 출력해요.
Syntax (구문)
SHOW DATABASES [[NOT] LIKE | ILIKE '<pattern>'] [LIMIT <N>] [INTO OUTFILE filename] [FORMAT format]
다음 쿼리와 동일해요.
SELECT name FROM system.databases [WHERE name [NOT] LIKE | ILIKE '<pattern>'] [LIMIT <N>] [INTO OUTFILE filename] [FORMAT format]
Examples (예제)
이 예제에서는 SHOW를 사용해 이름에 'de'라는 문자 시퀀스가 포함된 데이터베이스 이름을 얻어요.
Query (쿼리)
SHOW DATABASES LIKE '%de%'
Response (응답)
┌─name────┐
│ default │
└─────────┘
대소문자를 구분하지 않는 방식으로도 할 수 있어요.
Query (쿼리)
SHOW DATABASES ILIKE '%DE%'
Response (응답)
┌─name────┐
│ default │
└─────────┘
또는 이름에 'de'가 포함되지 않은 데이터베이스 이름을 얻을 수도 있어요.
Query (쿼리)
SHOW DATABASES NOT LIKE '%de%'
Response (응답)
┌─name───────────────────────────┐
│ _temporary_and_external_tables │
│ system │
│ test │
│ tutorial │
└────────────────────────────────┘
마지막으로 처음 두 개 데이터베이스의 이름만 얻을 수 있어요.
Query (쿼리)
SHOW DATABASES LIMIT 2
Response (응답)
┌─name───────────────────────────┐
│ _temporary_and_external_tables │
│ default │
└────────────────────────────────┘
See also (참고)
SHOW TABLES
SHOW TABLES 문은 테이블 목록을 표시해요.
Syntax (구문)
SHOW [FULL] [TEMPORARY] TABLES [{FROM | IN} <db>] [[NOT] LIKE | ILIKE '<pattern>'] [LIMIT <N>] [INTO OUTFILE <filename>] [FORMAT <format>]
FROM 절을 지정하지 않으면 쿼리는 현재 데이터베이스의 테이블 목록을 반환해요. 이 문은 다음 쿼리와 동일해요.
SELECT name FROM system.tables [WHERE name [NOT] LIKE | ILIKE '<pattern>'] [LIMIT <N>] [INTO OUTFILE <filename>] [FORMAT <format>]
Examples (예제)
이 예제에서는 SHOW TABLES 문을 사용해 이름에 'user'가 포함된 모든 테이블을 찾아요.
Query (쿼리)
SHOW TABLES FROM system LIKE '%user%'
Response (응답)
┌─name─────────────┐
│ user_directories │
│ users │
└──────────────────┘
대소문자를 구분하지 않는 방식으로도 할 수 있어요.
Query (쿼리)
SHOW TABLES FROM system ILIKE '%USER%'
Response (응답)
┌─name─────────────┐
│ user_directories │
│ users │
└──────────────────┘
또는 이름에 's'가 포함되지 않은 테이블을 찾을 수도 있어요.
Query (쿼리)
SHOW TABLES FROM system NOT LIKE '%s%'
Response (응답)
┌─name─────────┐
│ metric_log │
│ metric_log_0 │
│ metric_log_1 │
└──────────────┘
마지막으로 처음 두 개 테이블의 이름만 얻을 수 있어요.
Query (쿼리)
SHOW TABLES FROM system LIMIT 2
Response (응답)
┌─name───────────────────────────┐
│ aggregate_function_combinators │
│ asynchronous_metric_log │
└────────────────────────────────┘
See also (참고)
SHOW COLUMNS
SHOW COLUMNS 문은 열 목록을 표시해요.
Syntax (구문)
SHOW [EXTENDED] [FULL] COLUMNS {FROM | IN} <table> [{FROM | IN} <db>] [{[NOT] {LIKE | ILIKE} '<pattern>' | WHERE <expr>}] [LIMIT <N>] [INTO
OUTFILE <filename>] [FORMAT <format>]
데이터베이스와 테이블 이름은 축약 형식 <db>.<table>로 지정할 수 있어요. 즉 FROM tab FROM db와 FROM db.tab은 동등해요. 데이터베이스가 지정되지 않으면 쿼리는 현재 데이터베이스의 열 목록을 반환해요. 선택적 키워드도 두 가지 있어요: EXTENDED와 FULL. EXTENDED 키워드는 현재 효과가 없으며 MySQL 호환성을 위해 존재해요. FULL 키워드는 출력에 collation, comment, privilege 열을 포함하게 해요. SHOW COLUMNS 문은 다음 구조의 결과 테이블을 생성해요.
| Column (열) | Description (설명) | Type |
|---|---|---|
| field | 열의 이름 | String |
| type | 열 데이터 타입. MySQL 와이어 프로토콜로 쿼리했다면 MySQL의 동등한 타입 이름이 표시돼요. | String |
| null | 열 타입이 Nullable이면 YES, 그렇지 않으면 NO | String |
| key | 열이 기본 키의 일부이면 PRI, 정렬 키의 일부이면 SOR, 그 외에는 비어 있음 | String |
| default | 열이 ALIAS, DEFAULT, MATERIALIZED 타입이면 기본 표현식, 그 외에는 NULL | Nullable(String) |
| extra | 추가 정보, 현재 사용되지 않음 | String |
| collation | (FULL 키워드 지정 시에만) 열의 collation. ClickHouse에는 열별 collation이 없어 항상 NULL | Nullable(String) |
| comment | (FULL 키워드 지정 시에만) 열에 대한 주석 | String |
| privilege | (FULL 키워드 지정 시에만) 이 열에 대한 권한, 현재 사용할 수 없음 | String |
Examples (예제)
이 예제에서는 SHOW COLUMNS 문을 사용해 'orders' 테이블에서 'delivery_'로 시작하는 모든 열에 대한 정보를 얻어요.
Query (쿼리)
SHOW COLUMNS FROM 'orders' LIKE 'delivery_%'
Response (응답)
┌─field───────────┬─type─────┬─null─┬─key─────┬─default─┬─extra─┐
│ delivery_date │ DateTime │ 0 │ PRI SOR │ ᴺᵁᴸᴸ │ │
│ delivery_status │ Bool │ 0 │ │ ᴺᵁᴸᴸ │ │
└─────────────────┴──────────┴──────┴─────────┴─────────┴───────┘
See also (참고)
SHOW DICTIONARIES
SHOW DICTIONARIES 문은 Dictionaries 목록을 표시해요.
Syntax (구문)
SHOW DICTIONARIES [FROM <db>] [LIKE '<pattern>'] [LIMIT <N>] [INTO OUTFILE <filename>] [FORMAT <format>]
FROM 절을 지정하지 않으면 쿼리는 현재 데이터베이스의 사전 목록을 반환해요. SHOW DICTIONARIES 쿼리와 같은 결과를 다음과 같은 방식으로 얻을 수 있어요.
SELECT name FROM system.dictionaries WHERE database = <db> [AND name LIKE <pattern>] [LIMIT <N>] [INTO OUTFILE <filename>] [FORMAT <format>]
Examples (예제)
다음 쿼리는 system 데이터베이스의 테이블 목록에서 이름에 reg가 포함된 처음 두 행을 선택해요.
Query (쿼리)
SHOW DICTIONARIES FROM db LIKE '%reg%' LIMIT 2
Response (응답)
┌─name─────────┐
│ regions │
│ region_names │
└──────────────┘
SHOW INDEX
테이블의 기본 키 및 데이터 스킵핑 인덱스 목록을 표시해요. 이 문은 주로 MySQL 호환성을 위해 존재해요. 시스템 테이블 system.tables(기본 키용)과 system.data_skipping_indices(데이터 스킵핑 인덱스용)이 동등한 정보를 제공하지만 ClickHouse에 더 자연스러운 방식으로 제공해요.
Syntax (구문)
SHOW [EXTENDED] {INDEX | INDEXES | INDICES | KEYS } {FROM | IN} <table> [{FROM | IN} <db>] [WHERE <expr>] [INTO OUTFILE <filename>] [FORMAT <format>]
데이터베이스와 테이블 이름은 축약 형식 <db>.<table>로 지정할 수 있어요. 즉 FROM tab FROM db와 FROM db.tab은 동등해요. 데이터베이스가 지정되지 않으면 쿼리는 현재 데이터베이스를 데이터베이스로 간주해요. 선택적 키워드 EXTENDED는 현재 효과가 없으며 MySQL 호환성을 위해 존재해요. 이 문은 다음 구조의 결과 테이블을 생성해요.
| Column (열) | Description (설명) | Type |
|---|---|---|
| table | 테이블의 이름. | String |
| non_unique | ClickHouse는 유일성 제약을 지원하지 않으므로 항상 1. | UInt8 |
| key_name | 인덱스의 이름. 인덱스가 기본 키 인덱스이면 PRIMARY. | String |
| seq_in_index | 기본 키 인덱스의 경우 1부터 시작하는 열의 위치. 데이터 스킵핑 인덱스의 경우: 항상 1. | UInt8 |
| column_name | 기본 키 인덱스의 경우 열의 이름. 데이터 스킵핑 인덱스의 경우: '' (빈 문자열), "expression" 필드를 참고. | String |
| collation | 인덱스에서 열의 정렬: 오름차순이면 A, 내림차순이면 D, 정렬되지 않았으면 NULL. | Nullable(String) |
| cardinality | 인덱스 카디널리티(인덱스의 고유 값 수)의 추정치. 현재 항상 0. | UInt64 |
| sub_part | ClickHouse는 MySQL 같은 인덱스 접두사를 지원하지 않으므로 항상 NULL. | Nullable(String) |
| packed | ClickHouse는 (MySQL 같은) packed 인덱스를 지원하지 않으므로 항상 NULL. | Nullable(String) |
| null | 현재 사용되지 않음 | |
| index_type | 인덱스 타입, 예: PRIMARY, MINMAX, BLOOM_FILTER 등. | String |
| comment | 인덱스에 대한 추가 정보, 현재 항상 '' (빈 문자열). | String |
| index_comment | ClickHouse의 인덱스는 (MySQL처럼) COMMENT 필드를 가질 수 없으므로 '' (빈 문자열). | String |
| visible | 인덱스가 옵티마이저에 보이는지 여부, 항상 YES. | String |
| expression | 데이터 스킵핑 인덱스의 경우 인덱스 표현식. 기본 키 인덱스의 경우: '' (빈 문자열). | String |
Examples (예제)
이 예제에서는 SHOW INDEX 문을 사용해 'tbl' 테이블의 모든 인덱스에 대한 정보를 얻어요.
Query (쿼리)
SHOW INDEX FROM 'tbl'
Response (응답)
┌─table─┬─non_unique─┬─key_name─┬─seq_in_index─┬─column_name─┬─collation─┬─cardinality─┬─sub_part─┬─packed─┬─null─┬─index_type───┬─comment─┬─index_comment─┬─visible─┬─expression─┐
│ tbl │ 1 │ blf_idx │ 1 │ 1 │ ᴺᵁᴸᴸ │ 0 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ BLOOM_FILTER │ │ │ YES │ d, b │
│ tbl │ 1 │ mm1_idx │ 1 │ 1 │ ᴺᵁᴸᴸ │ 0 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ MINMAX │ │ │ YES │ a, c, d │
│ tbl │ 1 │ mm2_idx │ 1 │ 1 │ ᴺᵁᴸᴸ │ 0 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ MINMAX │ │ │ YES │ c, d, e │
│ tbl │ 1 │ PRIMARY │ 1 │ c │ A │ 0 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ PRIMARY │ │ │ YES │ │
│ tbl │ 1 │ PRIMARY │ 2 │ a │ A │ 0 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ PRIMARY │ │ │ YES │ │
│ tbl │ 1 │ set_idx │ 1 │ 1 │ ᴺᵁᴸᴸ │ 0 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ SET │ │ │ YES │ e │
└───────┴────────────┴──────────┴──────────────┴─────────────┴───────────┴─────────────┴──────────┴────────┴──────┴──────────────┴─────────┴───────────────┴─────────┴────────────┘
See also (참고)
SHOW PROCESSLIST
현재 처리 중인 쿼리 목록을 담은 system.processes 테이블의 내용을 출력해요. SHOW PROCESSLIST 쿼리는 제외돼요.
Syntax (구문)
SHOW PROCESSLIST [INTO OUTFILE filename] [FORMAT format]
SELECT * FROM system.processes 쿼리는 모든 현재 쿼리에 대한 데이터를 반환해요. 콘솔에서 실행:
$ watch -n1 "clickhouse-client --query='SHOW PROCESSLIST'"
SHOW GRANTS
SHOW GRANTS 문은 사용자에 대한 권한을 보여줘요.
Syntax (구문)
SHOW GRANTS [FOR user1 [, user2 ...]] [WITH IMPLICIT] [FINAL]
사용자를 지정하지 않으면 쿼리는 현재 사용자의 권한을 반환해요. WITH IMPLICIT 수정자는 암시적 부여(예: GRANT SELECT ON system.one)를 표시할 수 있게 해줘요. FINAL 수정자는 사용자와 부여된 역할(상속 포함)의 모든 권한을 병합해요.
SHOW CREATE USER
SHOW CREATE USER 문은 user creation에서 사용된 매개변수를 보여줘요.
Syntax (구문)
SHOW CREATE USER [name1 [, name2 ...] | CURRENT_USER]
SHOW CREATE ROLE
SHOW CREATE ROLE 문은 role creation에서 사용된 매개변수를 보여줘요.
Syntax (구문)
SHOW CREATE ROLE name1 [, name2 ...]
SHOW CREATE ROW POLICY
SHOW CREATE ROW POLICY 문은 row policy creation에서 사용된 매개변수를 보여줘요.
Syntax (구문)
SHOW CREATE [ROW] POLICY name ON [database1.]table1 [, [database2.]table2 ...]
SHOW CREATE QUOTA
SHOW CREATE QUOTA 문은 quota creation에서 사용된 매개변수를 보여줘요.
Syntax (구문)
SHOW CREATE QUOTA [name1 [, name2 ...] | CURRENT]
SHOW CREATE SETTINGS PROFILE
SHOW CREATE SETTINGS PROFILE 문은 settings profile creation에서 사용된 매개변수를 보여줘요.
Syntax (구문)
SHOW CREATE [SETTINGS] PROFILE name1 [, name2 ...]
SHOW USERS
SHOW USERS 문은 user account 이름 목록을 반환해요. 사용자 계정 매개변수를 보려면 시스템 테이블 system.users를 참고해요.
Syntax (구문)
SHOW USERS
SHOW ROLES
SHOW ROLES 문은 roles 목록을 반환해요. 다른 매개변수를 보려면 시스템 테이블 system.roles과 system.role_grants를 참고해요.
Syntax (구문)
SHOW [CURRENT|ENABLED] ROLES
SHOW PROFILES
SHOW PROFILES 문은 setting profiles 목록을 반환해요. 사용자 계정 매개변수를 보려면 시스템 테이블 settings_profiles을 참고해요.
Syntax (구문)
SHOW [SETTINGS] PROFILES
SHOW POLICIES
SHOW POLICIES 문은 지정된 테이블에 대한 row policies 목록을 반환해요. 사용자 계정 매개변수를 보려면 시스템 테이블 system.row_policies를 참고해요.
Syntax (구문)
SHOW [ROW] POLICIES [ON [db.]table]
SHOW QUOTAS
SHOW QUOTAS 문은 quotas 목록을 반환해요. 쿼터 매개변수를 보려면 시스템 테이블 system.quotas를 참고해요.
Syntax (구문)
SHOW QUOTAS
SHOW QUOTA
SHOW QUOTA 문은 모든 사용자 또는 현재 사용자에 대한 quota 소비량을 반환해요. 다른 매개변수를 보려면 시스템 테이블 system.quotas_usage과 system.quota_usage를 참고해요.
Syntax (구문)
SHOW [CURRENT] QUOTA
SHOW ACCESS
SHOW ACCESS 문은 모든 users, roles, profiles 등과 그들의 모든 grants를 보여줘요.
Syntax (구문)
SHOW ACCESS
SHOW CLUSTER(S)
SHOW CLUSTER(S) 문은 클러스터 목록을 반환해요. 사용 가능한 모든 클러스터는 system.clusters 테이블에 나열돼요. SHOW CLUSTER name 쿼리는 지정된 클러스터 이름에 대해 system.clusters 테이블의 cluster, shard_num, replica_num, host_name, host_address, port를 표시해요.
Syntax (구문)
SHOW CLUSTER '<name>'
SHOW CLUSTERS [[NOT] LIKE|ILIKE '<pattern>'] [LIMIT <N>]
Examples (예제)
Query (쿼리)
SHOW CLUSTERS;
Response (응답)
┌─cluster──────────────────────────────────────┐
│ test_cluster_two_shards │
│ test_cluster_two_shards_internal_replication │
│ test_cluster_two_shards_localhost │
│ test_shard_localhost │
│ test_shard_localhost_secure │
│ test_unavailable_shard │
└──────────────────────────────────────────────┘
Query (쿼리)
SHOW CLUSTERS LIKE 'test%' LIMIT 1;
Response (응답)
┌─cluster─────────────────┐
│ test_cluster_two_shards │
└─────────────────────────┘
Query (쿼리)
SHOW CLUSTER 'test_shard_localhost' FORMAT Vertical;
Response (응답)
Row 1:
──────
cluster: test_shard_localhost
shard_num: 1
replica_num: 1
host_name: localhost
host_address: 127.0.0.1
port: 9000
SHOW SETTINGS
SHOW SETTINGS 문은 시스템 설정과 그 값의 목록을 반환해요. system.settings 테이블에서 데이터를 선택해요.
Syntax (구문)
SHOW [CHANGED] SETTINGS LIKE|ILIKE <name>
Clauses (절)
LIKE|ILIKE는 설정 이름에 대한 일치 패턴을 지정할 수 있게 해줘요. %나 _ 같은 glob을 포함할 수 있어요. LIKE 절은 대소문자를 구분하고, ILIKE는 대소문자를 구분하지 않아요. CHANGED 절을 사용하면 쿼리는 기본값에서 변경된 설정만 반환해요.
Examples (예제)
LIKE 절이 있는 쿼리:
Query (쿼리)
SHOW SETTINGS LIKE 'send_timeout';
Response (응답)
┌─name─────────┬─type────┬─value─┐
│ send_timeout │ Seconds │ 300 │
└──────────────┴─────────┴───────┘
ILIKE 절이 있는 쿼리:
Query (쿼리)
SHOW SETTINGS ILIKE '%CONNECT_timeout%'
Response (응답)
┌─name────────────────────────────────────┬─type─────────┬─value─┐
│ connect_timeout │ Seconds │ 10 │
│ connect_timeout_with_failover_ms │ Milliseconds │ 50 │
│ connect_timeout_with_failover_secure_ms │ Milliseconds │ 100 │
└─────────────────────────────────────────┴──────────────┴───────┘
CHANGED 절이 있는 쿼리:
Query (쿼리)
SHOW CHANGED SETTINGS ILIKE '%MEMORY%'
Response (응답)
┌─name─────────────┬─type───┬─value───────┐
│ max_memory_usage │ UInt64 │ 10000000000 │
└──────────────────┴────────┴─────────────┘
SHOW SETTING
SHOW SETTING 문은 지정된 설정 이름의 설정 값을 출력해요.
Syntax (구문)
SHOW SETTING <name>
See also (참고)
- system.settings 테이블
SHOW FILESYSTEM CACHES
Examples (예제)
Query (쿼리)
SHOW FILESYSTEM CACHES
Response (응답)
┌─Caches────┐
│ s3_cache │
└───────────┘
See also (참고)
- system.settings 테이블
SHOW ENGINES
SHOW ENGINES 문은 서버가 지원하는 테이블 엔진의 설명과 기능 지원 정보를 담은 system.table_engines 테이블의 내용을 출력해요.
Syntax (구문)
SHOW ENGINES [INTO OUTFILE filename] [FORMAT format]
See also (참고)
SHOW FUNCTIONS
SHOW FUNCTIONS 문은 system.functions 테이블의 내용을 출력해요.
Syntax (구문)
SHOW FUNCTIONS [LIKE | ILIKE '<pattern>']
LIKE 또는 ILIKE 절이 지정되면 쿼리는 이름이 제공된 <pattern>과 일치하는 시스템 함수 목록을 반환해요.
See Also (참고)
- system.functions 테이블
SHOW MERGES
SHOW MERGES 문은 merges 목록을 반환해요. 모든 merges는 system.merges 테이블에 나열돼요.
| Column (열) | Description (설명) |
|---|---|
| table | 테이블 이름. |
| database | 테이블이 속한 데이터베이스의 이름. |
| estimate_complete | 완료까지의 예상 시간(초). |
| elapsed | merge 시작 이후 경과 시간(초). |
| progress | 완료된 작업의 백분율(0-100). |
| is_mutation | 이 프로세스가 파트 mutation이면 1. |
| size_compressed | 병합된 파트의 압축 데이터 총 크기. |
| memory_usage | merge 프로세스의 메모리 소비량. |
Syntax (구문)
SHOW MERGES [[NOT] LIKE|ILIKE '<table_name_pattern>'] [LIMIT <N>]
Examples (예제)
Query (쿼리)
SHOW MERGES;
Response (응답)
┌─table──────┬─database─┬─estimate_complete─┬─elapsed─┬─progress─┬─is_mutation─┬─size_compressed─┬─memory_usage─┐
│ your_table │ default │ 0.14 │ 0.36 │ 73.01 │ 0 │ 5.40 MiB │ 10.25 MiB │
└────────────┴──────────┴───────────────────┴─────────┴──────────┴─────────────┴─────────────────┴──────────────┘
Query (쿼리)
SHOW MERGES LIKE 'your_t%' LIMIT 1;
Response (응답)
┌─table──────┬─database─┬─estimate_complete─┬─elapsed─┬─progress─┬─is_mutation─┬─size_compressed─┬─memory_usage─┐
│ your_table │ default │ 0.14 │ 0.36 │ 73.01 │ 0 │ 5.40 MiB │ 10.25 MiB │
└────────────┴──────────┴───────────────────┴─────────┴──────────┴─────────────┴─────────────────┴──────────────┘
SHOW CREATE MASKING POLICY
SHOW CREATE MASKING POLICY 문은 masking policy creation에서 사용된 매개변수를 보여줘요.
Syntax (구문)
SHOW CREATE MASKING POLICY name ON [database.]table