게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
DB에서 PK때문에 insert, update 속도가 떨어지기도 하나요?
게시물ID : programmer_6721짧은주소 복사하기
작성자 : 리습
추천 : 0
조회수 : 1565회
댓글수 : 3개
등록시간 : 2014/11/25 01:26:50
두개의 테이블이 아래와 같은 스키마로 존재합니다.

create table target_tb ( idx int primary key auto_increment, data varchar(200) unique, result int(11) default 0 );

create table target_tb ( data varchar(200) primary key, result int(11) default 0 );


그리고, 다음과 같은 구문을 실행합니다.

# 저장된 html파일을 가져와 stored procedure로 단어별로 파싱하는 작업을 합니다.
# 파싱하는데에 스토어드 프로시저 이용은 과제의 전제조건이라 어쩔수가 없네요.
# proc(data)는 태그를 제거하는 역활을 합니다.
DECLARE cur CURSOR FOR SELECT proc(data) FROM html where ind>=S LIMIT N LOCK IN SHARE MODE;

REPEAT
    FETCH cur into v_text;
    ~
    START TRANSCATION;
        WHILE (~)
            ... # v_text의 파싱
            INSERT INTO tartget_tb(data,result) values(currWords,1) ON DUPLICATE KEY UPDATE result = result+1;
        END WHILE;
    COMMIT;
UNTIL done = TRUE;
END REPEAT;



1. idx가 있는 tartget_tb에 대한 결과
Query OK, 0 rows affected (5 min 49.25 sec)

2. idx가 없는 target_tb에 대한 결과
Query OK, 0 rows affected (1 min 43.97 sec)


idx가 없는 테이블이 3.37배 가까이 빨랐습니다만, proc(data) 연산에 걸리는 시간이 동일하다고 생각하고 1분정도의 시간을 제외하면 4배 정도는 빠른 속도라고 생각됩니다.

데이터베이스를 깊이 공부하지 않아 이 현상이 이해가 되지 않는 상황입니다. pk에 auto_increment를 적용하면 연속된 insert시 속도가 빨라진다고 들었는데 그게 아닌가요 ㅠㅠ?

그리고, 어떻게든 속도를 빠르게 하고 싶은데 트랜잭션 관점이 아닌 스토어드 프로시저의 절차에서 수정할 만한 사항이 있을까요...?


혹시 PK와 UNIQUE를 같이 사용해서 속도가 저렇게 떨어지는것이였을까요?
data에 unique제약조건이 걸리나  primary key 제약조건이 걸리나 달라질건 없을 것 같은데

ㅁㅇ람ㄴㅇㄹㅁㄴㅇ
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호