Postgres에 내장 된 할당량 시스템이 없으므로이 내용을 잘못 생각한 것 같습니다.
그러나, 당신은 그것을 몇 가지 방법을 할 수있는 :
는 각 사용자의 테이블 스페이스를 작성합니다. 파일 시스템에 할당량이있는 경우 일치시킬 수 있습니다. 물론 데이터베이스의 무결성을 위험에 빠뜨리고 있습니다. 나는 그것을 시도하지 않을 것이다.
계정에 INSERT
을 사용하지 않도록 설정하는 스크립트를 작성하십시오. pg_database_size
을 사용하여 데이터베이스의 디스크 사용량을 쿼리 할 수 있습니다. 나는 쉘 스크립트를 작성하여 액세스 권한을 취소 및 취소하고 cron을 사용하여 주기적으로 실행합니다.
예 :
evlaopt=# select pg_database_size('evlaopt');
pg_database_size
------------------
9240136352
(1 row)
evlaopt=# select pg_size_pretty(pg_database_size('evlaopt'));
pg_size_pretty
----------------
8812 MB
(1 row)
(evlaopt
내 컴퓨터에 데이터베이스입니다.)
하는 말 (사용자와 이름이 일치하는 데이터베이스를 가지고 있고, 그들은 모두 동일한 할당량이 있다고 가정) 100MB. 당신은 같은 것을 할 수있는 : 옛날 페이지에
# grant access to databases below the limit
for DB in $(psql -At -c 'SELECT datname FROM pg_database WHERE NOT datistemplate AND pg_database_size(datname) < 1024 * 1024 * 100'); do
psql -At -c "GRANT INSERT ON ALL TABLES IN SCHEMA public TO $DB" $DB
done
# revoke access to databases at or above the limit
for DB in $(psql -At -c 'SELECT datname FROM pg_database WHERE NOT datistemplate AND pg_database_size(datname) >= 1024 * 1024 * 100'); do
psql -At -c "REVOKE INSERT ON ALL TABLES IN SCHEMA public FROM $DB" $DB
done
링크를 .. 내 구글 결과의 그 –
호기심 https://www.google.de/?client=safari#q=restrict+database+size + postgres 2005, 2008, ... 답변은 @daniel의 답변과 같습니다. 내가 읽은 것에 대해 꽤 확신했기 때문에 나는 웹에있는 정보가 구식이라고 생각했다. 분명히 그렇지 않습니다. –
링크를 가져 주셔서 감사합니다. 나는 아주 오래된 버전의 문서화를 의미한다고 생각했습니다. 사실 대니얼스 대답은 FS 용량 제한을 사용하는 것이 훨씬 더 효율적입니다. –