Loading...
MySQL 9.5 Reference Manual 9.5의 29.4.5 Pre-Filtering by Object의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
setup_objects 테이블은 Performance Schema가 특정 테이블 및 저장 프로그램 객체를 모니터링할지 여부를 제어합니다. 초기 setup_objects 테이블의 내용은 다음과 같습니다:
1mysql> SELECT * FROM performance_schema.setup_objects; 2+-------------+--------------------+-------------+---------+-------+ 3| OBJECT_TYPE | OBJECT_SCHEMA | OBJECT_NAME | ENABLED | TIMED | 4+-------------+--------------------+-------------+---------+-------+ 5| EVENT | mysql | % | NO | NO | 6| EVENT | performance_schema | % | NO | NO | 7| EVENT | information_schema | % | NO | NO | 8| EVENT | % | % | YES | YES | 9| FUNCTION | mysql | % | NO | NO | 10| FUNCTION | performance_schema | % | NO | NO | 11| FUNCTION | information_schema | % | NO | NO | 12| FUNCTION | % | % | YES | YES | 13| PROCEDURE | mysql | % | NO | NO | 14| PROCEDURE | performance_schema | % | NO | NO | 15| PROCEDURE | information_schema | % | NO | NO | 16| PROCEDURE | % | % | YES | YES | 17| TABLE | mysql | % | NO | NO | 18| TABLE | performance_schema | % | NO | NO | 19| TABLE | information_schema | % | NO | NO | 20| TABLE | % | % | YES | YES | 21| TRIGGER | mysql | % | NO | NO | 22| TRIGGER | performance_schema | % | NO | NO | 23| TRIGGER | information_schema | % | NO | NO | 24| TRIGGER | % | % | YES | YES | 25+-------------+--------------------+-------------+---------+-------+
setup_objects 테이블에 대한 수정은 객체 모니터링에 즉시 영향을 줍니다.
OBJECT_TYPE 컬럼은 행이 적용되는 객체의 유형을 나타냅니다. TABLE 필터링은 테이블 I/O 이벤트 (wait/io/table/sql/handler 인스트루먼트) 및 테이블 잠금 이벤트 (wait/lock/table/sql/handler 인스트루먼트)에 영향을 줍니다.
OBJECT_SCHEMA 및 OBJECT_NAME 컬럼에는 리터럴 스키마 또는 객체 이름, 혹은 임의의 이름과 매칭되는 '%'가 포함되어야 합니다.
ENABLED 컬럼은 매칭되는 객체를 모니터링할지 여부를 나타내고, TIMED는 타이밍 정보를 수집할지 여부를 나타냅니다. TIMED 컬럼 설정은 Section 29.4.1, “Performance Schema Event Timing”에 설명된 대로 Performance Schema 테이블 내용에 영향을 줍니다.
기본 객체 구성의 효과는 mysql, INFORMATION_SCHEMA, performance_schema 데이터베이스에 있는 객체를 제외한 모든 객체를 인스트루먼트하는 것입니다. (INFORMATION_SCHEMA 데이터베이스의 테이블은 setup_objects의 내용과 관계없이 인스트루먼트되지 않습니다. information_schema.%에 대한 행은 이 기본값을 명시적으로 나타낼 뿐입니다.)
Performance Schema가 setup_objects에서 매칭을 확인할 때, 먼저 더 구체적인 매칭을 찾으려고 합니다. 주어진 OBJECT_TYPE과 매칭되는 행에 대해 Performance Schema는 다음 순서로 행을 확인합니다:
OBJECT_SCHEMA='literal' 및 OBJECT_NAME='literal' 인 행.
OBJECT_SCHEMA='literal' 및 OBJECT_NAME='%' 인 행.
OBJECT_SCHEMA='%' 및 OBJECT_NAME='%' 인 행.
예를 들어, 테이블 db1.t1의 경우, Performance Schema는 TABLE 행에서 먼저 'db1'과 't1'에 대한 매칭을 찾고, 그다음 'db1'과 '%', 그다음 '%'와 '%'에 대한 매칭을 찾습니다. 매칭이 발생하는 순서는 중요합니다. 서로 다른 매칭 setup_objects 행은 서로 다른 ENABLED 및 TIMED 값을 가질 수 있기 때문입니다.
테이블 관련 이벤트의 경우, Performance Schema는 인스트루먼트를 활성화할지 여부와 활성화된 인스트루먼트를 타이밍할지 여부를 결정하기 위해 setup_objects의 내용과 setup_instruments의 내용을 결합합니다:
setup_objects의 행과 매칭되는 테이블에 대해, 테이블 인스트루먼트는 setup_instruments와 setup_objects 모두에서 ENABLED가 YES인 경우에만 이벤트를 생성합니다.
두 테이블의 TIMED 값은 결합되며, 두 값이 모두 YES일 때만 타이밍 정보가 수집됩니다.
저장 프로그램 객체의 경우, Performance Schema는 setup_objects 행에서 ENABLED 및 TIMED 컬럼을 직접 사용합니다. setup_instruments와 값을 결합하지 않습니다.
setup_objects에 db1, db2, db3에 적용되는 다음과 같은 TABLE 행이 포함되어 있다고 가정해 봅시다:
1+-------------+---------------+-------------+---------+-------+ 2| OBJECT_TYPE | OBJECT_SCHEMA | OBJECT_NAME | ENABLED | TIMED | 3+-------------+---------------+-------------+---------+-------+ 4| TABLE | db1 | t1 | YES | YES | 5| TABLE | db1 | t2 | NO | NO | 6| TABLE | db2 | % | YES | YES | 7| TABLE | db3 | % | NO | NO | 8| TABLE | % | % | YES | YES | 9+-------------+---------------+-------------+---------+-------+
setup_instruments에서 객체 관련 인스트루먼트의 ENABLED 값이 NO이면, 해당 객체에 대한 이벤트는 모니터링되지 않습니다. ENABLED 값이 YES이면, 이벤트 모니터링은 관련 setup_objects 행의 ENABLED 값에 따라 이루어집니다:
db1.t1 이벤트는 모니터링됩니다.
db1.t2 이벤트는 모니터링되지 않습니다.
db2.t3 이벤트는 모니터링됩니다.
db3.t4 이벤트는 모니터링되지 않습니다.
db4.t5 이벤트는 모니터링됩니다.
이벤트 타이밍 정보를 수집할지 여부를 결정하기 위해, setup_instruments 및 setup_objects 테이블의 TIMED 컬럼을 결합하는 데에도 유사한 로직이 적용됩니다.
퍼시스턴트 테이블과 임시 테이블이 동일한 이름을 갖는 경우, 두 테이블 모두에 대해 setup_objects 행에 대한 매칭 방식은 동일하게 동작합니다. 한 테이블에 대해서만 모니터링을 활성화하고 다른 테이블은 활성화하지 않는 것은 불가능합니다. 그러나 각 테이블은 개별적으로 인스트루먼트됩니다.
29.4.4 Pre-Filtering by Instrument
29.4.6 Pre-Filtering by Thread