안녕하세요.
한 솔루션에서 Mysql 5.0.25 버전으로
InnoDB 엔진으로 대용량 DB를 운영하고 있습니다.
큰 테이블은 4개정도로 각 2천만건, 5백만건, 8백만건, 9백만건의 자료가 있고
이중 5백만건과 8백만건의 자료는 Join 을 통해 사용자에게 실시간으로
보여지는 구조를 가지고 있습니다.
DB서버는 AMD64 듀얼코어로 8way 로 총 16way 로 구성되고
램은 16G 입니다. 운영체제는 Linux 64bit 에디션이구요.
튜닝을 여러가지로 해왔기 때문에
실 사용에 있어서는 큰 속도저하나 문제는 없습니다.
단지 요즘 들어서 아주아주 무거운 쿼리가 하나 걸리기 시작하면
쿼리 진행시간이 무료 1만초가 넘어가고 해당쿼리를 show process 로 확인하면 상태는
Sending data 로 고정되어 있습니다.
때문에 이런 프로세스를 강제로 죽이고자 kill proecess 하면 상태가
killed 로 변경은 되나 끝까지 사라지지 않고 실제로 프로세스도 살아있습니다.
제가 궁금한점은
1. killed 상태로 있는 프로세스는 실제로 종료된것인가요?
2. 강제로 해당 killed 프로세스를 process list 에 안나타나도록 완전히 죽이는 방법은 없나요?
3. 필요하다면 해당 프로세스가 물린 table 을 완전히 닫았다가 다시 열고 싶은데
flush tables; 를 해도 이 프로세스도 waiting for table 이 되버리는데 강제로
완전히 닫고 다시 열게하는 방법은 없는건가요?
(쿼리로 하던, 쉘에서 mysql 유틸리리로 하던..)
언 7일동안 Mysql 매뉴얼부터 모든 질문들을 찾았지만
해결책을 못찾아서 어렵게 질문을 올립니다.
혹시 저와 같은 증상을 겪어보신 분 께서는 간단하게나마
조언을 주시면 정말로 감사드리겠습니다.
추운 날씨에 모두 감기 조심하세요.
감사합니다.
|