MySQL 의 데이터 적재 효율 향상

상대 적 으로 데 이 터 를 데이터베이스 에 불 러 오 는 것 은 단 도 직 입적 이다.그러나 데이터 마 운 트 작업 효율 을 개선 하 는 전략 도 존재 합 니 다.그 기본 원 리 는 다음 과 같 습 니 다.일괄 마 운 트 가 한 줄 로 마 운 트 하 는 것 보다 빠 릅 니 다.모든 기록 을 불 러 온 후에 색인 고속 캐 시 를 새로 고 칠 필요 가 없 기 때 문 입 니 다.일괄 기록 을 불 러 온 후에 야 갱신 할 수 있 습 니 다.표 에 색인 이 없 을 때 색인 보다 더 빨리 불 러 옵 니 다.색인 이 있 으 면 데이터 파일 에 기록 을 추가 해 야 할 뿐만 아니 라 모든 색인 을 수정 하여 추 가 된 신기록 을 반영 해 야 한다.짧 은 SQL 문 구 는 서버 측 과 관련 된 분석 이 적 고 네트워크 를 통 해 클 라 이언 트 에서 서버 로 보 내 는 것 이 빠 르 기 때문에 빠 릅 니 다.이런 요소 중 일 부 는 보 잘 것 없 는 것 같 지만 대량의 데 이 터 를 적재 하려 면 작은 요소 라 도 큰 결 과 를 얻 을 수 있다.우 리 는 상기 일반적인 원 리 를 이용 하여 데 이 터 를 어떻게 가장 빨리 적재 하 는 지 에 관 한 몇 가지 실제 결론 을 추론 할 수 있다.LOAD DATA(모든 형식 포함)는 INSERT 보다 효율 이 높 고 일괄 적재 줄 이기 때문이다.색인 새로 고침 이 적 고 서버 는 몇 개의 문구 가 아 닌 한 개의 문 구 를 분석 하고 해석 해 야 합 니 다.LOAD DATA 는 LOAD DATA LOCAL 보다 효율 이 높다.LOAD DATA 를 이용 하면 파일 이 서버 에 위치 해 야 하고 FILE 권한 이 있어 야 하지만 서버 는 디스크 에서 파일 을 직접 읽 을 수 있 습 니 다.LOAD DATA LOCAL 을 이용 하여 클 라 이언 트 가 파일 을 읽 고 이 를 네트워크 를 통 해 서버 에 보 내 는 것 은 매우 느리다.INSERT 를 사용 해 야 한다 면 하나의 구문 에서 여러 줄 을 지정 할 수 있 는 형식 을 사용 해 야 합 니 다.예 를 들 어 구문 에서 지정 할 수 있 는 줄 이 많 을 수록 좋 습 니 다.이렇게 하면 필요 한 문장의 수 를 줄 이 고 색인 리 셋 량 을 낮 출 수 있다.my sqldump 를 사용 하여 데이터베이스 백업 파일 을 만 들 려 면--extended-insert 옵션 을 사용 하여 덤 프 파일 에 여러 줄 의 INSERT 문 구 를 포함 하도록 해 야 합 니 다.--o p t(최적화)도 사용 할 수 있 습 니 다.--extended-insert 옵션 을 사용 합 니 다.반대로 mysqldump 의--complete-insert 옵션 을 사용 하 는 것 을 피해 야 합 니 다.이 옵션 을 사용 하면 INSERT 문 구 를 한 줄 로 만 들 고 실행 시간 이 길 며 사용 하지 않 는--complete-insert 옵션 으로 생 성 된 문 구 를 분석 할 필요 가 있 습 니 다.네트워크 데이터 트 래 픽 을 줄 이기 위해 압축 된 클 라 이언 트/서버 프로 토 콜 을 사용 합 니 다.대부분의 MySQL 클 라 이언 트 에 대해 서 는--copress 명령 행 옵션 으로 지정 할 수 있 습 니 다.그것 은 일반적으로 비교적 느 린 네트워크 에 만 사용 된다.왜냐하면 압축 은 대량의 프로세서 시간 을 차지 해 야 하기 때문이다.MySQL 에 결 성 된 값 삽입 하기;INSERT 구문 에 결 성 된 값 을 임의의 방식 으로 부여 할 열 을 지정 하지 마 십시오.평균 적 으로 이렇게 하면 문장 이 더욱 짧 아 지고 네트워크 를 통 해 서버 에 전송 되 는 문자 수 를 줄 일 수 있다.그 밖 에 문장 에 포 함 된 값 이 비교적 적 고 서버 가 진행 하 는 분석 과 전환 이 비교적 적다.표 가 색인 이 라면 일괄 삽입(LOAD DATA 또는 여러 줄 의 INSERT 구문)을 이용 하여 색인 비용 을 줄 일 수 있 습 니 다.이렇게 하면 색인 업데이트 의 영향 을 최소 화 할 수 있 습 니 다.색인 은 모든 줄 에서 시간 이 지나 야 새로 고침 을 할 수 있 기 때문에 줄 마다 처리 한 후에 새로 고침 하 는 것 이 아 닙 니 다.만약 대량의 데 이 터 를 새 테이블 에 불 러 올 필요 가 있다 면,이 테이블 을 만 들 고,색인 이 없 을 때 불 러 오고,데 이 터 를 불 러 온 후에 야 색인 을 만 드 는 것 이 비교적 빠르다.한 번 에 색인 을 만 드 는 것 이 빠 릅 니 다.불 러 오기 전에 색인 을 삭제 하거나 사용 하지 않 으 면 데 이 터 를 불 러 온 후에 색인 을 다시 만 들 거나 사용 하면 불 러 오 는 것 이 더 빠 를 수 있 습 니 다.데이터 마 운 트 에 삭제 나 비활성화 정책 을 사용 하려 면 반드시 실험 을 해 야 합 니 다.이렇게 하 는 것 이 가치 가 있 는 지 확인 하 십시오.DROP INDEX 와 CREATE INDEX 로 색인 을 삭제 하고 재 구성 할 수 있 습 니 다.다른 선택 할 수 있 는 방법 은 my isamchk 나 isamchk 를 이용 하여 색인 을 사용 하지 않 고 사용 하 는 것 입 니 다.이것 은 MySQL 서버 호스트 에 계 정 이 있 고 표 파일 에 대한 기록 권 이 있어 야 합 니 다.표 색인 을 사용 하지 않 기 위해 서 는 데이터베이스 디 렉 터 리 에 들 어 갈 수 있 습 니 다.다음 명령 중 하 나 를 실행 하 십시오.MYI 확장자 가 있 는 색인 파일 을 가 진 MyISAM 표 에 my isamchk 를 사용 하고,ISM 확장자 가 있 는 색인 파일 을 가 진 ISAM 표 에 isamchk 를 사용 합 니 다.표 에 데 이 터 를 불 러 온 후 다음 과 같이 색인 을 활성화 합 니 다.색인 을 사용 하지 않 고 활성화 하기 로 결정 하면 13 장 에 소 개 된 표 복구 잠 금 프로 토 콜 을 사용 하여 서버 가 동시에 잠 금 을 변경 하 는 것 을 막 아야 합 니 다.(이 때 는 표 에 대한 복 구 를 하지 않 지만 표 복구 과정 처럼 수정 하려 면 같은 잠 금 프로 토 콜 을 사용 해 야 합 니 다)상기 데이터 적재 원 리 는 서로 다른 조작 을 수행 해 야 하 는 클 라 이언 트 기기 와 관련 된 고정 조회 에 도 적용 된다.예 를 들 어 자주 업데이트 되 는 표 에서 SELECT 조 회 를 장시간 실행 하 는 것 을 피하 고 싶 습 니 다.SELECT 조 회 를 장시간 실행 하면 많은 경쟁 이 발생 하고 기록 프로그램의 성능 이 떨 어 집 니 다.기 록 된 것 이 주로 INSERT 작업 이 라면 기록 을 임시 표 에 저장 한 다음 정기 적 으로 메 인 표 에 넣 는 것 이 가능 한 해결 방법 이다.새 기록 에 즉시 접근 해 야 한다 면,이것 은 실행 가능 한 방법 이 아니다.하지만 짧 은 시간 안에 접근 하지 않 으 면 이 방법 을 사용 할 수 있다.임시 표를 사용 하 는 것 은 두 가지 방면 의 장점 이 있다.우선 메 인 테이블 에 있 는 SELECT 조회 문구 와 의 경쟁 을 줄 였 기 때문에 실행 이 빠르다.그 다음 에 임시 표 에서 메 인 표를 불 러 오 는 총 시간 이 각각 기록 을 불 러 오 는 총 시간 보다 적다.해당 색인 캐 시 는 줄 마다 불 러 온 후에 새로 고침 하 는 것 이 아니 라 일괄 불 러 온 후에 새로 고침 합 니 다.이 정책 의 한 응용 프로그램 은 웹 서버 에 들 어 가 는 웹 페이지 에서 MySQL 데이터 베 이 스 를 방문 하 는 것 입 니 다.이 경우 메 인 테이블 에 즉시 들 어 갈 수 있 는 높 은 권한 이 보장 되 지 않 을 수 있 습 니 다.데이터 가 시스템 비정 상 종료 이벤트 에 삽 입 된 단일 기록 이 아니라면 색인 새로 고침 을 줄 이 는 또 다른 전략 은 MyISAM 표를 사용 하 는 DELAYED 입 니 다.KEY_WRITE 표 생 성 옵션(MySQL 을 일부 데이터 입력 작업 에 사용 할 때 이 럴 수 있 습 니 다).이 옵션 을 사용 하면 색인 캐 시 를 삽입 할 때마다 새로 고침 하 는 것 이 아니 라 가끔 새로 고침 합 니 다.서버 범위 내 에서 지연 색인 리 셋 을 이용 하려 면--delayed-key-write 옵션 을 사용 하여 my sqld 를 시작 하면 됩 니 다.이 경우 색인 블록 쓰기 작업 은 다른 색인 값 을 공간 으로 내 보 낼 때 까지 지연 되 거나 flush-tables 명령 을 실행 한 후 이 색인 표 가 닫 힐 때 까지 지연 되 거나 지연 되 어야 합 니 다.

좋은 웹페이지 즐겨찾기