2013-03-29 5 views
-1

당신의 도움이 필요합니다. 동일한 초에 select 쿼리가 1000을 초과하는 테이블이 있습니다. 하나의 레코드에서 업데이트를 만들려고 할 때 'select queries'가 업데이트가 완료 될 때까지 중지합니다. 이것은 2-5 분까지 지속됩니다. 이 표에는 locoks가있는 것으로 보입니다. 너 나 좀 도와 줄 수있어? 데이터베이스 잠금

는 BK

+2

어떤 시스템을 사용하고 있습니까? SQL Server, Oracle, MySQL? –

+1

예, 잠금 가능성이 높습니다. 다음 정보를 제공해야합니다. 그러면 사람들이 정답을 줄 수 있습니다. 트랜잭션 격리 수준은 무엇입니까? SELECT 쿼리의 모양은 무엇입니까? 테이블 DDL은 무엇입니까? 인덱스는 몇 개입니까? 업데이트 성명은 무엇입니까? 또한 직접 DMV (sp_who2)를 확인할 수도 있습니다. 업데이트 쿼리가 차단 되었습니까? 너 뭐 해봤 니? – ljh

답변

0

TransactionOption 어떤 종류의 당신이 아래에 선택 쿼리를 실행하고, 감사? 커밋되지 않은 데이터를 읽을 수 있으면 선택 쿼리에서 NO LOCK을 사용합니다. 이 스레드를 살펴보십시오. Effect of NOLOCK hint in SELECT statements

+0

프로덕션 코드에서 NOLOCK을 사용하지 않아야합니다. 커밋되지 않은 데이터를 얻는 것 외에도 커밋 된 데이터를 가져 오지 않을 위험이 있습니다. http://stackoverflow.com/a/7355121/806549 –

+0

정확히 내가 말한 것입니다. 제 의견을주의 깊게 읽어서 의견을 말하십시오. "커밋되지 않은 데이터를 읽을 수 있으면 괜찮습니다." – amassani

+0

진술 내용이 잘못되었습니다. 올바른 주석은 "커밋되지 않은 데이터를 읽을 수 있으면 커밋 된 데이터를받지 못할 수도 있습니다."여야합니다. –

0

아마도 업데이트에 몇 가지 추가 필드 인덱싱이 필요합니다. 또한 부분적으로 업데이트를 분할하는 것도 고려하십시오.

관련 문제