데이터베이스 더비에 문제가 있습니다. 때때로 글쓰기 작업은 많은 시간이 걸립니다. 차단 쓰기를 읽는 작업이 많이있을 수 있습니까? 감사합니다. .쓰기 작업으로 데이터베이스 작업을 차단할 수 있습니까?
1
A
답변
2
읽기에는 공유 잠금이 필요합니다. 쓰기 (갱신)에는 독점 잠금이 필요합니다. 배타 잠금을 얻으려면 트랜잭션이 공유 잠금이 해제 될 때까지 기다려야합니다. 그래서 a reader can block a writer. 동일한 데이터를 읽으려고
또 다른 트랜잭션이 읽기가 허용되지만, 데이터를 업데이트하려고 트랜잭션이 공유 잠금이 해제 될 때까지 그렇게하는 것을 방지 할 것입니다.
더비의 Type and Scope of Locks도 참조하십시오.
하나 이상의 트랜잭션 중 isolation level을 변경하면 영향을 줄일 수 있습니다. Derby의 기본값은 READ COMMITTED
입니다. 즉, 동시성을 향상 시키려면 하나 이상의 판독기를 READ UNCOMMITTED
으로 설정해야합니다. 그러나 READ UNCOMMITTED
은 더티 읽기, 반복 불가능 읽기 및 팬텀 읽기를 허용합니다. (READ COMMITTED
은 반복 할 수없는 읽기 및 가상 읽기를 허용하지만 더티 읽기를 허용하지 않습니다.)
리더를 차단하는 또 다른 방법은 리더를 빠르게 실행하는 것입니다. 쿼리 실행 계획을 읽고, 단일 및 다중 열 인덱스를 현명하게 사용하고 인덱스를 주기적으로 다시 작성하여 조각화를 줄임으로써 쿼리를 조정하십시오.
관련 문제
- 1. 갈퀴 작업으로 작업을 스포크 할 수 있습니까?
- 2. glGetError가 스레드를 차단할 수 있습니까?
- 3. 양식 필러를 차단할 수 있습니까?
- 4. Spotlight NSMetadataQuery를 차단할 수 있습니까?
- 5. 작업을 작업으로 방향 전환 할 수 없습니다.
- 6. 은 개인적인 방법을 차단할 수 있습니까?
- 7. Android 앱으로 수신 트래픽을 차단할 수 있습니까?
- 8. 디스플레이 : 입력 제출을 차단할 수 있습니까?
- 9. 일부 프로그램의 네트워크 트래픽을 차단할 수 있습니까?
- 10. rebol의 콘솔 오류를 차단할 수 있습니까?
- 11. ASP.Net Dynamic Data - 저장을 차단할 수 있습니까?
- 12. 업로드 폴더에서 PHP 스크립트를 차단할 수 있습니까?
- 13. 프록시가 특정 웹 브라우저를 차단할 수 있습니까?
- 14. 리눅스 세마포어는 프로세스 자체를 차단할 수 있습니까?
- 15. 기존 DLL의 메시지 상자를 차단할 수 있습니까?
- 16. 셀러리에서 어떻게 작업을 실행 한 다음 해당 작업을 다른 작업으로 실행하고 계속 진행할 수 있습니까?
- 17. 다이어그램을 앤트 작업으로 어떻게 유지할 수 있습니까?
- 18. 쓰기 데이터베이스
- 19. Django Celery retry() 작업을 현재 작업으로 계속합니다.
- 20. 다시 쓰기 규칙을 사용하여이 작업을 수행 할 수 있습니까?
- 21. ARM 잠금 레지스터 쓰기 작업으로 장치가 충돌합니다.
- 22. PPL에서 변수 개수 작업으로 작업을 병렬화하는 방법
- 23. "편집"작업을 기본 작업으로 만들려면 어떻게해야합니까?
- 24. FLAG_ACTIVITY_NEW_TASK이 (가) 동일한 작업으로 여러 작업을 시작합니다.
- 25. 작업을 사용할 수있을 때까지 Google AppEngine Pull 작업 대기열을 차단할 수 있습니까?
- 26. securityTrimmingEnabled = true를 사용하여 페이지를 열 수 없게 차단할 수 있습니까?
- 27. Albacore 작업으로 web.config를 변환 할 수 있습니까?
- 28. 이 SQL 뷰는 다른 활동을 차단할 수 있습니까?
- 29. 크론 작업으로 레이크를 실행할 수 없습니다
- 30. 사용자 지정 작업으로 로컬 컴퓨터 레지스트리에 쓰기 (조건부로)