이제 Mo...Yada...

면접 보러 다니면서 기억에 남는 질문과 그 답변 바리에이션을 정리해보고자 하였음.
보통 기억에 남는다 -> 당시에 답변을 실수 하였다.




  • 트러블슈팅 경험
    • 사용하는 엔진이 MYISAM이라서 없다 라고 대답했는데 생각해보니까 있었음. 예전에 특정 지사에서 세션이 200개 이상 열리는 일이 있었는데 이런거 확인하면서 해결했던 거가 면접에서 그나마 말할 만한 트러블 슈팅 경험이 아닐까 싶음.

      라이브 중 Mall DB의 세션이 200개 이상 열려, Too many connections 오류가 생긴 적이 있었습니다.
      열려있는 세션을 확인해본 결과, 특정 장비에서 60개 이상의 세션을 물고 있었으며 해당 장비는 Web 장비였습니다.
      현지 Web 팀에 관련하여 확인 요청을 넣은 뒤, 해당 세션 내의 쿼리 내용을 확인해본 결과, 특정 테이블을 Select 해올 때, Sleep을 걸어서 가져오게 되어있었습니다. 해당 테이블은 MYISAM 테이블이라 해당 쿼리를 받으면 해당 Table의 모든 데이터에 Lock이 걸립니다. 이미 Lock이 걸린 상태에서 해당 쿼리가 또 들어오고, 그걸 기다리는 도중에 또 들어오면서 최종적으로 한 장비에서 60개 이상의 세션이 발생한 것으로 추정되었습니다. 이를 확인하자마자, 현지 Web팀에 해당 쿼리에 대해 문의 드렸으며 해당 테이블이 MYISAM임을 공유했습니다. 이후, 해당 세션을 강제로 종료해도 되는지 현지 Web팀에 문의드린 후, 문제 없다는 답변을 받아, 모든 세션을 종료하여 서비스를 정상화 시켰습니다.

좀더 다른 사례가 떠오르면 더 적어보도록 하자.

  • MySQL에서 주로 모니터링하는 항목들 참고한 게시글: Monitoring MySQL performance metrics
    • 정확하게 이런 질문을 받은 건 아니지만 필요한 내용이라 생각하여 정리하고자 함.


  • DBA 란 무엇이라고 생각하시나요?
    • 당시에 답변으로 DBA는 데이터로 뭐든지 해주는 잡일꾼 이라고 답변했는데. 지금 생각해보면 최악의 답변. 준비하지 못한 질문이라서 속마음이 튀어나와버렸음.. 잡일꾼 이라는 표현보다는 만능 해결사 라는 표현이 좀더 좋은 거 같음.
      뭐든지 데이터가 제일 중요한 요즘 세상에서는 데이터를 관리하고 필요한 데이터를 추출해주는 DBA는 만능 해결사가 아닐까?
      이렇게 대답할 수 있는 사람이 되자!!!


  • 왜 구형 시스템을 변경할 수 없었는가?
    • 사실 이건… 하기 힘든 환경인 걸 면접관에게 설명해야 하는 거 같기도 하고… 아닌거 같기도 하고…
      잘 모르겠음. 워낙 구형 시스템이기에 변경하는데에 서비스를 다시 개발하는 것이 나은 상황이었으나, 현실적으로 그것이 어려웠다. 로 답변하는 게 좋을 거 같음.


  • 파티션의 종류와 각각 어떤 타입일 때 사용해야하는가?
    • Range 파티션: 연속된 범위로 파티션 정의.
      가장 일반적으로 사용되는 파티션.
      범위 기반으로 데이터를 여러 파티션에 나누고자 할 때 사용. 파티션 키 위주 검색이 자주 일어날 때 사용하면 좋음.
      주로 날짜, 시간 기반 컬럼에서 사용.
    • List 파티션: 파티션 키 값이 코드 값이거나 카테고리와 같이 고정적인 경우 사용
      키 값이 연속 되지 않고 정렬 순서와 관계 없이 파티션이 필요한 경우 사용
      키 값이 코드 값이거나 카테고리 값처럼 고정적인 경우 사용
    • Hash 파티션: Range, List 파티션으로 데이터를 고르게 분배하기 어려울 경우 사용.
      테이블의 모든 레코드가 비슷한 사용 패턴 또는 빈도로 사용되지만 테이블 사이즈가 클 경우 사용.
    • Key 파티션: Hash 파티션과 비슷.
      파티션의 키 값을 MD5 함수를 사용해 해시 값을 계산하고 그 값을 MOD 연산해서 데이터를 각 파티션에 분배.
Written on May 5, 2022