처음으로 postgres를 사용하는데 한가지 문제가 생겼습니다.
현재 DB사용 목적은 Log저장 및 통계를 위해서 만들었는데 log길이가
8k가 넘는 필드가 3가지가 있는 관계로 3개의 oid필드와 다른 검색을위한
필드 몇개로 table을 구성했습니다. 그리고 사용하는 언어는 java입니다.
근데 문제는 로그를 쓰고 특정날짜 이상 된 로그에 대해서는 쿼리로 지우게
되는데 데이터를 지워도 DB Size가 줄지 않더군여. 그래서 계속적으로
Log를 스케줄링에 의해 지웠다가 다시 쓰게되면 다음과 같은 오류가 발생
합니다
FastPath call returned ERROR: cannot extend pg_largeobject: I/O error.
Check free disk space.
at org.postgresql.fastpath.Fastpath.fastpath(Fastpath.java(Compiled Code))
at org.postgresql.fastpath.Fastpath.fastpath(Fastpath.java(Compiled Code))
at org.postgresql.fastpath.Fastpath.getInteger(Fastpath.java(Compiled Code))
at org.postgresql.largeobject.LargeObjectManager.create(LargeObjectManager.java(Compiled Cod
e))
at org.postgresql.jdbc2.PreparedStatement.setBytes(PreparedStatement.java(Compiled Code))
...
그래서 $PGDATA의 Disk space를 검사 했는데 1.2G정도 되더군여.
근데 이상한것은 레코드를 다 지워도 1.2G라는 검니다. ㅡ.ㅡ
그래서 질문을 드리는데.
1. Table Space를 지정하는 방법이 있는지.
2. Query 문 으로 데이터를 지웠을 경우 oid는 삭제가 안되는지.
3. 아니면 제가 사용을 잘못한건지
(참고로 setBytes()와 getBytes()를 이용하여 oid필드를 참조 합니다.
그리고 record 개수는 하루에 15만개 정도 저장됩니다. )
좀 알려 주세여~~~
|