본문 바로가기

데이터베이스34

jdbc 탐구하기 [ 목적 ] JDBC 프로그래밍을 해보았지만, 내 블로그에 정리된 자료가 없어서 정리하고자 이 글을 작성한다. [ JAVA DATABASE CONNECTIVITY DRIVER] 우리가 자바로 프로그래밍하면서 데이터베이스를 사용할 경우 JPA나 마이바티스를 많이 활용해서 데이터베이스에 CRUD연산을 수행하게 된다. 이때 활용되는 것이 JDBC 드라이버이다. 먼저, JDBC를 사용하는 과정이다. 1. DriverManager( JDBC DRIVER MANAGER)의 getConnection을 통해 커넥션을 만든다. 2. connection을 통해 statement를 얻는다. 3. statement를 통해 쿼리를 실행하여 resultSet을 얻는다. 4. ResultSet의 cursor을 통해 데이터를 가져온.. 2023. 6. 18.
postgresql의 운영에 필요한 테이블과 wait event wait event는 성능 및 운영 관리를 위해 반드시 알아야할 중요한 요소이다. 메모리/디스크/트랜잭션 수 등 정보와 결합되어 더욱 세밀한 데이터베이스 상태 분석이 가능하다. postgresql은 시스템 카탈로그 뷰 테이블에 프로세스 id와 데이터베이스, 접속 ip, 쿼리 등 DBMS에서 메타데이터를 제공하는 뷰이다. postgresql에서는 pg_stat_activaity 테이블에 다음과 같은 정보를 기록해둔다. 다양한 클라이언트에 SELECT * FROM pg_stat_activity; 쿼리를 실행하여 위와 같은 정보를 확인할 수 있다. wait event의 종류는 너무 많아서 모두 외우기는 힘들다. 중요한 wait event만 파악하고, 나머지는 운영하면서 알아가는 것이 바람직하다고 생각한다. 1.. 2023. 6. 11.
데이터베이스 sequential, scattered [ 목적 ] 오라클 공부하다가 데이터를 읽는 과정을 몰랐는데, 여러 방법이 있다는 것을 알게 되어서 기록하고자 정리한다. [ db file sequential read ] 단일 블록 스토리지 i/o를 수행할 때 발생. 주로 인덱스를 거쳐 테이블에 랜덤 엑세스 할 경우 발생하고 많은 Wait time을 소모함. 대량 발생 시 주로 oltp 시스템에서 성능 저하를 일으킴. 랜덤 i/o 엑세스 된 블록이 버퍼 캐시에는 Sequential하게 저장됨. -- 최적화 방안. 버퍼 캐시 늘리기. 왜냐면 MRU 부분에 페이지가 들어가므로 오래 남길 수 있음. 인덱스를 다시 빌딩하는건 도움이 되지 않는 부분이 대부분, OLTP에서는 자연스러운 Wait event임. 성능이 뛰어난 ssd를 고려해야함. 랜덤 i/o를 많이.. 2023. 6. 8.
postgresql mvcc [ 목적 ] Postgresql의 MVCC를 이해하고 설명할 수 있다. [ MVCC 란? ] Multi Version Concurrency Control, 서로 다른 트랜잭션 간 동시에 쓰기, 읽기를 가능케하는 동시성 제어 기법. 각 트랜잭션이 데이터를 읽을 때 해당 트랜잭션이 볼 수 있는 버전의 데이터만을 제공하기 위해 데이터베이스 시스템은 데이터의 변경을 추적하고 각 변경에 대한 버전을 생성한다. 트랜잭션이 데이터를 수정할 때는 새로운 버전을 생성하고 이전 버전과의 일관성을 유지할 수 있다. [ MVCC 2가지 기법 ] 1. 데이터베이스 테이블에 업데이트 전/후 모든 버전의 레코드를 저장하여 관리 / PostgreSQL 2. 최신 버전읟 ㅔ이터만 데이터베이스 테이블 내에 저장하고 언두 데이터 영역을 .. 2023. 5. 20.