본문 바로가기

DBMS2

ANSI SQL-92에 대한 비평 (원문 : A Critique of ANSI SQL Isolation Levels) - 용어, 배경 설명 위키피디아에서 Snapshot isolation에 대한 글을 읽던 중에 흥미로운 문장을 보았다. '스냅숏 격리는 ANSI SQL-92 표준의 격리 수준 정의를 비판하는 데 사용되었는데, 이는 SQL 표준이 금지한 "이상"을 나타내지 않으면서 직렬화할 수 없기 때문이다' 대부분 DBMS 공식 매뉴얼에는 SQL-92 고립 수준에 대한 설명이 있다. 그리고 자바 SQL에도 이 고립 수준을 인터페이스에 명시했다. 근데 '표준이 잘못되었다.'라는 내용이 너무나도 이상했다. 그리고 여러 자료를 찾던 중에 매우 흥미로운 사실을 알게 되었다. 결론부터 말하면 '표준이 채택한 구현 방식'에서는 ANSI 이상현상이 맞다. 하지만 현대 DBMS의 대세는 '표준이 채택한 방식을 완벽히 구현하지 않고 Snapshot isola.. 2022. 9. 17.
Thread Pool과 Connection Pool은 어떤 관계가 있고 적당한 크기는 얼마일까? 대부분 DBMS는 TCP/IP로 통신한다. WAS가 I/O 요청을 할 때마다 새로운 커넥션을 연다면 오버헤드가 발생하게 될 것이다. 이러한 오버헤드를 방지하기 위해서 DBMS는 미리 커넥션을 생성하는데 이것을 커넥션 풀이라고 한다. 풀 사이즈가 작다면 요청이 들어와도 대기하는 시간이 발생할 것이고 너무 많으면 한정된 컴퓨팅 자원을 낭비하게 될 것이다. 그렇다면 적절한 커넥션 수는 얼마일까? 더보기 상용 DBMS는 커넥션 풀 기능을 내장있다. 오픈 소스로는 Apache dbcp, HikariCP 등이 있다. PostgreSQL에서는 DBMS에서 커넥션 풀을 관리하는 것보다 외부 머신에서 관리하는 것을 권장한다. 1. 스레드 풀과 커넥션 풀 TCP는 연결을 생성할 때 3-way handshake를 시도한다... 2022. 9. 15.