SQL - DB 속도 향상

sql

목록 보기
2/3
post-thumbnail

몇 천만 건의 데이터를 DB로 쓰다가 디버깅도 너무 느리고, 답답했는데 아래와 같이 설정하니 엄청 빨라졌다. 참고로 중요한 정보가 아니니깐 이렇게 설정한 것이니 백업을 하고 작업하자!

  • cursor.execute("PRAGMA busy_timeout = 30000")
    : 매개변수는 ms단위, Sets a busy handler that will sleep until the database is not locked or the timeout is reached.
  • cursor.execute("PRAGMA synchronous=OFF")

    : 디스크에 동기화 하는 기능 off

  • cursor.execute("PRAGMA journal_mode=WAL")

    : Write-ahead log 방식은 트랜잭션이 종료되더라도 모든 변경사항을 DB 에 기록하는 대신 최소한의 로그(log)만 기록한다. 즉 DB 일관성을 유지하기 위한(손상되지 않게 하기 위한) 최소한의 로그만 저장하는 방식이다.

  • cursor.execute("PRAGMA cache_size=10000")

    • 캐시 크기를 알맞게 변경해주어 속도를 향상시킨다.
    • 캐시 size는 바이트가 아닌 페이지 단위
    • 10000 -> 50000 변경시 2천 문장 파일 전처리 시간: 8분-> 3분
  • isolation_level=None

    : Transaction Isolation Level을 걸지 않아 속도를 향상시킨다.

profile
나 응애👶 개발자, 딥린이👨‍💻, 언어 연구자 👨‍🎓

0개의 댓글