PostgreSQL 8.3.23 문서 | ||||
---|---|---|---|---|
PostgreSQL : 문서 : 8.3 : 토토 및 쓰기 로그 | 빠른 뒤로 | 28 장. 젠 토토성 및 쓰기 전달 로그 | 빠른 전달 | 다음 |
젠 토토성은 모든 심각한 데이터베이스의 중요한 속성입니다 시스템 및PostgreSQL젠 토토할 수있는 운영을 보장하기 위해 가능한 모든 것. 한 가지 측면 젠 토토할 수있는 작업은 커밋 된 모든 데이터가 거래는 안전한 비 휘발성 지역에 저장해야합니다. 전력 손실, 운영 체제 고장 및 하드웨어 고장으로부터 (물론 비 휘발성 영역 자체의 실패 제외). 컴퓨터의 영구 저장소에 데이터를 성공적으로 작성합니다 (디스크 드라이브 또는 이와 동등한) 일반적 으로이 요구 사항을 충족합니다. ~ 안에 사실, 컴퓨터가 치명적으로 손상 되더라도 디스크가 운전하는 경우 생존하면 비슷한 상태에서 다른 컴퓨터로 옮길 수 있습니다. 하드웨어 및 모든 커밋 된 거래는 그대로 유지됩니다.
데이터를 주기적으로 디스크 플래터로 강제하는 동안 간단한 작동처럼 보이지만 그렇지 않습니다. 디스크 드라이브이기 때문에 메인 메모리 및 CPU보다 극적으로 느리게 컴퓨터의 메인 메모리와 디스크 사이에 캐싱이 존재합니다. 플래터. 먼저 운영 체제의 버퍼 캐시가 있으며 캐시는 자주 디스크 블록을 요청하고 디스크를 결합합니다 쓴다. 다행히 모든 운영 체제는 응용 프로그램을 제공합니다 버퍼 캐시에서 디스크로 쓰기를 강제로하는 방법PostgreSQL해당 기능을 사용합니다. (참조Wal_Sync_Method이 작업이 수행되는 방식을 조정하는 매개 변수.)
다음으로 디스크 드라이브 컨트롤러에 캐시가있을 수 있습니다. 이것은 특히 일반적입니다Raid컨트롤러 카드. 이 캐시 중 일부 이다쓰기 스루, 의미는입니다 그들이 도착하자마자 드라이브로 지나갔습니다. 다른 사람은쓰기 백, 즉 데이터가 전달됩니다 나중에 드라이브. 이러한 캐시는 젠 토토성이 될 수 있습니다 디스크 컨트롤러 캐시의 메모리가 휘발성, 정전으로 내용물을 잃게됩니다. 더 나은 컨트롤러 카드가 있습니다배터리 지원캐시, 즉 카드에 전원을 유지하는 배터리가 있습니다. 시스템 전력 손실의 경우 캐시. 전원이 복원 된 후 데이터는 디스크 드라이브에 기록됩니다.
마지막으로 대부분의 디스크 드라이브에는 캐시가 있습니다. 일부는입니다 글을 쓰는 동안 일부는 쓰기와 같은 우려가 있습니다 Write-Back 드라이브 캐시의 데이터 손실에 대해 디스크 컨트롤러 캐시. 소비자 등급의 IDE 및 SATA 드라이브가 있습니다 특히 쓰기 캐시가있을 가능성이 높습니다 정전에서 살아남습니다. 쓰기 캐싱을 확인하려면Linuxusehdparm -나; A가 있으면 활성화됩니다.*옆쓰기 캐시. HDPARM -W쓰기 캐싱을 끄려면. 에freebsduseAtacontrol. (SCSI 디스크 사용SDPARM끄기wce.) onSolaris디스크 쓰기 캐시는에 의해 제어됩니다.형식 -E. (그만큼 SolarisZFS파일 시스템입니다 자체 디스크를 발행하기 때문에 디스크 쓰기 캐시가 활성화되어 안전합니다. 캐시 플러시 명령.) ONWindowsifWal_sync_methodisOpen_Datasync(기본값), 쓰기 캐싱은입니다 선택 취소로 비활성화내 컴퓨터 \ Open \ 디스크를 선택하십시오 Drive \ Properties \ Hardware \ Properties \ Policies \ 쓰기 활성화 디스크의 캐싱. 또한 Windows,fsyncandfsync_writethrough캐싱을 쓰지 마십시오. 그만큼fsync_writethrough옵션도 가능합니다 쓰기 캐싱을 비활성화하는 데 사용MACOS 엑스.
운영 체제가 쓰기 요청을 디스크에 보낼 때 하드웨어, 데이터에 데이터가 있는지 확인하기 위해 할 수있는 일은 거의 없습니다. 진정으로 비 휘발성 저장 공간에 도착했습니다. 오히려, 그것은입니다 모든 스토리지를 확인 해야하는 관리자의 책임 구성 요소는 데이터 무결성을 보장합니다. 디스크 컨트롤러를 피하십시오 비 버터 시게하는 쓰기 캐시가 있습니다. 드라이브 레벨에서 비활성화하십시오 드라이브가 데이터를 보장 할 수없는 경우 쓰기 캐싱 종료 전 작성.
데이터 손실의 또 다른 위험은 디스크 플래터 쓰기에 의해 제기됩니다. 운영 자체. 디스크 플래터는 부문으로 나뉩니다. 일반적으로 512 바이트 각각. 모든 물리적 읽기 또는 쓰기 작업 전체 부문을 처리합니다. 쓰기 요청이 드라이브, 512 바이트, 1024 바이트 또는 8192 바이트의 경우, 언제든지 전력 손실로 인해 글쓰기 과정이 실패 할 수 있습니다. 512 바이트 부문 중 일부가 작성되었으며 다른 부분은 그렇지 않았다. 그러한 실패를 막기 위해PostgreSQL정기적으로 전체 페이지를 씁니다 영구 저장 이미지전실제 페이지 수정 디스크. 이렇게하면 충돌 회복 중PostgreSQL부분적으로 작성된 복원 할 수 있습니다 페이지. 배터리 지원 디스크 컨트롤러가있는 경우 부분 페이지 쓰기를 방지하는 파일 시스템 소프트웨어 (예 : Reiserfs 4),를 사용 하여이 페이지 이미징을 끄질 수 있습니다.full_page_writes매개 변수.
PostgreSQL : 문서 : 8.3 : 토토 및 쓰기 로그 | 홈 | 다음 |
젠 토토성 및 쓰기 로그 | up | 쓰기 로깅 (Wal) |