안녕하세요, mysql로 웹서비스 배포했는데, DB 관리를 웹 내에 관리자 페이지에서 할 수 있도록 열어주려고 합니다. 궁금한 점은, 만약 고객이 DB에서 데이터를 요청하는 동안 제가 그 데이터를 직접 수정하려고 하면 락이 걸릴까요? 전 고객이 관리자 페이지에서 요청하면 그 때만 커넥하고 바로 끊고 해버리려고 하는데 이게 좋은 방법일까요?
답변 3
공부한지가 너무 오래되어서 틀릴수도 있지만 도움이 되었으면 해서 코멘트 남깁니다. 고객이 DB에서 데이터을 요청하는 동안 제가 그 데이터를 직접 수정하려고 하면 락이 걸릴까요? -> 고객이 데이터를 요청하는 순간 READ 락이 걸릴거고, READ 락이 걸려있으면 수정은 하지 못할 것으로 생각됩니다. 데이터 요청이 끝나고 나서 수정이 반영될 것 같네요. 전 고객이 관리자 페이지에서 요청하면 그 때만 커넥하고 바로 끊고 해버리려고 하는데 이게 좋은 방법일까요? -> 고객이 관리자 페이지에서 무슨 요청을 하는 것인지, 커넥을 하는 주체가 누구인지 모호하네요. "DB 관리를 웹 내에 관리자 페이지에서 할 수 있게 열어주려고 합니다." 라고 하셔서 더 헷갈리네요🙃 느낌상 고객이 관리자 페이지를 통해 수정 요청을 하면 관리자 역할을 하는 질문자님께서 직접 수정해주신다는 의미 같기는 한데 그렇다면 말씀하신 방법대로 해도 큰 문제는 없을 것 같습니다.
안녕하세요! 질문주신 내용에 대해 제가 아는 선에서 답변 드려보겠습니다. ❓️만약 고객이 DB에서 데이터를 요청하는 동안 제가 그 데이터를 직접 수정하려고 하면 락이 걸릴까요? ➡️ Transaction Isolation Level 을 어떻게 설정하셨냐에 따라 lock 이 걸릴수도 걸리지 않을수도 있습니다. 이와 관련되서 잘 설명된 아티클이 있어 공유 드립니다. - https://labs.brandi.co.kr/2019/06/19/hansj.html ❓️ 고객이 관리자 페이지에서 요청하면 그때만 커넥하고 바로 끊고 해버리려고 하는데 이게 좋은 방법일까요? ➡️ 관리자 페이지 기능을 사용할경우 별도의 커넥션풀을 사용하지 않고 기능을 수행할때마다 DB 커넥션을 맺고 푼다라는 의미로 이해했습니다. 기능 동작이 단순하고 관리자 페이지를 사용하는 유저가 제한되어 있다면 모르겠지만 만약 관리자 페이지를 사용할 수 있는 유저가 여러명이고 동시 다발적으로 다양한 쿼리 요청을 할 수 있다면 자칫 연결된 DB 커넥션이 많아져 DB 에 부담을 줄 수 있고 이로 인해 장애가 발생할 수 있습니다. 크게 이슈가 없으시다면 커넥션 풀을 사용해서 제한된 갯수의 커넥션을 활용하는 방향으로 하시는게 좋지 않을까 싶습니다. 저의 짧은 지식이 부디 도움이 되시길 바라겠습니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직 개발자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!