2025년 9월 25일:토토 커뮤니티 : 토토
이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.스포츠 토토 : 문서 : 17 : F.21. LO - 큰 개체 관리버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

F.20. 봐라

모듈은 다음을 지원합니다. 대형 개체(LO 또는 BLOB라고도 함) 관리 여기에는 다음이 포함됩니다. 데이터 유형그리고 트리거lo_manage.

F.20.1. 이론적 해석

JDBC 드라이버의 문제 중 하나(그리고 이는 ODBC 드라이버도 포함), 사양에서는 다음을 가정합니다. BLOB(Binary Large OBject)에 대한 참조는 해당 항목이 변경되면 연관된 BLOB가 삭제됩니다. 데이터베이스에서.

다음과 같이포스트그레SQL그렇군요. 발생하지 않습니다. 큰 객체는 그 자체로 객체로 취급됩니다. 오른쪽; 테이블 항목은 OID로 대형 객체를 참조할 수 있지만 동일한 대형 객체를 참조하는 여러 테이블 항목일 수 있습니다. OID를 사용하므로 시스템은 단지 사용자가 그러한 항목 중 하나를 변경하거나 제거하십시오.

이제는 괜찮습니다포스트그레SQL특정 애플리케이션, 그러나 표준 JDBC 또는 ODBC를 사용하는 코드는 객체를 삭제하지 않으므로 고아 객체 — 어떤 것에서도 참조되지 않는 객체 단순히 디스크 공간을 차지합니다.

모듈을 사용하면 이 문제를 해결할 수 있습니다. LO 참조 열이 포함된 테이블에 트리거를 연결합니다. 트리거는 본질적으로 다음을 수행합니다.lo_unlink값을 삭제하거나 수정할 때마다 큰 개체를 참조합니다. 이 트리거를 사용하면 모든 대규모 데이터베이스에 대한 데이터베이스 참조가 하나만 있다고 가정합니다. 트리거 제어 열에서 참조되는 개체입니다!

모듈은 데이터 유형도 제공합니다.lo, 이는 실제로는 단지의 도메인일 뿐입니다.oid유형. 이는 다음을 보유하는 데이터베이스 열을 구별하는 데 유용합니다. 다른 것의 OID인 대형 객체 참조. 를 사용할 필요는 없습니다.lo다음을 사용하려면 입력하세요. 하지만 트리거를 사용하여 어느 것이 무엇인지 추적하는 것이 편리할 수 있습니다. 데이터베이스의 열은 현재 사용 중인 대형 개체를 나타냅니다. 트리거로 관리합니다. ODBC 드라이버가 있다는 소문도 있습니다. 사용하지 않으면 혼란스러워집니다.loBLOB용 열.

F.20.2. 방법 사용하세요

다음은 간단한 사용법 예입니다:

CREATE TABLE 이미지(제목 TEXT, 래스터 lo);

이미지를 업데이트하거나 삭제하기 전에 TRIGGER t_raster 생성
    각 행 실행 절차 lo_manage(raster);

대형에 대한 고유한 참조를 포함할 각 열에 대해 개체, 만들기업데이트 또는 삭제 전트리거를 실행하고 열 이름을 유일한 트리거 인수로 제공합니다. 너 또한 업데이트 시에만 실행되도록 트리거를 제한할 수도 있습니다. 를 사용하여 열업데이트 전 컬럼_이름. 여러 개가 필요한 경우lo같은 테이블에 있는 열, 서로 다른 이름을 지정하는 것을 기억하면서 각각에 대해 별도의 트리거 동일한 테이블의 각 트리거에 연결됩니다.

F.20.3. 제한사항

  • 테이블을 삭제하면 테이블에 포함된 모든 개체가 여전히 고아가 됩니다. 트리거가 실행되지 않습니다. 다음을 수행하면 이를 방지할 수 있습니다.드롭 테이블함께삭제 에서테이블.

    잘라내기동일한 위험이 있습니다.

    이미 큰 고아가 있거나 있다고 의심되는 경우 객체, 참조vacuumlo모듈을 정리하는 데 도움이 됩니다. 달리는 것이 좋습니다.vacuumlo가끔 백스톱으로lo_manage트리거.

  • 일부 프런트엔드는 자체 테이블을 생성할 수 있지만 생성되지 않습니다. 연관된 트리거. 또한 사용자는 기억하지 못할 수도 있습니다. 트리거를 생성합니다.