database
-
쿼리 튜닝하기database 2022. 4. 18. 00:00
요즘 일하면서 SQL을 작성할 일이 많았다. 덕분에 쿼리를 작성하는 것이 좀 더 능숙해졌고, 내가 작성한 쿼리가 실행될 때 테이블에 어떻게 접근하게 될지 등 성능에 대한 고민을 많이 해보게 되었다. 실제로 성능이 걱정되어서 조언을 받아서 튜닝을 진행한 건이 몇 개 있어서, 그 내용을 간략하게 정리해보고자 한다. 인덱스 타게 하기 사실 쿼리 튜닝의 대부분은 인덱스를 활용하도록 쿼리를 수정하거나, 필요한 인덱스를 추가하는 것이 아닐까 한다. 내가 원래 작성했던 쿼리는 다음과 같다. SELECT * FROM ( SELECT tmp.*, ROWNUM R_NUM FROM ( SELECT * FROM A a WHERE a.number = ? ORDER BY a.name, a.age, a.height ) tmp WH..
-
MyBatis 관련 삽질 모음database 2022. 2. 28. 06:47
mybatis을 사용하면서 겪은 에러나 알게 된 내용들을 여기에 정리해두고자 한다. 앞으로 새로운 내용이 생길 때마다 여기에 업데이트하게 될 것 같다. ORA-00928: 누락된 SELECT 키워드 이 에러는 정말 다양한 상황에서 발생할 수 있는 것 같다. 이 에러로 검색해보면 원인이 참 다양하다. 다양한 상황에서 발생할 수 있는만큼, 살짝은 불친절한 메시지가 아닌가 한다. 이 에러가 떴다면 실제로 실행된 쿼리에서 실수를 샅샅이 찾아야 한다. 사실 간단한 SQL을 작성해서 바로 실행해본다면 실수를 금방 깨달을 수 있지만, 길고 복잡한 SQL 구문이나 mybatis mapper에 작성한 코드라면 에러를 바로 눈치채기 쉽지 않다. SQL 문법 실수를 한 것이 아닌지 가장 먼저 의심해보고, 동적 쿼리인 경우 ..
-
많이 들어본 DB 기술 정리database 2022. 1. 16. 14:25
내가 속한 조직은 Spring을 사용하고 있고, DB 기술로는 mybatis와 JPA를 사용하고 있다. 아직까지는 내가 맡은 일에서 mybatis를 더 많이 사용하고 있고, JPA는 간단한 업무나 해봐서 기초적인 코드만 이해하는 수준이다. 어찌저찌 일은 해나가고 있지만, DB 기술에 대한 이해가 너무 얕아서 늘 약간의 불안함을 가지고 있었다. 이 글로써 앞으로 DB 기술을 공부하겠다는 계획에 운을 띄워보려고 한다. 그동안 많이 들어봤던 용어들의 의미를 간단하게 정리하는 것이 목적이다. (얕게나마 개념을 정리하다 보니 머릿속에 떠오르는 키워드는 추상화였다. 컴퓨터과학/공학에서 기술이 발전해가는 과정을 보다보면 추상화의 아름다움을 느낄 수 있다.) JDBC JDBC는 Java Database Connecti..