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

F.17. ㅋㅋㅋ

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

F.17.1. 근거

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

다음과 같이포스트그레SQL그렇군요. 발생하지 않습니다. 큰 객체는 객체로 취급됩니다. 자신의 권리; 테이블 항목은 OID로 대형 객체를 참조할 수 있습니다. 하지만 동일한 항목을 참조하는 여러 테이블 항목이 있을 수 있습니다. 대형 개체 OID이므로 시스템이 대형 개체를 삭제하지 않습니다. 그러한 항목 중 하나를 변경하거나 제거했기 때문입니다.

이제 이건 괜찮습니다포스트그레SQL특정 애플리케이션이지만 JDBC 또는 ODBC를 토토 캔하는 표준 코드는 객체를 삭제하지 않습니다. 고아 개체(참조되지 않는 개체)가 발생함 무엇이든 디스크 공간을 차지할 뿐입니다.

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

모듈은 데이터 유형도 제공합니다.lo는 실제로는 단지의 도메인입니다.oid유형. 이는 구별하는 데 유용합니다. 해당 데이터베이스의 대형 개체 참조를 보유하는 데이터베이스 열 이는 다른 것의 OID입니다. 를 토토 캔할 필요는 없습니다.트리거를 토토 캔하려면 입력하세요. 하지만 그럴 수도 있습니다. 이를 토토 캔하여 귀하의 어떤 열을 추적하는 것이 편리합니다. 데이터베이스는 관리 중인 대형 개체를 나타냅니다. 방아쇠. ODBC 드라이버가 혼란스러워진다는 소문도 있습니다. 토토 캔하지 않는 경우loBLOB 열의 경우.

F.17.2. 토토 캔 방법

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

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

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

대형에 대한 고유한 참조를 포함할 각 열에 대해 개체, 만들기업데이트 전 또는 삭제트리거하고 열 이름을 단독으로 지정합니다. 트리거 인수. 여러 개가 필요한 경우lo동일한 테이블의 열, 각각에 대해 별도의 트리거를 생성하십시오. 하나는 각 트리거에 다른 이름을 지정하는 것을 기억하는 것입니다. 같은 테이블.

F.17.3. 제한 사항

  • 테이블을 삭제하면 테이블에 있는 모든 개체가 여전히 고아가 됩니다 트리거가 실행되지 않기 때문에 포함됩니다. 당신은 피할 수 있습니다 이것은드롭 테이블다음에서 삭제테이블.

    잘라내기동일함 위험합니다.

    이미 큰 고아가 있거나 있다고 의심되는 경우 객체, 참조기여/vacuumlo모듈 (배트맨 토토 : 문서 : 9.0 : Vacuumlo) 도와주세요 당신은 그들을 청소합니다. 달리는 것이 좋습니다.vacuumlo가끔 백스톱으로 에lo_manage트리거.

  • 일부 프런트엔드는 자체 테이블을 생성할 수 있지만 그렇지 않습니다. 연관된 트리거를 생성합니다. 또한 사용자는 다음을 수행할 수 없습니다. 트리거를 생성하는 방법을 기억하세요(또는 알아두세요).