느 린 실행 이나 느 린 조 회 를 최적화 하 는 방법
2523 단어 postgreSQL
이전 표 의 데이터 양 이 비교적 적 고 그 후에 데이터 양 이 많 으 면 조회 가 느 려 지 는 것 과 같다.이때 자주 사용 하 는 필드 에 색인 을 추가 하면 효율 이 배가 된다.
2.색인 을 만 드 는 것 은 속 도 를 높이 기 위해 서 이 므 로 색인 필드 에 대한 계산 이나 유형 전환 을 피한다.
예 를 들 어 where a*5=10 은 where a=10/5 로 전환 할 수 있 습 니 다.그러면 업무 논리 도 확보 할 수 있 고 원래 의 색인 을 계속 사용 하여 조작 할 수 있 기 때문에 색인 필드 에 대한 계산 이나 유형 전환 을 피해 야 합 니 다.
3.표 의 디자인 이 특히 중요 하 므 로 LEFT JOIN 또는 RIGHT JOIN 을 사용 하여 표 조회 하 는 것 을 피한다.
비 즈 니스 논리 가 허용 되 고 표 에 더러 운 데이터 가 거의 없다 면 JOIN 으로 연결 표를 조회 할 수 있 습 니 다.LEFT JOIN 이나 Right JOIN 으로 조회 하 는 것 을 권장 하지 않 습 니 다.그 자체 의 연결 표 는 차이 가 있 기 때문에 JOIN 으로 연결 표를 사용 하여 속 도 를 올 리 는 것 을 권장 합 니 다.
4.필드 를 조회 할 때 모두 되 돌아 오지 않 고 사용 을 꺼 립 니 다*.어떤 필드 로 어떤 지역 으로 돌아 가 는 것 이 좋 고 관련 업 무 를 더욱 명확 하 게 할 수 있 습 니 다.
select * from table_name;
검색,결과 집합 으로 돌아 가면 io 를 사용 하고 대역 폭 의 자원 을 사용 하기 때문에 결과 집합 내용 이 적 고 속도 도 향상 된다.
5.필드 에 대한 사용 이 특수 한 경우 가 있 습 니 다.표현 식 색인 에 효율 을 제공 하 는 것 을 권장 합 니 다.
표현 식 색인,한 필드 에 lower(필드 xxx)를 자주 하면 표현 식 lower(필드 xxx)의 색인 을 만 들 수 있 습 니 다.동작 만 색인 에 사용 할 수 있 고 속도 가 향상 되 기 마련 입 니 다.
6.일부 색인 은 사실 차이 가 많 지 않 은 것 이 연합 색인 이 고 몇 개의 필드 에서 조회 하 는 값 은 항상 상수 이 므 로 이 때 일부 색인 을 고려 할 수 있 습 니 다.
: where a = 'f' and b = '2'
a='f'and b='2'의 부분 색인 을 만 들 수 있 습 니 다.업무 가 자주 사용 되 기 때문에 자 연 스 럽 게 속 도 를 올 릴 수 있 습 니 다.
7.복잡 한 sql 을 분해 하고 sql 실행 시간 에 관심 을 가 지 며 lock 입도 에 관심 을 가 집 니 다.
만약 에 조작 한 데이터 의 양 이 비교적 많 으 면 DML,DDL 언어 든 모두 lock 의 입 도 를 고려 해 야 한다.온라인 업무 조작 에 영향 을 주지 않 고 보통 분포 집행 이다.일 을 절약 하기 위해 업 무 를 중단 하지 않 으 면 얻 는 것 보다 잃 는 것 이 많다.조작 하기 전에 조작 데이터 의 등급 을 먼저 살 펴 본다.
8.색인 유지 보수(BDA 작업 범주)
색인 유 지 는 사용 하지 않 고 디스크 공간 을 차지 하 는 공간 이 비교적 크 므 로 자 연 스 럽 게 삭제 하거나 업무 논리 에 따라 특정한 필드 의 색인 알고리즘 을 조정 하거나 새로운 색인 을 사용 하여 오래된 색인 을 대체 합 니 다.같은 필드 의 두 색인 을 최적화 처리 할 때 주종 복사 메커니즘 이 존재 한다 면 색인 은 생산 업무 에 영향 을 주지 않도록 주의 하 십시오.
주의:상기 최 적 화 는 모두 기 존의 업무 수 요 를 바 꾸 지 않 는 최 적 화 를 바탕 으로 한다.그렇지 않 으 면 다른 방법 으로 최적화 시킨다.
9.흔히 볼 수 있 는 몇 가지 색인 알고리즘
B-Tree、 Hash、Gist、SP-Gist、Gin、BRin
그런 색인 을 사용 하여 업무 논리의 특징 이나 필드 의 유형 에 따라 정 해 야 합 니 다.
pg 의 공식 문서:
https://www.postgresql.org/docs/9.6/static/bookindex.html