MySQL 8.0 신기능인 Resource group에 대하여 알아보자.
Resource group이란
Mysql thread가 사용할 수 있는 서버 리소스에 제한을 걸 수 있는 기능이다
장기간 실행되는 트랜잭션, 다른 처리를 CPU의 코어에 할당해서 처리량을 안정시키는 의도로 이용한다.
Resource group생성
생성하기 위해서는 RESOURCE_GROUP_ADMIN권한이 필요하다.
배치 작업에서 사용할 그룹을 만들어보자
mysql>
CREATE RESOURCE GROUP Batch
TYPE = USER
VCPU = 0
THREAD_PRIORITY = 10;
TYPE은 user, system user로 나눠이지고
VCPU는 CPU 코어의 스레드 번호
THREAD_PRIORITY는 처리 우선순위이다.
* THREAD_PRIORITY를 설정하기 위해서는 CPS_SYS_NICE capability설정이 필요하다.
Resource group할당
할당하기 위해서는 RESOURCE_GROUP_ADMIN 또는 RESOURCE_GROUP_USER권한이 필요하다.
# 현재 접속해있는 스레드에 리소스 그룹 적용
mysql> SET RESOURCE GROUP Batch;
# Thread id를 지정해서 적용
mysql> SET RESOURCE GROUP Batch for 93;
Batch리스소 그룹은 VCPU=0이기 때문에 0번 째 코어만 사용하는 걸 확인할 수 있다.
Resource group변경
변경한 내용은 리스소 그룹에 속해 있는 스레드에 즉시 반영된다.
# Batch리소스 그룹이 사용할 CPU코어를 1번 째로 변경
mysql> ALTER RESOURCE GROUP Batch VCPU = 1;
# 유저에게 할당되어 있는 리소스 그룹을 무효화 시키는 명령어
mysql> ALTER RESOURCE GROUP Batch DISABLE FORCE;
(Batch 리소스 그룹에 속해 있는 스레드는 Default 리소스 그룹으로 변경된다)
# 리소스 그룹을 유효화 시키는 명령어
mysql> ALTER RESOURCE GROUP Batch ENABLE;
Resource group삭제
# Batch 리소스 그룹을 사용 중인 스레드가 있으면 삭제 불가능
mysql> DROP RESOURCE GROUP Batch;
ERROR 3656 (HY000): Resource group Batch is busy.
# 위의 경우를 무시하고 강제로 삭제하는 방법
mysql> DROP RESOURCE GROUP Batch FORCE;
# Refer
https://dev.mysql.com/doc/refman/8.0/en/resource-groups.html
댓글 없음:
댓글 쓰기