[MySQL] Sys Schema

■ sys schema 소개

sys schema Performance Schema 편하게 있도록 별도로 만든 view들의 모음입니다.

기본적으로 performance schema에서 수집된 성능을 이용해서 보여줍니다.

 

▶︎ 주의 사항.

1. 업그레이드시 유의사항이 있습니다. mysql_upgrade 기존 sys schema 업그레이드가 안됩니다.

해당 버전으로 다른곳에서 덤프받아 설치해야 합니다. 혹은 mysql github에서 다운로드 받아 설치합니다.

 

2. 위에서 설명했듯이 performance schema 활성화되어 있어야 합니다.

performance schema에서 다음과 같은 이벤트들을 이용합니다.

- All wait instruments

- All stage instruments

- All statement instruments

- xxx_current and xxx_history_long consumers for all events

sys 스키마 자체를 사용하여 모든 추가 도구 컨슈머를 활성화할 있습니다.

 

이벤트들에 대한 수집을 활성화 하려면 다음과 같이 프로시저를 호출합니다.

대신 아래와 같은 방법은 해당 이벤트 계측기에 대한 모든 항목을 활성화 시키므로 조심해야 합니다.

CALL sys.ps_setup_enable_instrument('wait');
CALL sys.ps_setup_enable_instrument('stage');
CALL sys.ps_setup_enable_instrument('statement');
CALL sys.ps_setup_enable_consumer('current');
CALL sys.ps_setup_enable_consumer('history_long');

 

만약 원치 않는 이벤트 계측기들이 활성화 되었다면 초기 설정으로 되돌리는 방법이 있습니다.

아래 프로시저를 실행합니다.

CALL sys.ps_setup_reset_to_default(TRUE);

 

sys schema 대부분 view 테이블로 구성되어 있습니다. 그리고 대부분의 view view이름과 쌍으로 x$ 시작되는 view 2가지가 있습니다. 예를 들어 host_summary_by_file_io라는 view x$host_summary_by_file_io로도 존재합니다. 둘의 차이는 x$ 시작하는게 상세하게 표현되고 x$ 시작되지 않는 view 사람이 읽기 편한 내용으로 표현됩니다.

 

▶︎ 설정테이블

sys schema 설정 테이블

sys_config  : sys schema 설정 테이블

sys_config_insert_set_user : sys_config 테이블에 설정을 입력한 유저 정보

sys_config_update_set_user : sys_config 테이블에 설정을 업데이트 유저 정보

 

환경설정 상세설명

테이블에는 옵션 행의 sys 스키마 구성 옵션이 포함되어 있습니다. 테이블을 업데이트하여 변경 구성은 클라이언트 세션 서버 다시 시작시에도 유지됩니다.

 

sys_config 테이블에는 다음 컬럼이 있습니다.

• variable

구성 옵션 이름입니다.

 

• value

구성 옵션 값입니다.

 

• set_time

행에 대한 가장 최근 수정의 타임 스탬프입니다.

 

• set_by

행을 가장 최근에 수정 계정입니다. sys 스키마가 설치된 이후 행이 변경되지 않은 경우 값은 NULL입니다.

 

sys_config 테이블의 직접 읽기 수를 최소화하기 위한 효율성 측정 방법으로, 표의 값을 사용하는 syschema 함수는 이름이 같은 사용자 정의 변수와 @sys.prefix(접두사) 붙은 사용자 정의 변수를 확인합니다. (예를 들어, diagnostics.include_raw 불리는 변수는 @sys.diagnostics.include_raw 입니다.) 사용자 정의 변수가 현재 세션에 존재하고 NULL 아닌 경우 함수는 sys_config 테이블의 값보다 우선하는 값을 사용합니다. 그렇지 않으면 함수가 표의 값을 읽고 사용합니다. 후자의 경우 호출 함수는 일반적으로 해당 사용자 정의 변수를 테이블 값으로 설정하므로 동일한 세션 내의 구성 옵션에 대한 추가 참조가 해당 변수를 사용하고 테이블을 다시 읽을 필요가 없습니다.

 

예를 들어 statement_truncate_len 옵션은 format_statement () 함수가 반환하는 문의 최대 길이를 제어합니다. 기본값은 64입니다. 현재 세션의 값을 임시로 32 변경하려면 해당 @ sys.statement_truncate_len 사용자 정의 변수를 설정합니다.

mysql> SET @stmt = 'SELECT variable, value, set_time, set_by FROM sys_config';
mysql> SELECT sys.format_statement(@stmt);
+----------------------------------------------------------+
| sys.format_statement(@stmt)                              |
+----------------------------------------------------------+
| SELECT variable, value, set_time, set_by FROM sys_config |
+----------------------------------------------------------+
mysql> SET @sys.statement_truncate_len = 32;
mysql> SELECT sys.format_statement(@stmt);
+-----------------------------------+
| sys.format_statement(@stmt)       |
+-----------------------------------+
| SELECT variabl ... ROM sys_config |
+-----------------------------------+

세션 내에서 format_statement () 후속 호출은 테이블 (64) 저장된 값이 아닌 사용자 정의 변수 (32) 계속 사용합니다.

 

사용자 정의 변수 사용을 중지하고 테이블의 값을 사용하도록 되돌리려면 세션 내에서 변수를 NULL 설정합니다.

mysql> SET @sys.statement_truncate_len = NULL;
mysql> SELECT sys.format_statement(@stmt);
+----------------------------------------------------------+
| sys.format_statement(@stmt)                              |
+----------------------------------------------------------+
| SELECT variable, value, set_time, set_by FROM sys_config |
+----------------------------------------------------------+

또는 현재 세션을 종료하고 (사용자 정의 변수가 이상 존재하지 않음) 세션을 시작합니다.

 

sys_config 테이블의 옵션과 사용자 정의 변수 사이에 방금 설명한 기존 관계를 이용하여 세션이 종료 종료되는 임시 구성 변경을 수행 있습니다. , 사용자 정의 변수를 설정 동일한 세션 내에서 해당 테이블 값을 변경하면 사용자 정의 변수가 존재하고 NULL 아닌 변경된 테이블 값은 해당 세션에서 사용되지 않습니다. (변경된 테이블 값은 사용자 정의 변수가 할당되지 않은 다른 세션에서 사용됩니다.)

 

다음 목록은 sys_config 테이블의 옵션과 해당 사용자 정의 변수를 설명합니다.

• diagnostics.allow_i_s_tables, @sys.diagnostics.allow_i_s_tables

옵션이 ON이면 diagnostics() 프로시저는 INFORMATION_SCHEMA.TABLES 테이블에서 테이블 스캔을 수행할 있습니다. 테이블이 많으면 비용(수집 부하) 많이들 있습니다. 기본값은 OFF입니다.

 

• diagnostics.include_raw, @sys.diagnostics.include_raw

옵션이 ON이면 diagnostics() 프로시저는 메트릭보기 쿼리의 원시 출력을 포함합니다. 기본값은 OFF입니다.

 

• ps_thread_trx_info.max_length, @sys.ps_thread_trx_info.max_length

ps_thread_trx_info() 함수에 의해 생성된 JSON 출력의 최대 길이입니다. 기본값은 65535입니다.

 

• statement_performance_analyzer.limit, @sys.statement_performance_analyzer.limit

기본 제공 제한이 없는 뷰에 대해 반환할 최대행 수입니다. (예를 들어, statements_with_runtimes_in_95th_percentile 뷰는 95번째 백분위 수에서 평균 실행 시간이 있는 명령문만 반환한다는 의미에서 기본제공 제한이 있습니다.) 기본값은 100입니다.

 

• statement_performance_analyzer.view, @sys.statement_performance_analyzer.view

statement_performance_analyzer()프로 시저 ( 자체가 diagnostics() 프로시저에 의해 호출 )에서 사용할 사용자 정의 쿼리 또는 보기입니다. 옵션 값에 공백이 포함되어 있으면 쿼리로 해석됩니다. 그렇지 않으면 성능 스키마 events_statements_summary_by_digest 테이블을 쿼리하는 기존 뷰의 이름이어야 합니다. statement_performance_analyzer.limit 구성 옵션이 0보다 경우 쿼리 또는보기 정의에 LIMIT 절이있을 없습니다. 기본값은 NULL입니다 (사용자 정의보기가 정의되지 않음).

 

• statement_truncate_len, @sys.statement_truncate_len

format_statement() 함수에서 반환하는 문의 최대 길이입니다. 명령문은이 길이로 잘립니다. 기본값은 64입니다.

 

다른 옵션을 sys_config 테이블에 추가 있습니다. 예를 들어 diagnostics () execute_prepared_stmt () 프로시 저는 존재하는 경우 debug 옵션을 사용하지만 디버그 출력은 일반적으로 해당 @ sys.debug 사용자를 설정하여 일시적으로 활성화되므로이 옵션은 기본적으로 sys_config 테이블의 일부가 아닙니다. 정의 변수. 개별 세션에서 해당 변수를 설정하지 않고 디버그 출력을 활성화하려면 테이블에 옵션을 추가합니다.

mysql> INSERT INTO sys.sys_config (variable, value) VALUES('debug', 'ON');

 

표에서 디버그 설정을 변경하려면 가지를 수행합니다. 먼저 테이블 자체의 값을 수정합니다.

mysql> UPDATE sys.sys_config
       SET value = 'OFF'
       WHERE variable = 'debug';

 

둘째, 현재 세션 내의 프로시저 호출이 테이블에서 변경된 값을 사용하도록 하려면 해당 사용자 정의 변수를 NULL 설정합니다.

mysql> SET @sys.debug = NULL;

 

모니터링 방법

sys schema 아래 위의 3개의 환경설정 테이블을 제외한 대부분의 테이블들이 모니터링 테이블입니다.

performance schema 내용이 비슷하므로 다음의 포스팅을 참고 합니다.

https://myinfrabox.tistory.com/194

Designed by JB FACTORY