테이블 사이즈 vs. 인덱스 사이즈

Suresh Ramagiri -

ClustrixDB에서 테이블의 모든 부분을 인덱스로 간주합니다. 그러므로, system.table_sizes과 system.index_sizes에서 크기를 집계하면 동일할 것이라 예측할 수 있습니다. 그러나, index_sizes는 테이블 구성에 보다 세분화되어 있어 어떤 경우에는 유용할 수 있습니다.

Primary key가 없는 경우 테이블의 base representation은 __base로 나열됩니다. 이 경우 기본키(primary key)는 인덱스 목록의 base representation 대신 사용됩니다. 기본키(base representation을 포함하는)는 __idx_<table_name>__PRIMARY로 표시됩니다. 추가적인 인덱스는 이름별로 나열됩니다.

예:

sql> create table foo01 (id int, name varchar);
Query OK, 0 rows affected (0.32 sec)
sql> create table foo02 (id int not null primary key, name varchar);
Query OK, 0 rows affected (0.05 sec)
sql> create table foo03 (id int not null primary key, name varchar, key indexkey (name));
Query OK, 0 rows affected (0.05 sec)
sql> select * from system.table_sizes where `database` = 'example';
+----------+-------+--------+
| Database | Table | Bytes |
+----------+-------+--------+
| example | foo01 | 327680 |
| example | foo02 | 327680 |
| example | foo03 | 655360 |
+----------+-------+--------+
3 rows in set (0.12 sec)
sql> select * from system.index_sizes where `database` = 'example';
+----------+-------+----------------------+--------+
| Database | Table | Index | Bytes |
+----------+-------+----------------------+--------+
| example | foo01 | __base_foo01 | 327680 |
| example | foo02 | __idx_foo02__PRIMARY | 327680 |
| example | foo03 | __idx_foo03__PRIMARY | 327680 |
| example | foo03 | indexkey | 327680 |
+----------+-------+----------------------+--------+
4 rows in set (0.11 sec)
sql> select * from system.index_sizes where `database` = 'example';
+----------+-------+----------------------+--------+
| Database | Table | Index | Bytes |
+----------+-------+----------------------+--------+
| example | foo01 | __base_foo01 | 327680 |
| example | foo02 | __idx_foo02__PRIMARY | 327680 |
| example | foo03 | __idx_foo03__PRIMARY | 327680 |
| example | foo03 | indexkey | 327680 |
+----------+-------+----------------------+--------+
4 rows in set (0.11 sec)

 

base representation 또는 기본키(secondary index의 사이즈만 얻고자 하는 경우)을 제외하고 system.index_sizes 테이블을 쿼리하려면 다음 쿼리를 위의 쿼리에 추가하십시오:

AND `Index` NOT LIKE '%__base%' AND `Index` NOT LIKE '%__PRIMARY'

 

예:

sql> select * from system.index_sizes where `database` = 'example' and `Index` NOT LIKE '%__base%' AND `Index` NOT LIKE '%__PRIMARY';
+----------+-------+----------+--------+
| Database | Table | Index | Bytes |
+----------+-------+----------+--------+
| example | foo03 | indexkey | 327680 |
+----------+-------+----------+--------+
1 row in set (0.11 sec)

 

또 다른 질문이 있으십니까? 문의 등록

0 댓글

댓글을 남기려면 로그인하세요.
Zendesk 제공