■ InnoDB 스토리지 엔진 모니터링 방법 InnoDB 스토리지의 상태를 확인하는 방법은 infomration_Schema와 sys스키마, performance 스키마를 확인하는 방법등이 있습니다. 이중에서 가장 대표전인것이 Show 명령어를 이용하여 엔젠상태를 확인하는 방법입니다. 이 명령어를 통해서 나오는 스토리지 엔진에 대해 하나하나 확인해 보겠습니다. ■ 스토리지 엔진 내용 MySQL에서 다음과 같은 명령어를 입력하면 아래와 같은 화면이 나옵니다. 이 내용 안에는 Deadlock 정보, 버퍼풀 정보, 트랜잭션 정보등 정말 DBA에게 중요한 정보들이 많이 나옵니다. 이 정보들에 대해 확인해 보겠습니다. MySQL> show engine innodb status; ===================..
sync_relay_log sync_relay_log를 1로 설정하면 수신된 각 트랜잭션이 디스크에 기록된 후 릴레이 로그를 디스크에 동기화하도록 복제 I/O 스레드에 지시합니다. 즉 성능은 줄이되 안정성을 높이는 방법입니다. 가능하면 1로 설정을 권고합니다. 0이나 다른 숫자로 바꾸면 성능이 좋아지긴 합니다. 이건 선택적인 문제이기도 합니다. 참고로 sync_relay_log를 1보다 크게 또는 sync_relay_log를 0(여기서 동기화는 운영 체제에서 처리됨)인 경우 복제본이 예기치 않게 중단되는 경우 디스크에 동기화되지 않은 커밋된 트랜잭션이 있을 수 있습니다. 이러한 트랜잭션으로 인해 디스크에 마지막으로 동기화된 릴레이 로그에 있는 정보를 기반으로 복구 중인 복제본이 트랜잭션을 건너뛰는 대신 ..
■ InnoDB 스토리지 엔진의 테이블 데이터 저장 방식 MySQL 테이블의 데이터는 IOT(Index Oraganized Table)라고 하여 프리머리 키값을 이용하여 데이터를 정렬 후 테이블에 저장하게 되어 있습니다. 이 프리머리 키를 다른말로 클러스터링 인덱스라고도 합니다. 그리고 MySQL에서는 이 클러스터링 인덱스가 좀 특별하게 다루어집니다. 그림 1. MySQL B-Tree 인덱스 구조 위의 그림은 MySQL의 클러스터링 인덱스의 구조인데 일반적인 B- Tree 인덱스와 비슷합니다.. 그러나 MySQL에서 B-Tree 인덱스의 리프노드에는 모든 칼럼이 같이 저장되어 있습니다. 즉 클러스터링 테이블은 데이터와 프리머리 인덱스를 모두 포함하고 있는 구조가 되는 것입니다. ■ 세컨더리 인덱스(Sec..
■ Com_xxx 명령문 카운터 Com_xxx 명령문 카운터 변수는 각 xxx 문이 실행된 횟수를 나타냅니다. 각 명령문 유형에 대해 하나의 상태 변수가 있습니다. 예를 들어 Com_delete 및 Com_update는 각각 DELETE 및 UPDATE 문을 계산합니다. Com_delete_multi 및 Com_update_multi는 유사하지만 다중 테이블 구문을 사용하는 DELETE 및 UPDATE 문에 적용됩니다. 쿼리 캐시에서 쿼리 결과가 반환되면 서버는 Com_select가 아니라 Qcache_hits 상태 변수를 증가시킵니다. 차이점을 잘 판별해야 합니다. Prepared Statement(준비된 명령문) Parameter(인수)를 알 수 없거나 실행 중 오류가 발생한 경우에도 모든 Com_s..