MySQL index drop 질문이요 0 2 2,173

by 이광영 [MySQL] [2013.05.16 01:37:52]


 CREATE TABLE `tbl_trend` (
  `FLD_DATE` char(14) NOT NULL,      -- 저장날짜
  `FLD_AGENT_ID` int(10) unsigned NOT NULL,   -- 에이전트 ID
  `FLD_CONVERTER_ID` tinyint(3) unsigned NOT NULL,   -- 컨버터 ID
  `FLD_CONTROLLER_ID` tinyint(3) unsigned NOT NULL,  -- 컨트롤러 ID
  `FLD_TAG_ADDRESS` smallint(5) unsigned NOT NULL,   -- 태그 주소
  `FLD_MAX` double NOT NULL,    -- 최대값
  `FLD_MIN` double NOT NULL,     -- 최소값
  `FLD_AVG` double NOT NULL,    -- 평균값
  `FLD_GUIDE_VALUE` double NOT NULL,   -- 설정값
  `FLD_IS_USE_GUIDE` tinyint(4) NOT NULL DEFAULT '0',
  KEY `IDX1_TBL_TREND` (`FLD_DATE`,`FLD_CONTROLLER_ID`,`FLD_TAG_ADDRESS`,`FLD_CONVERTER_ID`,`FLD_AGENT_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

DB 초짜 질문입니다.
DB는 MySQL입니다.
위와 같은 테이블에 약 8천만건의 데이터가 저장되어 있습니다.
그런데 select 속도가 너무 느려 인덱스를 다시 구성하기 위해
아래처럼 작성하여 인덱스 제거를 시도했습니다.

drop index tbl_trend idx1_tbl_trend on tbl_trend;

그런데 데이터량이 많아서 그런건지 2시간이 지나도 결과를 리턴하지 않고 있습니다.
PROCESSLIST 테이블을 확인해보니 State에 'Wait for table metadata lock' 이라고 표시되어 있네요.
아직도 처리중인듯 한데 계속 기다려봐야 하는건가요?
by 손님 [2013.05.16 11:18:25]

해당 테이블에 다른 트랜잭션이 걸려 끝날때 까지 대기하는 현상이 발생하는 걸로 보입니다.
해당 서버가 혹시 서비스중이 아닌지 모르겠습니다.
DDL 작업의 경우 서비스 내린후 점검때 하는것이 좋습니다.

by lovely랑 [2013.05.19 18:47:45]

서버 CPU점유율을 체크 해보심이 100% 가까이 하고 있따면, db에서 작업중이지 않을까요?

processlist에 실행중인 타 sql 내용이 없으면 아마 구동중일 거라 생각됩니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입