0201 TIL

looggi·2023년 2월 1일
0

TILs

목록 보기
22/114
post-thumbnail

딕셔너리 정렬하는거 복습은 개뿔 낼하기~
https://dogsavestheworld.tistory.com/110

프로그래머스 문제풀기

➡️ x만큼 간격이 있는 n개의 숫자

def solution(x, n):
    ans=[]
    y=x
    while len(ans) != n:
        ans.append(y)
        y+=x
    return ans
def solution(x, n):
    return [x+(i)*x for i in range(n)]

리스트 축약식으로 풀려고 하면 생각이 확실히 좀 다르게 되는 것 같다. 오늘도 range(len()) 안써서 뿌듯하당ㅋㅅㅋ

데이터베이스

드라이빙driving 테이블 vs 드리븐driven 테이블

레코드 수가 적은 테이블이 먼저 엑세스 되어야 스캔횟수가 적어져 수행 속도가 보다 빨라짐

  • 드라이빙 테이블(아우터 테이블): join시 먼저 엑세스 되는 테이블
  • 드리븐 테이블 = lookup table (이너 테이블): join시 나중에 엑세스 되는 테이블

옵티마이저의 유형에 의해 결정됨

옵티마이져

관계형 데이터베이스에서 사용자가 작성한 SQL 질의문에 대한 최적화된 실행방법(실행계획)을 찾아냄

  • 규칙기반 옵티마이저 RBO(Rule-Based Optimizer)
    실행계획을 생성하는 규칙의 우선순위에 따라 실행 계획을 세움 → 인덱스 유무와 종류, 연산자의 종류, 참조 객체의 종류

    • 인덱스를 이용한 엑세스를 전체 테이블 엑세스보다 우선한다
    • 조인 칼럼에대한 인덱스가 모두 있으면 우선순위가 높은 테이블 = driving
    • 위의 경우 우선순위가 같으면 from절의 테이블 순서의 반대로. 즉 마지막 테이블 = driving
    • 조인 칼럼에 인덱스가 존재하면 인덱스 없는 테이블 = driving
      : 인덱스 없는 테이블의 반복 스캔(인덱스 테이블의 레코드 수만큼)을 피하기 위해
    • 조인 칼럼에대한 인덱스가 양쪽 모두에 존재할 때 우선순위가 높은 테이블 = driving
  • 비용기반 옵티마이저 CBO(Cost-Based Optimizer)
    쿼리를 수행하는데 소요되는 예상 비용(소요 시간 및 자원 사용량)으로 계획을 세움 → 통계정보를 이용해 비용 예측
    실행계획마다 비용사항 예상값이 표시됨(cost, card, bytes)
    같은 쿼리문이라도 통계정보, DBMS 버전, DBMS 설정 정보에 따라 실행계획이 서로 다를 수 있음
    대부분의 RDBMS는 CBO를 제공한다.

    • 조인 칼럼 모두에 인덱스가 존재하면 각 테이블의 통계에 따라 레코드수가 적은 테이블 = driving
    • 조인 칼럼에 인덱스가 존재하면 인덱스 없는 테이블 = driving
    • 조인 칼럼 모두 인덱스가 없으면 스캔되는 레코드 수에 따라 결정되고 드리븐 테이블이 풀스캔된다

비용기반 옵티마이저의 구성

  • 질의 변환기: 사용자가 작성한 SQL문을 처리하기에 보다 용이한 형태로 변환하는 모듈
  • 대안 계획 생성기: 가능한 모든 대안 계획을 생성해야 보다 나은 최적화를 수행할 수 있지만 생성이 너무 많아지면 최적화를 수행하는 시간이 많이 소요되므로 대부분의 상용 옵티마이저들은 대안 계획의 수를 제약하는 다양한 방법을 사용한다. 이러한 현실적인 제약으로 인해 생성된 대안 계획들 중에서 최적의 대안 계획이 포함되지 않을 수도 있다.
  • 비용 예측기: 대안 계획의 비용 예측

https://devuna.tistory.com/36
https://dataonair.or.kr/db-tech-reference/d-guide/sql/?mod=document&uid=354


profile
looooggi

0개의 댓글