2012-05-14 2 views
1

평균 10 개의 UPDATE 또는 INSERT 문을 실행하는 python 스크립트 (psycopg2 사용)에서 호출하는 저장 함수가 있습니다. iostat은 15k 쓰기/초 및 100 % util을 기록함을 보여줍니다.외부에서 함수를 호출 할 때의 트랜잭션 및 쓰기 성능

가능한 한 빨리 실행되도록 함수를 필요로하므로 이러한 iostat 수를 줄이기 위해 몇 가지 사항을 변경할 수 있기를 바랍니다.

이 상황에서 거래 및 기능과 관련하여 가장 좋은 전략은 무엇입니까? 커밋을 언제 실행해야합니까?

나는 이렇게 저장된 함수를 호출하는 것이 자동으로 시작되어 나를위한 트랜잭션을 끝내는 것을 기억한다. 대기열 역할을하는 테이블에 모든 함수 매개 변수를 삽입하고 해당 테이블을 읽고 작업을 수정하는 것과 같은 다른 작업을 수행하는 것이 더 좋을까요? 또한

코멘트에 링크의 출력,

version      | PostgreSQL 9.1.3 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-51), 64-bit 
checkpoint_completion_target | 0.9 
checkpoint_segments   | 32 
client_encoding    | UTF8 
default_statistics_target | 100 
effective_cache_size   | 8GB 
lc_collate     | en_US.UTF-8 
lc_ctype      | en_US.UTF-8 
log_destination    | stderr 
log_rotation_age    | 1d 
log_rotation_size   | 0 
log_truncate_on_rotation  | on 
logging_collector   | on 
maintenance_work_mem   | 64MB 
max_connections    | 30 
max_stack_depth    | 2MB 
port       | 5432 
server_encoding    | UTF8 
shared_buffers    | 4GB 
synchronous_commit   | off 
temp_buffers     | 128MB 
TimeZone      | US/Eastern 
wal_buffers     | 16MB 
work_mem      | 128MB 
+0

하나의 함수 실행에서 모든 것은 자동으로 단일 트랜잭션의 일부입니다. 테이블 구조, PostgreSQL 튜닝, OS, 파일 시스템 및 파일 배치에 대해 더 많이 알지 못해도 많은 조언을 드릴 수는 없습니다. (내가 알지 못하는 한 가지 예로서, pg_xlog 디렉토리를 별도의 파일 시스템으로 옮겼습니까? 하나의 별도의 RAID가 있습니까? 별도의 컨트롤러가 있습니까?) – kgrittn

+0

모두 2 개의 드라이브에 있습니다. RAID1, xlog는 별도의 것이 아닙니다 파일 시스템. 나는 이것이 바뀌어야한다는 것을 알고 있으며 그렇게 할 계획이있다. 그러나 잠시 동안 나는 트랜잭션을 올바르게 사용하고 분명히 잘못된 것을하지 않도록하고 싶습니다. – jjames

+0

더 많은 것을 알지 못해도 2 개의 스핀들에서 초당 15,000 건의 쓰기가 꽤 좋다는 것을 말해야합니다. 더 많은 스핀들을 추가해야 할 수도 있습니다. 아직 많이하지 않았다면 구성 변경으로 조금 더 짜낼 수 있습니다. 이 페이지에 쿼리를 실행 한 결과를 게시하면 적절한 답을 입력 할만한 가치가있는 게시물을 게시 할 수 있습니다. http://wiki.postgresql.org/wiki/Server_Configuration – kgrittn

답변

0

가의 kgrittin하는 제안은 내가 트랜잭션에 대한 포인트를 만들고 싶어, 디스크 서브 시스템을 개선 할 수 있습니다. 트랜잭션은 WAL에서 강제로 fsync를 강제하므로 더 적은 수의 실제 쓰기가 강제 실행됩니다. 일반적으로 트랜잭션의 논리적 그룹화는 성능보다 중요하지만 장기간의 트랜잭션이 서로 기다리지 않는다면 더 짧은 트랜잭션보다 더 잘 수행됩니다.

관련 문제