Write Ahead Logging에 대해 설명하시오.

완료됨

INSERTS 또는 DELETES와 같은 데이터베이스에서 변경이 수행되면 해당 변경 내용은 먼저 로그에 기록된 다음 디스크의 데이터 파일에만 기록됩니다. 변경 내용은 데이터 파일에 커밋하기 전에 로그에 기록되기 때문에 이 작업을 미리 쓰기 로그라고 합니다. 전원 손실과 같은 문제가 있는 경우 로그는 항상 최신 데이터를 보유하며 데이터베이스가 일관된 상태인지 확인하는 데 사용할 수 있습니다.

두 번째 이점은 먼저 로그에 변경 내용을 작성하여 테이블 및 인덱스에 대한 변경 내용을 개별적으로 작성하지 않고 일괄 처리로 작성할 수 있다는 것입니다. 이 프로세스는 테이블 및 인덱스를 최신 상태로 유지하는 데 필요한 디스크 쓰기 수를 줄입니다. 로그에 대한 쓰기는 순차적으로 수행되므로 빠릅니다. 모든 데이터를 로그에서 복구할 수 있으므로 테이블 및 인덱스에 대한 쓰기 속도가 느려지므로 일괄 처리로 안전하게 수행할 수 있습니다. 일반적으로 많은 작은 업데이트가 포함된 워크로드의 경우 성능이 향상됩니다.

메모

PostgreSQL의 온-프레미스 구현의 경우 로그 파일은 pg_wal 디렉터리에 저장됩니다. Azure Database for PostgreSQL은 파일 시스템에 대한 액세스를 제공하지 않으므로 로그 파일의 물리적 스토리지에 대해 걱정할 필요가 없습니다.

미리 쓰기 로깅의 작동 방식을 제어하고 워크로드에 맞게 최적화할 수 있는 몇 가지 서버 매개 변수가 있습니다.

  • commit_delay - 트랜잭션 커밋과 디스크에 로그 플러시 사이의 지연입니다.
  • wal_buffers - WAL(미리 쓰기 로깅)을 위한 공유 메모리의 디스크 페이지 버퍼 수입니다.
  • max_wal_size - 자동 검사점을 트리거하기 전에 WAL이 증가할 수 있도록 최대 크기입니다.
  • wal_writer_delay - WAL 작성기에서 수행하는 WAL 플러시 사이의 시간 간격입니다.
  • wal_compression - WAL 파일의 전체 페이지 쓰기가 압축되는지 여부입니다.
  • wal_level - WAL에 기록되는 정보의 양을 결정합니다. 허용되는 값은 REPLICA 또는 LOGICAL입니다.

지정 시점 복원

WAL(미리 쓰기 로그)의 주요 목적은 크래시가 발생하는 경우 데이터베이스 일관성과 내구성을 보장하는 것입니다. 온-프레미스 버전의 PostgreSQL은 로그를 보관처리 용도로 사용할 수 있으며, 구성 설정 archive_modearchive_command를 사용하여 특정 시점으로 복원할 수 있습니다.

Azure Database for PostgreSQL은 기본 파일 시스템에 대한 액세스를 허용하지 않는 관리되는 서비스입니다. 그러나 모든 데이터베이스를 포함하여 서버의 자동 전체 백업을 포함합니다. 이 백업을 사용하면 특정 시점으로 데이터를 다시 만들 수 있습니다. 백업은 자동으로 예약되며 하루에 한 번 수행됩니다. 복원해야 하는 경우 백업 보존을 위해 지정한 일 수까지 최대 35일까지 복원할 수 있습니다. 백업을 보존할 기간을 지정하려면 다음을 수행합니다.

  1. Azure Portal에서 Azure Database for PostgreSQL 유연한 서버로 이동합니다.
  2. 개요 섹션에서 구성선택합니다.
  3. 백업에서 백업 보존 기간(일)찾습니다. 슬라이더 막대를 사용하면 백업을 보존할 일 수를 선택할 수 있습니다.
  4. 저장을 선택하여 변경 내용을 유지합니다.