About MySQL Index problem

지난 월요일(2016년 12월 19일) 굉장히 특이한 경험을 했다. 내 경험은 아니고, 직원중 한명이 회사 시스템이 설치된 서버에서 데이터가 update 되지 않는다는 얘기였다. 문제는 에러가 전혀 발생하지 않는다는 점이다. 데이터를 수정하는 UI 프로그램으로 해도 마찬가지고, 데이터베이스에 CLI로 직접 접속해도 마찬가지로 동작하지 않는 문제였다.

그래서 나에게 혹시 경험이 있나 물어보러 온 것이었는데, 나도 그런 경험은 없었고 추측도 되지 않았다. 처음에는 해당 테이블에 트리거가 걸려 있어 그 문제로 update가 되지 않는건지 생각 했으나 다시 원격하여 확인한 결과 트리거나 프로시저 등 아무것도 없었다.

결국 회사 내에 데이터베이스에 가장 빠삭하신 부장님이 보시곤 인덱스가 깨져서 생긴 문제 같다고 하시며 데이터베이스의 인덱스를 다시 만들어 보자고 하셨으나, 현재 운영중인 서버였기 때문에 인덱스를 제거하고 다시 생성하는 일은 할 수 없었다.

그래서 찾은 방법이 아래의 명령어이다.

1
mysql>OPTIMIZE TABLE [테이블명]; 

다행이도 해당 테이블에 100건 이하의 데이터만 존재하여 운영중에도 인덱스 재설정 명령어를 사용하여 인덱스를 재설정 할 수 있었다. 인덱스를 재설정 하고 난 후 제대로 동작 하는 것을 확인 하였다.

물론 내가 해결한 것은 아니었지만 이 문제를 해결하고 나서 혼자 곰곰히 생각해 보았다. 내가 혼자서 작업 도중 이러한 문제가 발생하면 과연 나는 해결 할 수 있는가? 아마도 상당히 많은 시간을 소모해서 해결하거나, 해결하지 못하고 머리만 쥐어짜고 있지 않았을까…?

데이터베이스는 나름대로 잘 알고 있다고 생각하고 있었는데 아직 갈길이 먼듯 하다.