2008-08-28 4 views
2

perl DBI를 통해 액세스되는 oracle 10g를 사용하면 다른 프로세스를 훨씬 더 자주 읽는 동안 수천만 개의 행이 초당 몇 번 업데이트되는 테이블이 있습니다.언제 변경을 커밋할까요?

곧 업데이트 빈도가 두 배 정도 증가합니다. 누군가는 매번 업데이트하지 않고 매 N 개의 업데이트를 커밋하는 것이 성능 향상에 도움이된다고 제안했습니다.

나는 몇 가지 질문이 있습니다

  • 가 빠르거나 느려집니다 또는
  • 왜 그것을 것 (새로운 부하의 괜찮은 시뮬레이션을 얻을 수 있습니다 자마자 벤치 마크에 두 방법을 계획)이 달려있다 도움/성능 저하.
  • "의존하는 경우 ...", 무엇에?
  • N의 가장 좋은 값을 얻는 데 도움이된다면?
  • 내 로컬 DBA가 필요로 할 때 왜 도움이되는 대답을하지 못하는 이유는 무엇입니까?
    는 :-) (사실 나는 그 일에 대한 답을 알고)

편집 :

@codeslave : 감사합니다, BTW 문제가, 난을 삭제하지 마십시오 되지 미트되지 않은 변경을 잃고 나는 확실히 모든 이 BTW 여자가 서버를 전원 플러그가 꽂혀했다 청소, 괜찮 오전까지 일부 인터넷 검색 그것이 때문에 도움이 될 보였다 원본 데이터는

:-) 두 번 업데이트하는 사용 롤백과 관련된 문제가 개이지만 몇십 개마다 N에 대해 규칙을 잘 모르겠습니다. 수백? 천?

@diciu : 훌륭한 정보, 나는 확실히 을 살펴볼 것입니다.

답변

3

커밋을 수행하면 오라클이 디스크 (즉, 리두 로그 파일)에 내용을 기록하므로 커밋중인 트랜잭션이 완료되면 정전 등의 경우 복구 할 수 있습니다. 파일 쓰기는 메모리 쓰기보다 느리기 때문에 병합 된 업데이트 세트가 아닌 연속적인 많은 작업에 대해 수행되는 경우 커밋이 느려질 수 있습니다. 비동기 그 수가 커밋있어 오라클 10g에서

훨씬 빠르지 만 신뢰성이 떨어지는 : 나는 시나리오에 내가 합체 업데이트의 수를 변경, 특정 응용 프로그램에서 본 적이 있는지 알고 https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-6158695.html

PS 5K에서 50K로 빠르게 (10 배 빨라짐) 더 빠릅니다.

0

더 빨라요/느리게?

아마도 조금 빨라질 것입니다. 그러나, 당신은 왜 도움이 될

등, 치명적인 무언가가, (청소 여자가 서버에 전원 플러그가 꽂혀) FUD, 불, 유황을 발생한다 커밋되지 않은 변경을 잃고, 교착 상태에 실행의 더 큰 위험이?

분명히 적은 등 차례로 적은 디스크 쓰기를 의미 운영,

DBA의 똑바로 대답을 커밋?

쉬운 경우라면 필요하지 않습니다.

1

커밋 빈도를 줄이면 확실히 속도가 빨라지지만이 테이블을 자주 읽고 쓰면 잠금 가능성이 있습니다. 오직 당신 만이 동일한 데이터가 동시에 업데이트 될 가능성을 판단 할 수 있습니다. 이 가능성이 낮 으면 50 행마다 커밋하고 상황을 모니터링하십시오. 시행 착오 나는 두려워요 :-)

0

[모든 것이 잘 될 때까지 업데이트에 사용 된 원본 데이터를 삭제하지 않으면] 모든 증분 커밋을 제거하지 않는 이유는 무엇입니까? 사이에, 그리고 롤백에 문제가 있다면? 당신이 효과적으로 거래 시스템 위에 트랜잭션 시스템을 구축 한 것 같습니다.

0

@CodeSlave 귀하의 질문에 @stevechol이 응답합니다. 모든 증분 커밋을 제거하면 잠금이 설정됩니다. 나는 그의 조언을 따라 무작위 수를 선택하고, 부하를 모니터링하고, 그에 따라 조정할 것입니다. @diciu twaks를 신청하는 동안.

추신 : 트랜잭션 중 트랜잭션이 우발적 인 경우 FTP를 통해 파일을 업데이트하고 즉시 삭제하는 대신 cron 작업을 설정하여 일주일 후 삭제합니다 (응용 프로그램을 사용하는 사람이없는 경우). 불평)는 뭔가 잘못되었을 때 오류를 잡기 위해 1 주일이 걸렸다는 것을 의미합니다.

1

커밋 빈도를 줄이는 것뿐만 아니라 개별 커밋 빈도 대신 일괄 업데이트를 수행하는 것도 고려해야합니다.

+0

그 이유가 무엇인지 자세히 설명해 주실 수 있습니까? – Pat

+0

더 적은 SQL 조작으로 더 많은 데이터를 처리 할 수 ​​있기 때.입니다. 더 빠릅니다. –

관련 문제