DB 어플리케이션이라고 하면 DBMS 프로그램과 연계되어 실행되는 프로그램을 말한다.. OODB가 오래전부터 이야기는 많이 되어 왔지만 아직까지도 확산은 더딘 상태다.. 아직까지는 RDBMS가 대세다.. DB 어플리케이션에서 중요한 것은 당연히 DB다.. 기본적인 관리법 및 SQL 이라 불리우는 데이터를 저장, 수정, 삭제, 조회 할 수 있는 방법을 제공하는 방법에 대해서 잘 알아야 한다.. SQL은 표준이 정해져 있지만, RDBMS의 구현사 마다 마음대로 확장한 문법들이 있다.. 개발자들은 이런 부분까지 신경을 써야한다..
요즘의 어플리케이션들은 DB 어플리케이션의 비중이 상당히 높다.. 웬만한 웹 어플리케이션들은 거의 대부분이 DB 어플리케이션이라고 봐도 된다.. 많은 양의 윈도우 데스크탑 어플리케이션들도 DB와 함께 실행된다..
그럼, DB에 관해 어떤 내용들을 알아야 할까? 아는 만큼 보인다고, 많이 알면 많이 알 수록 프로그래밍에 도움이 된다.. 하지만, 대부분의 사람들이 당장 뭘해야 하는데 모르면 안되는 것들을 먼저 학습을 하게 마련이고, 당장 눈앞에 문제를 해결하는데 도움이 안되는 것이라면 그다지 시간을 투자하지 않는 경향이 있다.. 그래서 그런지 DB 모델링, 쿼리문 작성에 대한 학습 및 실습은 꽤 많이 하는 편인데, 인덱스나 튜닝 등 성능에 관한 부분은 관심이 별로 없는 것 같다는 느낌을 많이 받는다..
쿼리문을 작성할때 조금만 더 신경을 쓰면 (사실 이 조금만 더 라는 표현이 상당히 애매하고 이견이 많은 표현이다..) 성능에 상당한 영향을 미치는 부분을 미연에 제거할 수 있다.. 인덱스는 데이터를 조회하고 검색하는데 성능향상을 시키기 위해 미리 정렬된 색인을 만들어 놓도록 지정하는 방법이다.. 따라서 모든 select 문을 작성할때 이 인덱스를 잘 활용하도록 작성을 해야 한다.. 만약 인덱스가 없다면 해당 쿼리의 특징에 맞게 인덱스를 구성할 필요가 있다..
그런데 개발자들 중에는 초기 개발에만 신경을 쓰고, 운영시나 향후 데이터가 많이 쌓이게 되었을때를 전혀 고려하지 않은 개발 당시 동작하는데만 집중해 개발을 진행하는 사람들이 간혹 있다.. 이런 사람들이 작성한 프로그램은 처음에 테스트 할때는 동작에 아무런 문제가 없다.. 하지만, 짧게는 3개월 정도 지나면 데이터들이 쌓이고 나서 서서히 느리게 동작하기 시작한다.. 나중에는 참아주기 힘들 정도로 느려진다..
처음 코드 및 쿼리를 작성할 때 부터 이 테이블에서 가져오는 데이터는 주로 어떤 식으로 조회가 자주 되며, 조회되는 방식이 다르더라도 속도를 위해 미리 정렬해두면 좋을 것 같은 엔티티를 식별해 두고 필요시 DBA에게 인덱스를 걸어달라고 요청을 해야 한다.. 아울러 쿼리문의 where 절에 조건을 걸때도 인덱스의 순서에 맞춰 가장 범위를 좁힐 수 있어 인덱스의 효과가 높게 작성을 해야 한다.. 이런 과정이 사실은 그리 시간을 많이 소요되는 것은 아니다.. 처음에는 고민을 해야할 필요도 있을 것이고, 경우에 따라서는 복잡한 조인 등으로 인해 고민해야 할 시간이 많이 필요하게 되는 경우도 있을 수 있다.. 그렇다고 해도 대부분의 경우는 그리 많은 시간이 필요하지는 않으며, 이는 연습을 통해 짧아질 수 있다.. 하지만, 이런 부분에 대한 중요성을 인식하고, 이런 훈련을 평소에 해두지 않으면 인덱스는 고려치 않는 나쁜 버릇으로 발전하게 된다.. 평소에 귀찮고 힘들더라도 이런 부분은 고려하면서 코드를 작성할 수 있는 훈련을 하자.. 나중에 성능향상을 위해 대충 만들어져 곳곳에 숨어 있는 쿼리문들을 모두 발췌해 내는 작업은 아주 귀찮은 작업이다..
이 글과 관련있는 글을 자동검색한 결과입니다 [?]