데이터베이스 개발자 질문과 답변 게시판

데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.

전임자가 없는상태에서 유지보수를 하고 있어서

운용되고 있는사이트에 문제가 발생했을때 하나식 손보는 중인데요


아직 DB쪽에 취약점이 있어 선배님들께 질문좀 드리겠습니다


현재 로그로 사용되는 중요테이블 ( 사이트 전체 비용의 2~3번째로 많이 사용됨, 계속insert,update발생 )

에서 교착상태가 계속 발생하여 질문 드립니다.



현재 이 LOG테이블에서


SELECT (SELECT MAX(l_no) FROM [log_table] WHERE log_id ='XXXX') as 'max_no'

           , l_no

           , DATEDIFF(SECOND, log_edate, GETDATE()) AS 'INTERVAL_TIME'

FROM [log_table] 

WHERE log_id ='XXXXX' AND log_category = 'VC12345' AND log_key = 'ABCDEABCDE'


이런식으로 조회를 해서 없으면 

INSERT 하고 조건에 충족하면 UPDATE 하는 구문으로 짜여져 있는데

이 페이지는 여러사용자가 동시다발적으로 실행됩니다.


위 SELECT 문 뒤 UPDATE 구문에서

UPDATE [log_table] SET XXX=XXX WHERE log_id ='XXXXX' AND log_category = 'VC12345' AND log_key = 'ABCDEABCDE'

따로 트랜잭션을 사용하진 않고 db.execute 구문으로 사용하고 있는데 아래의 오류가 발생해서


트랜잭션(프로세스 ID 55)이 잠금 | 통신 버퍼 리소스에서 다른 프로세스와의 교착 상태가 발생하여 실행이 중지되었습니다. 트랜잭션을 다시 실행하십시오


트랜잭션구문이 없는데 이런 에러가 떠서 문제점이 파악이 안됩니다 ㅠ

혹시 SELECT시에도 테이블 전체에 LOCK이 걸리는건가요?



Q1-1. 위 UPDATE문 이전에 실행되는 SELECT 구문의 FROM 절 뒤에 WITH(NOLOCK) 에 넣으면 괜찮을까요 ?

Q1-2. MAX값 뽑기위해 서브쿼리를 사용했는데 2번의 쿼리로 실행하는게 나을까요


Q2. 


위테이블에 identity 필드에만 PK가 잡혀있는데 테이블이 100만건이 넘어가 좀더 사용비용을 줄이고 싶은데 


사용자가 SELECT/INSERT/UPDATE 시에는 

WHERE 절에 log_id [varchar(25)], log_category [varchar(20)], log_key [varchar(10)] 3개 필드를 항상 사용하고

정렬은 사용하지 않고


관리자는 SELECT조회시 log_sdate [datetime] 으로만 정렬해서 사용을 하는데 


이런경우에는 INDEX를 어떤식으로 잡아야 하나요. 

제가 공부하면서 선배님들 자료 검색해서는  

log_id log_category  log_key 3개 필드를 복합인덱스 하는게 나은가 라고 생각하고 있습니다. 


근데 이렇게 INDEX를 잡아버리면 log_sdate DESC 로 정렬했을때 속도 문제가 발생할꺼같아서

관리자쪽에서 조회시 속도가 너무 느려지지 않을까 염려됩니다


미리 답변 정말 감사드립니다!!!!!!!!!!!!!!!



DB는 정말 공부하면 할수록 더 어려운거같습니다!



No. Subject Author Date Views
9392 MS-SQL 관련 문의 [1] 좋은친구 2016.06.16 3467
9391 초년생에 갑자기 팀장님으로 부터 sql 질문을 받아 올립니다; [1] 아마 2016.06.16 2919
9390 유일한 sysadmin 계정 로그인 거부 [3] 베이시안 2016.06.16 3946
9389 ms-sql 디비 스크립트 떠서 다른 디비에 옴기고 싶습니다. [5] 아싸라비아콜롬비아 2016.06.15 2867
9388 쿼리질문드립니다.. [1] 후알유? 2016.06.15 3838
9387 저장프로시저 문법좀 부탁드립니다. [1] ray1231 2016.06.15 2944
9386 2005->2014 서버변경에 따른 프로시저.. (compute by) 양천재 2016.06.14 2535
9385 SQL2014 인스턴스 삭제 rollback 2016.06.14 4417
9384 2012 R2로 2005 버전으로 업그레이드 시 질문있습니다!.. [3] nowaday_ 2016.06.14 2416
9383 윈도우10 SQL2000 설치 안되나요? [2] 뉴곰이 2016.06.13 6813
9382 MS-SQL 복제와 미러링에대해 조언 부탁드립니다. [1] 짭거북 2016.06.13 3437
9381 안녕하세요.. 제발 도와주세요 ㅜㅜ (sql connectino 에러) [1] mj124356 2016.06.13 4994
» 안녕하십니까 선배님들 질문하나 드립니다 (트랜잭션잠금에러) [2] 플러미 2016.06.13 3146
9379 중복 데이터 표시 문의 [2] 다은빈아빠 2016.06.09 4035
9378 합계(SUM) 질문 입니다 ㅠㅠ [1] 떠벙이 2016.06.09 2990
9377 SQL 프로시저 수정요청드립니다 [11] 미련곰퉁아 2016.06.09 3324
9376 재귀 쿼리 질문입니다. 유리의성 2016.06.08 2714
9375 master, tempdb 접근제한 진실세상 2016.06.08 2218
9374 설치 문의 ㅜㅜmanagement 가설치가 안되요 . [2] 초보sql하 2016.06.08 2346
9373 쿼리 로그 질문입니다. 유리의성 2016.06.08 2647





XE Login