Loading...
MySQL 9.5 Reference Manual 9.5의 16.5 INFORMATION_SCHEMA and Data Dictionary Integration의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
data dictionary가 도입되면서 다음의
INFORMATION_SCHEMA 테이블들은
data dictionary 테이블들에 대한 뷰로 구현됩니다:
KEYWORDS
이러한 테이블들에 대한 쿼리는 이제 다른, 더 느린 방식이 아닌 data dictionary 테이블들로부터 정보를 얻기 때문에 더 효율적입니다.
특히, data dictionary 테이블들에 대한 뷰인 각
INFORMATION_SCHEMA 테이블에 대해 다음이 해당됩니다:
서버는 더 이상 해당 INFORMATION_SCHEMA 테이블에 대한
각 쿼리마다 임시 테이블을 생성할 필요가 없습니다.
기본이 되는 data dictionary 테이블들이 이전에 디렉터리 스캔
(예를 들어, 데이터베이스 이름이나 데이터베이스 내의 테이블 이름을 나열하기 위해)
또는 파일 오픈 작업(예를 들어, .frm 파일에서 정보를 읽기 위해)
으로 얻었던 값을 저장하는 경우,
해당 값들에 대한 INFORMATION_SCHEMA 쿼리는
이제 대신 테이블 조회를 사용합니다. (추가로, 뷰가 아닌
INFORMATION_SCHEMA 테이블의 경우에도,
데이터베이스 및 테이블 이름과 같은 값은 data dictionary에서 조회를 통해
가져오며 디렉터리 또는 파일 스캔을 필요로 하지 않습니다.)
기본이 되는 data dictionary 테이블의 인덱스는
옵티마이저가 효율적인 쿼리 실행 계획을 구성할 수 있게 해 주며,
이는 쿼리마다 임시 테이블을 사용하여
INFORMATION_SCHEMA 테이블을 처리했던 이전 구현에는
해당되지 않았던 점입니다.
앞에서 언급한 개선 사항은 또한 data dictionary 테이블에 대한
뷰인 INFORMATION_SCHEMA 테이블과
해당하는 정보를 표시하는
SHOW 문에도 적용됩니다.
예를 들어, [SHOW DATABASES](https://dev.mysql.com/doc/refman/9.5/en/show-databases.html "15.7.7.16 SHOW DATABASES Statement)는
SCHEMATA 테이블과 동일한 정보를 표시합니다.
data dictionary 테이블에 대한 뷰 도입과 더불어,
STATISTICS 및
TABLES 테이블에 포함된 테이블 통계는
INFORMATION_SCHEMA 쿼리
성능을 개선하기 위해 이제 캐시됩니다.
information_schema_stats_expiry
시스템 변수는 캐시된 테이블 통계가 만료되기 전까지의
시간을 정의합니다. 기본값은 86400초(24시간)입니다. 캐시된 통계가
없거나 통계가 만료된 경우,
테이블 통계 컬럼을 쿼리할 때 통계는
스토리지 엔진으로부터 가져옵니다. 특정 테이블에 대해
언제든지 캐시된 값을 갱신하려면
ANALYZE TABLE을 사용하십시오.
information_schema_stats_expiry
는 0으로 설정할 수 있으며,
이 경우 INFORMATION_SCHEMA 쿼리는
캐시된 통계가 아니라 스토리지 엔진으로부터
최신 통계를 직접 가져오게 됩니다. 이는
캐시된 통계를 가져오는 것만큼 빠르지는 않습니다.
자세한 내용은 Section 10.2.3, “Optimizing INFORMATION_SCHEMA Queries”를 참조하십시오.
MySQL 9.5의 INFORMATION_SCHEMA 테이블은
data dictionary와 긴밀히 연결되어 있어,
여러 사용상의 차이를 가져옵니다. 이에 대해서는
Section 16.7, “Data Dictionary Usage Differences”를 참조하십시오.
16.4 Dictionary Object Cache
16.6 Serialized Dictionary Information (SDI)