2009-10-13 7 views
1

여러 사용자가있는 개발 MySQL (InnoDB 전용) 서버를 사용하고 있습니다. 각 사용자는 독점적 인 하나의 스키마에 액세스 할 수 있습니다. 어떻게하면 각 사용자가 1GB 만 사용할 수 있도록 스키마 크기를 제한 할 수 있습니까?MySQL 스키마 크기

답변

2

MySQL 자체는 할당량 시스템을 제공하지 않습니다. James McNellis가 제안한 방법을 사용하는 것이 효과적 일지 모르지만, InnoDB가 하드 할당량 한도에 도달하면 갑자기 안정성에 도움이되지 않습니다. 모든 데이터 파일은 여전히 ​​제거 할 수없는 시스템 테이블 공간을 통해 연결됩니다.

불행히도 내가 원하는 것을 성취 할 수있는 실용적인 방법이 없습니다. 사전 정의 된 한계를 초과하는 디스크 공간 사용에 대해 우려하고 외부 할당량 규정을 따르고 싶지 않은 경우 조합 된 테이블 공간 설정 (예 : innodb_file_per_table)을 유지하고 구성에서 :autoextend을 제거하는 것이 좋습니다.

그런 식으로도 사용자 또는 스키마 별 한계는 없지만 적어도이 설정에서 테이블 공간이 초기 크기를 초과하지 않기 때문에 디스크에 데이터가 채워지는 것을 방지 할 수 있습니다. innodb_file_per_table으로 불행히도 각각 최대 크기로 정지하도록 구성 할 수는 없습니다.

이것은 MySQL이 다른 많은 엔터프라이즈 수준의 데이터베이스와 다른 점 중 하나입니다. 나쁘지는 않아도, 우리는 InnoDB를 수천 건의 설치에서 많은 양의 데이터를 사용하기 때문에, 생산 등급에 대한 준비가되어 있음이 분명합니다. 때때로 관리 기능 만 부족합니다.

+0

MySQL은 디스크 공간이 부족한 것이 싫다고 좋은 지적입니다. innodb_file_per_table은 각 데이터베이스가 사용하고있는 대략적인 디스크 공간을 알기 때문에 소프트 제한을 유지하는 데 사용될 수 있습니다. –

+0

Innodb은 디스크 공간 부족 문제를 잘 견뎌야합니다. MyISAM은 그렇지 않다. 프로세스를 영원히 차단합니다 (트랜잭션이 없으므로 이미 수행 한 작업을 롤백 할 수 없기 때문입니다). InnoDB의 디스크 공간이 부족한 경우 어떻게되는지 테스트 해주십시오. innodb_file_per_table이 필요합니다. – MarkR

+0

또한 사용자가 MyISAM 테이블을 쉽게 만들지 못하게 할 수 있습니다. 엔진은 mysql에 내장되어 있으며 제거 할 수 없습니다. 또한 임시 테이블 등을 사용할 수 있습니다. file_per_table이 활성화되면 Innodb 임시 테이블은 여전히 ​​큰 "ibdata1"파일로 이동합니다. – MarkR