데이터베이스 관리에서는 대규모 데이터 작업을 효율적으로 처리하는 것이 중요합니다. 일반적인 과제 중 하나는 전체 성능을 저하시키지 않고 대규모 테이블에서 대량 삭제를 실행하는 것입니다. 이 기사에서는 PostgreSQL의 테이블 파티셔닝 기능이 어떻게 프로세스 속도를 크게 높이고
원활한 데이터베이스 운영을 유지하도록 도와주세요.
여기에서 더 많은 작업을 확인하세요.
PostgreSQL 테이블에서 많은 수의 행을 삭제하는 작업은 시간이 많이 걸릴 수 있습니다. 여기에는 다음이 포함됩니다.
수백만 개의 행이 있는 테이블의 경우 이 프로세스로 인해 장기 실행 트랜잭션 및 테이블 잠금이 발생하여 잠재적으로 데이터베이스 응답성에 영향을 미칠 수 있습니다.
테이블 파티셔닝은 큰 테이블을 파티션이라는 더 작고 관리하기 쉬운 조각으로 나누는 기술입니다. 이러한 파티션은 상위 테이블과 동일한 스키마를 공유하는 별도의 테이블입니다.
파티셔닝의 이점을 수량화하기 위해 컨테이너화된 환경에서 PostgreSQL을 사용하여 세 가지 시나리오로 벤치마크를 설정했습니다.
Scenario | Deletion Time | Table Size |
---|---|---|
Simple Table | 1.26s | 728 MB |
Partitioned (Delete Rows) | 734ms | 908 MB |
Partitioned (Drop Partition) | 6.43ms | 908 MB |
다음은 PostgreSQL에서 분할된 테이블을 설정하는 방법에 대한 간단한 예입니다.
CREATE TABLE records (<br> id BIGSERIAL,<br> time TIMESTAMPTZ NOT NULL,<br> body TEXT<br> ) PARTITION BY RANGE (time); <p>CREATE TABLE records_week_1 PARTITION OF records<br> FOR VALUES FROM ('2023-01-01') TO ('2023-01-08');</p> <p>-- Create index on the partition<br> CREATE INDEX idx_records_week_1_time ON records_week_1 (time);</p> <p>-- To delete a week's worth of data:<br> ALTER TABLE records DETACH PARTITION records_week_1;<br> DROP TABLE records_week_1;<br> </p>
시계열 데이터를 처리하는 데이터베이스 또는 대규모 삭제가 일반적인 시나리오의 경우 테이블 파티셔닝을 구현하면 성능이 크게 향상될 수 있습니다. 저장 및 삽입 속도에는 약간의 상충 관계가 있지만 삭제 효율성의 이점은 이러한 비용보다 훨씬 큰 경우가 많습니다.
파티셔닝을 활용하면 데이터가 증가하더라도 고성능을 유지할 수 있으므로 PostgreSQL 데이터베이스의 응답성과 효율성을 유지할 수 있습니다.
전체 벤치마크 코드 및 세부 결과 링크
위 내용은 테이블 분할을 통한 PostgreSQL 대량 삭제 최적화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!