db 3

기초적인 DB 인덱스 사용 원리

이 글은 '친절한 SQL 튜닝(저자 조시형, 출판사 (주)DBian)을 읽고 정리한 글입니다. 1.SQL 튜닝 1. SQL이 느린 이유 SQL이 느린 이유는 대부분의 경우 I/O, 특히 디스크 I/O 때문인데 이 I/O는 프로세스의 일시적 중지(sleep)를 일으킵니다. 특히나 디스크 I/O는 메인 메모리 I/O에 비하면 매우 오래 걸립니다. 만약 동시 다발적으로 디스크 I/O 요청이 들어오면 I/O를 수행하는 시간에 대기시간 까지 추가되어 더 오래 걸리게 됩니다. 물론 I/O 요청이 발생하면 DBMS가 우선적으로 메인 메모리에 있는 캐시를 탐색하고 여기서 같은 내용에 대한 I/O를 찾지 못한 경우에만 실제 디스크 I/O 요청을 수행하기 때문에 실제 디스크 I/O로 이어지는 것을 많이 줄일 수 있지만, ..

Database/DB 일반 2022.07.04

2. Connection Pool 과 DataSource 의 이해

private void close(Connection con, Statement stmt, ResultSet rs) { JdbcUtils.closeResultSet(rs); JdbcUtils.closeStatement(stmt); JdbcUtils.closeConnection(con); } 1. DB 커넥션을 얻는 대가 DB 커넥션을 얻는 코드는 짧지만 생각보다 코스트가 비싼 행위이다. 애플리케이션 밑바닥의 TCP/IP 3-way handshake 과정부터 시작해서 ID, PW 를 보내 인증과정까지 거쳐야 비로소 커넥션 객체가 DB 드라이버로 부터 돌아오기 때문에 DB 연결이 필요한 시점 마다 DriverManger를 통해 커넥션 요청부터 시작하면 쿼리 수행 시간에 연결 요청 시간이 추가되기 때문에 성능..

1. JDBC 이해

- 일반적으로 애플리케이션 서버와 DB 서버간의 통신은 1. 커넥션 연결 (애플리케이션 -> DB 서버) 2. SQL 전달 (애플리케이션 -> DB 서버) 3. 처리 결과 응답 (DB 서버 -> 애플리케이션 서버) 의 큰 세 가지 축으로 이루어진다. - 애플리케이션 개발자 입자에서 고역인 것은 이런 애플레케이션 DB 간 통신 방식이 DB 벤더에 따라 모두 다르다는 것이다. 즉 서로 다른 언어, 비유하자면 MySql은 한국어, Oracle은 영어, PostgresSQL은 독일어 등등... 서로 다른 언어로 통신하기 때문에 아~주먼 과거의 개발자들은 DB를 바꾸게 되면 애플리케이션 코드에서도 위 세 가지 통신을 위한 코드들을 모두 새로 배워서 바꿔야했다(한국어 쓰다가 독일어 배워서 쓰고...). - 위와 같..