Posting

Machbase의 최신 소식을 지금 만나보세요

[MACHBASE 테스트] 사용량 확인

마크베이스를 설치하고 운영하면서 각종 사용 현황에 대한 모니터링이 필요할 때가 있습니다. 운영 엔지니어는 반드시 서비스가 하드웨어 자원내에서 적정하게 동작하고 있는지 확인해야 합니다.

  • 연결된 세션의 갯수
  • 수행중인 쿼리 상세
  • 메모리 사용량
  • 디스크 사용량

마크베이스는 meta 테이블과 virtual 테이블을 제공하고 있습니다. 이 2가지 종류의 테이블을 통해 다양한 정보들을 모니터링할 수 있습니다. 마크베이스 사용량은 주로 virtual 테이블을 통해 확인 가능하다.

  • meta 테이블 : M$로 시작하며 사용자가 만든 테이블과 인덱스에 대한 정보를 확인할 수 있습니다.
  • virtual 테이블 : V$로 시작하며 데이터베이스 전체 사용에 대한 각종 통계 및 정보를 확인할 수 있습니다.

1. 접속 세션(Session)

현재 마크베이스에 접속한 세션의 개수는 V$SESSION 테이블을 통해 확인합니다. 아래는 실행 결과 입니다.

Mach> SELECT COUNT(*) FROM V$SESSION;
ID CLOSED USER_ID LOGIN_TIME SQL_LOGGING SHOW_HIDDEN_COLS FEEDBACK_APPEND_ERROR
---------------------------------------------------------------------------------------------------------------
DEFAULT_DATE_FORMAT HASH_BUCKET_SIZE MAX_QPX_MEM
---------------------------------------------------------------------------------------------------------------
RS_CACHE_ENABLE RS_CACHE_TIME_BOUND_MSEC RS_CACHE_MAX_MEMORY_PER_QUERY RS_CACHE_MAX_RECORD_PER_QUERY
---------------------------------------------------------------------------------------------------------------
RS_CACHE_APPROXIMATE_RESULT_ENABLE
-------------------------------------
11520873 0 1 2019-07-31 00:57:02 657:073:021 11 0 1
YYYY-MM-DD HH24:MI:SS mmm:uuu:nnn 20011 524288000
1 1000 16777216 50000
0
11409227 0 1 2019-07-28 11:24:13 079:009:793 11 0 1
YYYY-MM-DD HH24:MI:SS mmm:uuu:nnn 20011 524288000
1 1000 16777216 50000
0
11409226 0 1 2019-07-28 11:24:13 078:812:443 11 0 1
YYYY-MM-DD HH24:MI:SS mmm:uuu:nnn 20011 524288000
1 1000 16777216 50000
0
[3] row(s) selected.

2. 수행중인 쿼리(Statement)

현재 수행중인 SQL Statement 는 V$STMT 테이블을 통해 확인 가능합니다.

Mach> SELECT * FROM V$STMT;
ID SESS_ID STATE RECORD_SIZE
-----------------------------------------------------
QUERY
------------------------------------------------------------------------------------
0 11409227 3 273
SELECT host, count(*) FROM weblog group by host order by host LIMIT 1000
0 11409226 3 8
SELECT COUNT(*) AS cnt FROM weblog
0 11520873 3 276
select * from v$stmt
[3] row(s) selected.

3. 메모리(Memory)

리눅스 서버의 경우 top 명령어로 마크베이스 프로세스가 사용중인 메모리 총량을 확인할 수 있습니다. 각 항목별 세부적인 메모리 사용량은 V$SYSMEM 테이블을 통해 확인합니다. 아래는 현재 사용량이 많은 항목 10개를 기가바이트(GB) 단위로 정렬되어 표시된 모습입니다. SM_STC_INDEX 작업에 6.68GB 의 메모리를 사용하고 있다는 것을 알 수 있다.

Mach> select name, usage/1024/1024/1024 as usage_GB from v$sysmem order by usage desc limit 10;
name                  usage_GB
-------------------------------------------------------------------------
SM_STC_INDEX          6.68389
SM_STC_TABLE          2.72271
SM_SDD_DISK_BUFFER    0.146498
SM_SDC_CP_PAGE_APPEND 0.00281342
SM_SDD_TBS_AIO        0.00158327
PM_RBTREE             0.00110303
QP_META               0.000842227
QP_STATEMENT          0.00056196
SM_SVRC_TABLE_PAGE    0.000366271
SM_SCC_TABLE          0.000335693

4. 디스크(Disk)

리눅스 서버의 경우 du -sh $MACHBASE_HOME/dbs 명령어로 마크베이스 전체의 디스크 사용량을 확인할 수 있습니다. 구체적인 테이블과 인덱스의 디스크 사용량은 V$STORAGE 테이블을 통해 확인가능합니다.

  • Tag Table : DC_KV_TABLE_FILE_SIZE 값으로 데이터와 인덱스 전체 사용량 확인
  • Log Table : DC_TABLE_FILE_SIZE 값으로 전체 데이터 사용량을, DC_INDEX_FILE_SIZE 값으로 전체 인덱스 사용량을 확인
Mach> select * from v$storage;
DC_TABLE_FILE_SIZE DC_INDEX_FILE_SIZE DC_TABLESPACE_DWFILE_SIZE DC_KV_TABLE_FILE_SIZE
-----------------------------------------------------------------------------------------------
2291313152         2648243296         67108864                  43809498573

Log Table의 경우 각 테이블별 사용량을 확인할 수 있습니다. 아래와 같이 M$SYS_TABLES와 V$STORAGE_DC_TABLE_COLUMNS 테이블의 DISK_FILE_SIZE 칼럼을 통해 테이블별 데이터 파일 사용량을 확인합니다.

Mach> SELECT a.name, sum(b.disk_file_size)
 FROM M$SYS_TABLES a, V$STORAGE_DC_TABLE_COLUMNS b
 WHERE a.id = b.table_id
 GROUP BY a.name;
name         sum(b.disk_file_size)
-------------------------------------------------------------------------------------------------
SYSLOG_TABLE 2277318144
WEBLOG_TABLE 13995008

테이블별 인덱스 파일 사용량은 M$SYS_TABLES와 V$STORAGE_DC_TABLE_INDEXES 테이블의 DISK_FILE_SIZE 칼럼을 확인해야 합니다.

Mach> SELECT a.name, sum(b.disk_file_size)
 FROM M$SYS_TABLES a, V$STORAGE_DC_TABLE_INDEXES b
 WHERE a.id = b.table_id
 GROUP BY a.name;
name         sum(b.disk_file_size)
-------------------------------------------------------------------------------------------------
SYSLOG_TABLE 2624541184
WEBLOG_TABLE 23702112

Volatile/Lookup Table은 디스크가 아닌 메모리에 데이터를 저장하기 때문에, V$STORAGE_DC_VOLATILE_TABLE에서 사용량을 확인하셔야 합니다. 아래 결과 예시에서 MAX_MEM_SIZE는 machbase.conf 파일에서 설정된 최대 사용량이고 CUR_MEM_SIZE 는 현재 사용량을 의미합니다.

Mach> select * from v$storage_dc_volatile_table;
MAX_MEM_SIZE CUR_MEM_SIZE
---------------------------------------------------------
2147483648   628360

5. 마치며

지금까지 마크베이스를 운영하면서 세션,쿼리문,메모리,디스크 사용량에 대한 정보를 확인하는 방법에 대해 알려드렸습니다. 조금더 자세한 내용은 다음의 메뉴얼 페이지를 확인해 주세요.

http://krdoc.machbase.com/display/MANUAL/Virtual+Table

연관 포스트

C언어로 Binary data를 Machbase에 넣기

1.개요 Data를 다루다 보면 numeric, varchar 형 데이터뿐만 아니라 JPG, PNG, MP3와 같은 Binary data도 database에 저장해야 할 때가 존재한다. 그러나 일반 data들과는 달리 Binary

[MACHBASE 연동] Android studio에서 JDBC 연결하기

마크베이스 기술지원본부 이현민 1. 개요 수많은 데이터들이 많은 환경에서 생성되고 있는 오늘날, 우리 현대인들의 동반자인 스마트폰 또한 데이터생성의 주체로써 또는 전달자로서 알게 모르게 그 구실을