■ InnoDB 시스템 테이블 InnoDB INFORMATION_SCHEMA 시스템 테이블을 사용하여 InnoDB가 관리하는 스키마 객체에 대한 메타 데이터를 추출할 수 있습니다. 이 정보는 InnoDB 내부 시스템 테이블 (InnoDB 데이터 사전이라고도 함)에서 가져 오며, 일반 InnoDB 테이블처럼 직접 쿼리할 수 없습니다. 전통적으로 InnoDB 모니터의 기술을 사용하여 이러한 유형의 정보를 얻고, InnoDB 모니터를 설정하고 SHOW ENGINE INNODB STATUS 문에서 출력을 구문 분석합니다. InnoDB INFORMATION_SCHEMA 테이블 인터페이스를 사용하면 SQL을 사용하여이 데이터를 쿼리할 수 있습니다. 해당 내부 시스템 테이블이없는 INNODB_SYS_TABLESTAT..
■ INNODB_METRICS Table INNODB_METRICS 테이블은 InnoDB용 성능 스키마 테이블의 특정 초점 영역을 보완하는 다양한 InnoDB 성능 정보를 제공합니다. 간단한 쿼리로 시스템의 전반적인 상태를 확인할 수 있습니다. 각 모니터는 카운터 정보를 수집하도록 계측 된 InnoDB 소스 코드 내의 지점을 나타냅니다. 각 카운터를 시작, 중지 및 재설정 할 수 있습니다. 공통 모듈 이름을 사용하여 카운터 그룹에 대해 이러한 작업을 수행 할 수도 있습니다. 기본적으로 비교적 적은 양의 데이터가 수집됩니다. 카운터를 시작, 중지 및 재설정하려면 카운터 이름, 모듈의 이름, "%" 문자를 사용하는 와일드카드 일치 또는 특수 키워드를 사용하여 시스템 변수 innodb_monitor_enabl..
■ INNODB_BUFFER_PAGE Table INNODB_BUFFER_PAGE 테이블은 InnoDB 버퍼 풀의 각 페이지에 대한 정보를 제공합니다. 중요사항 INNODB_BUFFER_PAGE 테이블을 쿼리하면 성능에 영향을 줄 수 있습니다. 성능 영향을 인식하고 허용할 수 있다고 결정하지 않는한 프로덕션 시스템에서이 테이블을 쿼리하면 안됩니다. 프로덕션 시스템의 성능에 영향을 주지 않으려면 조사하려는 문제를 재현하고 테스트 인스턴스에서 버퍼풀 통계를 쿼리합니다. 각 컬럼의 정보는 다음과 같습니다. • POOL_ID 버퍼 풀 ID입니다. 여러 버퍼 풀 인스턴스를 구별하기위한 식별자입니다. • BLOCK_ID 버퍼 풀 블록 ID입니다. • SPACE 테이블 스페이스 ID입니다. INNODB_SYS_TAB..
■ EFERENTIAL_CONSTRAINTS Table • REFERENTIAL_CONSTRAINTS 테이블은 외부참조 키에 대한 정보를 제공합니다. 각 컬럼의 정보는 다음과 같습니다. • CONSTRAINT_CATALOG The name of the catalog to which the constraint belongs. This value is always def. 제약조건이 속한 카탈로그의 이름입니다. 이 값은 항상 def입니다. • CONSTRAINT_SCHEMA 제약조건이 속한 스키마 (데이터베이스)의 이름입니다. • CONSTRAINT_NAME 제약조건의 이름입니다. • UNIQUE_CONSTRAINT_CATALOG 제약 조건이 참조하는 유니크한 제약 조건이 포함된 카탈로그의 이름입니다. 이 ..
■ COLUMNS Table 특정테이블에 포함된 컬럼 속성 정보 표시합니다. 각 컬럼의 정보는 다음과 같습니다. • TABLE_CATALOG 열을 포함하는 테이블이 속한 카탈로그의 이름입니다. 항상 def값입니다. • TABLE_SCHEMA 테이블이 속한 스키마(데이터베이스) 이름입니다. • TABLE_NAME 해당 컬럼이 있는 테이블 이름입니다. • COLUMN_NAME 컬럼이름입니다. • ORDINAL_POSITION 테이블 내 컬럼의 위치(순서)입니다. SHOW COLUMNS 명령어와 달리 COLUMNS 테이블의 SELECT에는 자동으로 정렬되어 출력되지 않습니다. • COLUMN_DEFAULT 컬럼 기본값을 지정합니다. insert명령어로 null값이 들어올 시 어떤값으로 대체할지 결정합니다. 기..
Federated기능은 로컬 서버에서 원격 서버의 테이블을 연결해 마치 자신의 테이블인것처럼 조회하고 입력하고 삭제하는 기능입니다. 로컬에서 작업하지만 실제로는 원격의 서버 테이블에 실제 작업이 수행됩니다. ■ 사용방법 소스에서 MySQL을 빌드하는 경우 FEDERATED 스토리지 엔진을 포함하려면 -DWITH_FEDERATED_STORAGE_ENGINE 옵션을 사용하여 CMake를 실행합니다. FEDERATED 스토리지 엔진은 실행중인 서버에서 기본적으로 활성화되지 않습니다. FEDERATED를 활성화하려면 다음과 같은 2가지 방법을 사용합니다. 1. shell> mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --federated & 2. 서버 파라미터인..
■ Federated Storage Engine FEDERATED 스토리지 엔진을 사용하면 복제 또는 클러스터 기술을 사용하지 않고도 원격 MySQL 데이터베이스의 데이터에 액세스 할 수 있습니다. 로컬 FEDERATED 테이블을 쿼리하면 원격 테이블에서 데이터를 자동으로 가져옵니다. 로컬 테이블에는 데이터가 저장되지 않습니다. 소스에서 MySQL을 빌드하는 경우 FEDERATED 스토리지 엔진을 포함하려면 -DWITH_FEDERATED_STORAGE_ENGINE 옵션을 사용하여 CMake를 호출합니다. FEDERATED 스토리지 엔진은 실행중인 서버에서 기본적으로 활성화되지 않습니다. FEDERATED를 활성화하려면 --federated 옵션을 사용하여 MySQL 서버 바이너리를 시작해야합니다. FED..
Generated Column(생성된 컬럼)에 허용되는 ALTER TABLE 연산은 ADD, MODIFY 및 CHANGE입니다. • Generated Column을 추가 할 수 있습니다. CREATE TABLE t1 (c1 INT); ALTER TABLE t1 ADD COLUMN c2 INT GENERATED ALWAYS AS (c1 + 1) STORED; • Generated Column의 데이터 유형 및 표현식을 수정할 수 있습니다. CREATE TABLE t1 (c1 INT, c2 INT GENERATED ALWAYS AS (c1 + 1) STORED); ALTER TABLE t1 MODIFY COLUMN c2 TINYINT GENERATED ALWAYS AS (c1 + 5) STORED; • Ge..
CREATE TABLE은 생성된 컬럼의 특정 사항 지원합니다. 생성된 컬럼의 값은 컬럼 정의에 포함된 표현식에 의해서 표현식대로 표현되거나 계산됩니다. 생성된 컬럼은 MySQL NDB Cluster 7.5.3부터 NDB 스토리지 엔진에서 지원됩니다. 다음 간단한 예제는 sidea 및 sideb 컬럼에 직각 삼각형 변의 길이를 저장하고 sidec(다른 면의 제곱합에 대한 제곱근입니다)의 빗변 길이를 계산하는 테이블을 보여줍니다. CREATE TABLE triangle ( sidea DOUBLE, sideb DOUBLE, sidec DOUBLE AS (SQRT(sidea * sidea + sideb * sideb)) ); INSERT INTO triangle (sidea, sideb) VALUES(1,1),..
■ InnoDB 문제 해결 다음 지침은 InnoDB 문제 해결에 적용됩니다. + 작업이 실패하거나 버그가 의심되면 MySQL 서버 오류 로그를 확인합니다. + 장애가 교착 상태와 관련된 경우, 각 교착 상태에 대한 세부 사항이 MySQL 서버 오류 로그에 인쇄되도록 innodb_print_all_deadlocks 옵션을 사용하여 실행합니다. + InnoDB 데이터 딕셔너리와 관련된 문제에는 실패한 CREATE TABLE 문(고아 테이블 파일: orphan table files), “InnoDB 파일을 열 수 없음” 및 “시스템이 경로 지정 오류를 찾을 수 없음”이 포함됩니다. + 문제 해결시 일반적으로 mysqld_safe 또는 Windows 서비스가 아닌 명령 프롬프트에서 MySQL 서버를 실행하는 것..
■ 프로파일링 방법. ▶︎ SHOW PROFILE 문법 SHOW PROFILE [type [, type] ... ] [FOR QUERY n] [LIMIT row_count [OFFSET offset]] type: { ALL | BLOCK IO | CONTEXT SWITCHES | CPU | IPC | MEMORY | PAGE FAULTS | SOURCE | SWAPS } SHOW PROFILE 및 SHOW PROFILES 문은 현재 세션중에서 실행된 명령문의 자원 사용량을 나타내는 프로파일링 정보를 표시합니다. 참고사항 SHOW PROFILE 및 SHOW PROFILES 문은 더 이상 사용되지 않으며 향후 MySQL 릴리스에서 제거 될 예정입니다. 대신 PPerformance Schema를 사용합니다. ..
■ 메타데이터 Locking(잠금) MySQL은 메타 데이터 잠금을 사용하여 데이터베이스 객체에 대한 동시 액세스를 관리하고 데이터 일관성을 유지합니다. 메타 데이터 잠금은 테이블뿐만 아니라 스키마, 저장된 프로그램 (프로시저, 펑션, 트리거, 예약된 이벤트), 테이블 스페이스, GET_LOCK() 함수로 획득한 사용자 잠금 및 잠금 서비스로 획득한 잠금에도 적용됩니다. 성능 스키마 metadata_locks 테이블은 메타 데이터 잠금 정보를 표시합니다. 이 정보는 잠금을 보유하는 세션을 확인하고 잠금 대기등을 차단하는데 유용합니다. performance_schema의 meta_lock 테이블을 조회하면 관련된 정보를 얻을수 있습니다. 메타 데이터 잠금에는 약간의 오버 헤드가 수반되며 쿼리 볼륨이 증가함..