Loading...
MySQL 9.5 Reference Manual 9.5의 25.5.9 ndb_desc — Describe NDB Tables의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
ndb_desc는 하나 이상의 NDB 테이블에 대한 상세한 설명을 제공합니다.
1ndb_desc -c connection_string tbl_name -d db_name [options] 2 3ndb_desc -c connection_string index_name -d db_name -t tbl_name
ndb_desc와 함께 사용할 수 있는 추가 옵션들은 이 절의 뒤쪽에 나와 있습니다.
MySQL 테이블 생성 및 데이터 삽입 구문:
1USE test; 2 3CREATE TABLE fish ( 4 id INT NOT NULL AUTO_INCREMENT, 5 name VARCHAR(20) NOT NULL, 6 length_mm INT NOT NULL, 7 weight_gm INT NOT NULL, 8 9 PRIMARY KEY pk (id), 10 UNIQUE KEY uk (name) 11) ENGINE=NDB; 12 13INSERT INTO fish VALUES 14 (NULL, 'guppy', 35, 2), (NULL, 'tuna', 2500, 150000), 15 (NULL, 'shark', 3000, 110000), (NULL, 'manta ray', 1500, 50000), 16 (NULL, 'grouper', 900, 125000), (NULL ,'puffer', 250, 2500);
ndb_desc의 출력:
1$> ./ndb_desc -c localhost fish -d test -p 2-- fish -- 3Version: 2 4Fragment type: HashMapPartition 5K Value: 6 6Min load factor: 78 7Max load factor: 80 8Temporary table: no 9Number of attributes: 4 10Number of primary keys: 1 11Length of frm data: 337 12Max Rows: 0 13Row Checksum: 1 14Row GCI: 1 15SingleUserMode: 0 16ForceVarPart: 1 17PartitionCount: 2 18FragmentCount: 2 19PartitionBalance: FOR_RP_BY_LDM 20ExtraRowGciBits: 0 21ExtraRowAuthorBits: 0 22TableStatus: Retrieved 23Table options: 24HashMap: DEFAULT-HASHMAP-3840-2 25-- Attributes -- 26id Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY AUTO_INCR 27name Varchar(20;latin1_swedish_ci) NOT NULL AT=SHORT_VAR ST=MEMORY DYNAMIC 28length_mm Int NOT NULL AT=FIXED ST=MEMORY DYNAMIC 29weight_gm Int NOT NULL AT=FIXED ST=MEMORY DYNAMIC 30-- Indexes -- 31PRIMARY KEY(id) - UniqueHashIndex 32PRIMARY(id) - OrderedIndex 33uk(name) - OrderedIndex 34uk$unique(name) - UniqueHashIndex 35-- Per partition info -- 36Partition Row count Commit count Frag fixed memory Frag varsized memory Extent_space Free extent_space 370 2 2 32768 32768 0 0 381 4 4 32768 32768 0 0
여러 테이블에 대한 정보를 한 번의 ndb_desc 호출로 얻으려면, 그 이름들을 공백으로 구분하여 사용하면 됩니다. 모든 테이블은 동일한 데이터베이스에 있어야 합니다.
특정 인덱스에 대한 추가 정보를 얻으려면, 여기에서 보이는 것처럼 --table(short form: -t) 옵션을 사용하고, ndb_desc의 첫 번째 인수로 인덱스 이름을 제공하면 됩니다:
1$> ./ndb_desc uk -d test -t fish 2-- uk -- 3Version: 2 4Base table: fish 5Number of attributes: 1 6Logging: 0 7Index type: OrderedIndex 8Index status: Retrieved 9-- Attributes -- 10name Varchar(20;latin1_swedish_ci) NOT NULL AT=SHORT_VAR ST=MEMORY 11-- IndexTable 10/uk -- 12Version: 2 13Fragment type: FragUndefined 14K Value: 6 15Min load factor: 78 16Max load factor: 80 17Temporary table: yes 18Number of attributes: 2 19Number of primary keys: 1 20Length of frm data: 0 21Max Rows: 0 22Row Checksum: 1 23Row GCI: 1 24SingleUserMode: 2 25ForceVarPart: 0 26PartitionCount: 2 27FragmentCount: 2 28FragmentCountType: ONE_PER_LDM_PER_NODE 29ExtraRowGciBits: 0 30ExtraRowAuthorBits: 0 31TableStatus: Retrieved 32Table options: 33-- Attributes -- 34name Varchar(20;latin1_swedish_ci) NOT NULL AT=SHORT_VAR ST=MEMORY 35NDB$TNODE Unsigned [64] PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY 36-- Indexes -- 37PRIMARY KEY(NDB$TNODE) - UniqueHashIndex
인덱스가 이런 방식으로 지정되면, --extra-partition-info 및
--extra-node-info 옵션은 아무 효과도 없습니다.
출력의 Version 컬럼은 테이블의 스키마 객체 버전을 포함합니다. 이 값을 해석하는 방법에 대한 정보는
NDB Schema Object Versions를 참조하십시오.
NDB_TABLE comment를 CREATE TABLE 및
ALTER TABLE 구문에 삽입하여 설정할 수 있는 테이블 속성 중 3가지는 ndb_desc 출력에서도 볼 수 있습니다. 테이블의 FRAGMENT_COUNT_TYPE은 항상
FragmentCountType 컬럼에 표시됩니다.
READ_ONLY 및
FULLY_REPLICATED가 1로 설정된 경우, 이 값들은 Table options 컬럼에 표시됩니다. 이는 mysql 클라이언트에서 다음 ALTER TABLE 구문을 실행한 후에 확인할 수 있습니다:
1mysql> ALTER TABLE fish COMMENT='NDB_TABLE=READ_ONLY=1,FULLY_REPLICATED=1'; 21 row in set, 1 warning (0.00 sec) 3 4mysql> SHOW WARNINGS\G 5+---------+------+---------------------------------------------------------------------------------------------------------+ 6| Level | Code | Message | 7+---------+------+---------------------------------------------------------------------------------------------------------+ 8| Warning | 1296 | Got error 4503 'Table property is FRAGMENT_COUNT_TYPE=ONE_PER_LDM_PER_NODE but not in comment' from NDB | 9+---------+------+---------------------------------------------------------------------------------------------------------+ 101 row in set (0.00 sec)
이 경고는 READ_ONLY=1이 테이블의 fragment count type이(또는 설정되어) ONE_PER_LDM_PER_NODE_GROUP이어야 함을 요구하기 때문에 발생합니다; NDB는 이런 경우 자동으로 이를 설정합니다. SHOW CREATE TABLE를 사용하여 ALTER TABLE 구문이 원하는 효과를 가지는지 확인할 수 있습니다:
1mysql> SHOW CREATE TABLE fish\G 2*************************** 1. row *************************** 3 Table: fish 4Create Table: CREATE TABLE `fish` ( 5 `id` int(11) NOT NULL AUTO_INCREMENT, 6 `name` varchar(20) NOT NULL, 7 `length_mm` int(11) NOT NULL, 8 `weight_gm` int(11) NOT NULL, 9 PRIMARY KEY (`id`), 10 UNIQUE KEY `uk` (`name`) 11) ENGINE=ndbcluster DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci 12COMMENT='NDB_TABLE=READ_BACKUP=1,FULLY_REPLICATED=1' 131 row in set (0.01 sec)
FRAGMENT_COUNT_TYPE이 명시적으로 설정되지 않았기 때문에, SHOW CREATE TABLE이 출력하는 comment 텍스트에는 해당 값이 표시되지 않습니다. 그러나 ndb_desc는 이 속성에 대해 업데이트된 값을 표시합니다. Table options 컬럼은 방금 활성화된 바이너리 속성을 보여줍니다. 이는(강조된 텍스트로) 여기 표시된 출력에서 확인할 수 있습니다:
1$> ./ndb_desc -c localhost fish -d test -p 2-- fish -- 3Version: 4 4Fragment type: HashMapPartition 5K Value: 6 6Min load factor: 78 7Max load factor: 80 8Temporary table: no 9Number of attributes: 4 10Number of primary keys: 1 11Length of frm data: 380 12Max Rows: 0 13Row Checksum: 1 14Row GCI: 1 15SingleUserMode: 0 16ForceVarPart: 1 17PartitionCount: 1 18FragmentCount: 1 19FragmentCountType: ONE_PER_LDM_PER_NODE_GROUP 20ExtraRowGciBits: 0 21ExtraRowAuthorBits: 0 22TableStatus: Retrieved 23Table options: readbackup, fullyreplicated 24HashMap: DEFAULT-HASHMAP-3840-1 25-- Attributes -- 26id Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY AUTO_INCR 27name Varchar(20;latin1_swedish_ci) NOT NULL AT=SHORT_VAR ST=MEMORY DYNAMIC 28length_mm Int NOT NULL AT=FIXED ST=MEMORY DYNAMIC 29weight_gm Int NOT NULL AT=FIXED ST=MEMORY DYNAMIC 30-- Indexes -- 31PRIMARY KEY(id) - UniqueHashIndex 32PRIMARY(id) - OrderedIndex 33uk(name) - OrderedIndex 34uk$unique(name) - UniqueHashIndex 35-- Per partition info -- 36Partition Row count Commit count Frag fixed memory Frag varsized memory Extent_space Free extent_space
이러한 테이블 속성에 대한 자세한 내용은 Section 15.1.24.12, “Setting NDB Comment Options”를 참조하십시오.
Extent_space 및 Free extent_space 컬럼은 컬럼을 디스크에 두고 있는 NDB 테이블에만 적용됩니다; 메모리 상의 컬럼만을 가지는 테이블의 경우, 이 컬럼은 항상 값 0을 포함합니다.
이를 사용법으로 보여 주기 위해, 이전 예제를 수정합니다. 먼저, 다음과 같이 필요한 Disk Data 객체를 생성해야 합니다:
1CREATE LOGFILE GROUP lg_1 2 ADD UNDOFILE 'undo_1.log' 3 INITIAL_SIZE 16M 4 UNDO_BUFFER_SIZE 2M 5 ENGINE NDB; 6 7ALTER LOGFILE GROUP lg_1 8 ADD UNDOFILE 'undo_2.log' 9 INITIAL_SIZE 12M 10 ENGINE NDB; 11 12CREATE TABLESPACE ts_1 13 ADD DATAFILE 'data_1.dat' 14 USE LOGFILE GROUP lg_1 15 INITIAL_SIZE 32M 16 ENGINE NDB; 17 18ALTER TABLESPACE ts_1 19 ADD DATAFILE 'data_2.dat' 20 INITIAL_SIZE 48M 21 ENGINE NDB;
(방금 보인 구문과 이들이 생성하는 객체들에 대한 자세한 내용은 Section 25.6.11.1, “NDB Cluster Disk Data Objects”, 그리고 Section 15.1.20, “CREATE LOGFILE GROUP Statement”, Section 15.1.25, “CREATE TABLESPACE Statement”를 참조하십시오.)
이제, 두 개의 컬럼을 디스크에 저장하는 버전의 fish 테이블을 생성하고 데이터로 채울 수 있습니다(이미 존재하는 경우 이전 버전의 테이블을 먼저 삭제):
1DROP TABLE IF EXISTS fish; 2 3CREATE TABLE fish ( 4 id INT NOT NULL AUTO_INCREMENT, 5 name VARCHAR(20) NOT NULL, 6 length_mm INT NOT NULL, 7 weight_gm INT NOT NULL, 8 9 PRIMARY KEY pk (id), 10 UNIQUE KEY uk (name) 11) TABLESPACE ts_1 STORAGE DISK 12ENGINE=NDB; 13 14INSERT INTO fish VALUES 15 (NULL, 'guppy', 35, 2), (NULL, 'tuna', 2500, 150000), 16 (NULL, 'shark', 3000, 110000), (NULL, 'manta ray', 1500, 50000), 17 (NULL, 'grouper', 900, 125000), (NULL ,'puffer', 250, 2500);
이 버전의 테이블에 대해 실행하면, ndb_desc는 다음과 같은 출력을 표시합니다:
1$> ./ndb_desc -c localhost fish -d test -p 2-- fish -- 3Version: 1 4Fragment type: HashMapPartition 5K Value: 6 6Min load factor: 78 7Max load factor: 80 8Temporary table: no 9Number of attributes: 4 10Number of primary keys: 1 11Length of frm data: 1001 12Max Rows: 0 13Row Checksum: 1 14Row GCI: 1 15SingleUserMode: 0 16ForceVarPart: 1 17PartitionCount: 2 18FragmentCount: 2 19PartitionBalance: FOR_RP_BY_LDM 20ExtraRowGciBits: 0 21ExtraRowAuthorBits: 0 22TableStatus: Retrieved 23Table options: readbackup 24HashMap: DEFAULT-HASHMAP-3840-2 25Tablespace id: 16 26Tablespace: ts_1 27-- Attributes -- 28id Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY AUTO_INCR 29name Varchar(80;utf8mb4_0900_ai_ci) NOT NULL AT=SHORT_VAR ST=MEMORY 30length_mm Int NOT NULL AT=FIXED ST=DISK 31weight_gm Int NOT NULL AT=FIXED ST=DISK 32-- Indexes -- 33PRIMARY KEY(id) - UniqueHashIndex 34PRIMARY(id) - OrderedIndex 35uk(name) - OrderedIndex 36uk$unique(name) - UniqueHashIndex 37-- Per partition info -- 38Partition Row count Commit count Frag fixed memory Frag varsized memory Extent_space Free extent_space 390 2 2 32768 32768 1048576 1044440 401 4 4 32768 32768 1048576 1044400
이는 각 partition에서 이 테이블에 대해 tablespace로부터 1048576 byte가 할당되었으며, 이 중 1044440 byte가 추가 저장을 위해 남아 있음을 의미합니다. 다시 말해, 현재 이 테이블의 디스크 기반 컬럼 데이터를 저장하는 데 partition당 1048576 - 1044440 = 4136 byte가 사용되고 있습니다. Free extent_space로 표시된 byte 수는 fish 테이블의 on-disk 컬럼 데이터를 저장하는 데만 사용 가능하며, 이 때문에 Information Schema FILES
테이블에서 조회할 때는 보이지 않습니다.
Tablespace id 및
Tablespace도 Disk Data 테이블에 대해 표시됩니다.
완전 복제된 테이블의 경우, ndb_desc는 primary partition fragment replica를 보유한 노드만 표시하며, copy fragment replica만 보유한 노드는 무시합니다. 이러한 정보는 mysql 클라이언트에서
ndbinfo 데이터베이스의
table_distribution_status,
table_fragments,
table_info,
table_replicas 테이블로부터 얻을 수 있습니다.
ndb_desc와 함께 사용할 수 있는 모든 옵션은 다음 표에 나와 있습니다. 각 옵션에 대한 추가 설명은 표 뒤에 이어집니다.
--auto-inc,
-a테이블에 AUTO_INCREMENT 컬럼이 있는 경우, 해당 컬럼의 다음 값을 표시합니다.
--blob-info,
-b하위 BLOB 및
TEXT 컬럼에 대한 정보를 포함합니다.
이 옵션을 사용하려면
--extra-partition-info
(-p) 옵션도 함께 사용해야 합니다.
| Property | Value |
|---|---|
| Command-Line Format | --character-sets-dir=path |
character set이 들어 있는 디렉터리입니다.
| Property | Value |
|---|---|
| Command-Line Format | --connect-retries=# |
| Type | Integer |
| Default Value | 12 |
| Minimum Value | 0 |
| Maximum Value | 12 |
포기하기 전에 커넥션을 재시도할 횟수입니다.
| Property | Value |
|---|---|
| Command-Line Format | --connect-retry-delay=# |
| Type | Integer |
| Default Value | 5 |
| Minimum Value | 0 |
| Maximum Value | 5 |
management server에 접속을 시도하는 각 시도 사이에 대기할 초 수입니다.
| Property | Value |
|---|---|
| Command-Line Format | --connect-string=connection_string |
| Type | String |
| Default Value | [none] |
--ndb-connectstring과 동일합니다.
--context,
-x스키마, 데이터베이스 이름, 테이블 이름, 테이블의 내부 ID와 같은 추가적인 컨텍스트 정보를 표시합니다.
| Property | Value |
|---|---|
| Command-Line Format | --core-file |
에러 발생 시 core 파일을 기록합니다; 디버깅에 사용됩니다.
테이블을 찾아야 할 데이터베이스를 지정합니다.
| Property | Value |
|---|---|
| Command-Line Format | --defaults-extra-file=path |
| Type | String |
| Default Value | [none] |
global 파일을 읽은 후에 주어진 파일을 읽습니다.
| Property | Value |
|---|---|
| Command-Line Format | --defaults-file=path |
| Type | String |
| Default Value | [none] |
주어진 파일에서만 기본 옵션을 읽습니다.
| Property | Value |
|---|---|
| Command-Line Format | --defaults-group-suffix=string |
| Type | String |
| Default Value | [none] |
concat(group, suffix) 형태의 그룹도 함께 읽습니다.
테이블 partition과 그것들이 위치한 데이터 노드 간의 매핑에 대한 정보를 포함합니다. 이 정보는 분산 인지 메커니즘을 검증하고, NDB Cluster에 저장된 데이터에 보다 효율적으로 접근하는 애플리케이션을 지원하는 데 유용할 수 있습니다.
이 옵션을 사용하려면
--extra-partition-info
(-p) 옵션도 함께 사용해야 합니다.
테이블 partition에 대한 추가 정보를 출력합니다.
| Property | Value |
|---|---|
| Command-Line Format | --help |
help 텍스트를 표시하고 종료합니다.
| Property | Value |
|---|---|
| Command-Line Format | --login-path=path |
| Type | String |
| Default Value | [none] |
login 파일에서 주어진 path를 읽습니다.
| Property | Value |
|---|---|
| Command-Line Format | --no-login-paths |
login path 파일에서 옵션을 읽는 것을 건너뜁니다.
| Property | Value |
|---|---|
| Command-Line Format | --ndb-connectstring=connection_string |
| Type | String |
| Default Value | [none] |
ndb_mgmd에 연결하기 위한 커넥트 문자열을 설정합니다. 구문:
[nodeid=id;][host=]hostname[:port].
NDB_CONNECTSTRING 및 my.cnf에 있는 항목을 재정의합니다.
| Property | Value |
|---|---|
| Command-Line Format | --ndb-mgm-tls=level |
| Type | Enumeration |
| Default Value | relaxed |
| Valid Values | relaxed<br>strict |
management server에 연결할 때 요구되는 TLS support 수준을 설정합니다; relaxed 또는
strict 중 하나입니다.
relaxed(기본값)는 TLS 커넥션을 시도하지만 성공이 필수는 아님을 의미합니다; strict는 연결에 TLS가 필수임을 의미합니다.
| Property | Value |
|---|---|
| Command-Line Format | --ndb-mgmd-host=connection_string |
| Type | String |
| Default Value | [none] |
--ndb-connectstring과 동일합니다.
| Property | Value |
|---|---|
| Command-Line Format | --ndb-nodeid=# |
| Type | Integer |
| Default Value | [none] |
이 노드의 node ID를 설정하며,
--ndb-connectstring에 의해 설정된 ID를 재정의합니다.
| Property | Value |
|---|---|
| Command-Line Format | --ndb-optimized-node-selection |
트랜잭션을 위한 노드 선택 최적화를 활성화합니다. 기본적으로 활성화되어 있으며, 비활성화하려면
--skip-ndb-optimized-node-selection을 사용합니다.
| Property | Value |
|---|---|
| Command-Line Format | --ndb-tls-search-path=list |
| Type | Path name |
| Default Value (Unix) | $HOME/ndb-tls |
| Default Value (Windows) | $HOMEDIR/ndb-tls |
CA 파일을 찾기 위해 검색할 디렉터리 목록을 지정합니다. Unix 플랫폼에서는 디렉터리 이름이 콜론(:)으로 구분되고, Windows 시스템에서는 세미콜론(;)이 구분자로 사용됩니다. 디렉터리 참조는 상대 또는 절대일 수 있습니다; 하나 이상의 환경 변수를 포함할 수 있으며, 각 변수는 달러 기호($)를 prefix로 갖고 사용 전에 확장됩니다.
검색은 가장 왼쪽에 있는 디렉터리부터 시작하여 파일이 발견될 때까지 왼쪽에서 오른쪽으로 진행됩니다. 빈 문자열은 빈 search path를 나타내며, 이 경우 모든 검색이 실패합니다. 단일 점(.)으로 구성된 문자열은 search path가 현재 working directory로 제한됨을 나타냅니다.
search path가 제공되지 않으면 컴파일 시에 지정된 기본값이 사용됩니다. 이 값은 사용하는 플랫폼에 따라 달라집니다. Windows에서는 \ndb-tls이고, 그 외 플랫폼(Linux 포함)에서는 $HOME/ndb-tls입니다. 이는 NDB Cluster를
-DWITH_NDB_TLS_SEARCH_PATH를 사용해 컴파일함으로써 재정의할 수 있습니다.
| Property | Value |
|---|---|
| Command-Line Format | --no-defaults |
login 파일 이외의 어떤 옵션 파일에서도 기본 옵션을 읽지 않습니다.
| Property | Value |
|---|---|
| Command-Line Format | --print-defaults |
프로그램 인자 리스트를 출력하고 종료합니다.
--retries=#,
-r포기하기 전에 이 횟수만큼 연결을 시도합니다. 초당 한 번씩 연결을 시도합니다.
--table=tbl_name,
-t인덱스를 찾을 테이블을 지정합니다.
--unqualified,
-uunqualified 테이블 이름을 사용합니다.
| Property | Value |
|---|---|
| Command-Line Format | --usage |
help 텍스트를 표시하고 종료합니다;
--help과 동일합니다.
| Property | Value |
|---|---|
| Command-Line Format | --version |
version 정보를 표시하고 종료합니다.
출력에 나열된 테이블 인덱스는 ID 순으로 정렬됩니다.
25.5.8 ndb_delete_all — Delete All Rows from an NDB Table
25.5.10 ndb_drop_index — Drop Index from an NDB Table