database
-
JDBC Timout 이해하기database 2021. 5. 31. 12:25
Timeout 이해하기 Timeout 계층 구조 위 그림처럼 timeout은 계층적 구조를 갖고 있다. 상위timeout은 하위timeout에 의존적이다. 즉, 하위 timeout이 제대로 동작해야지 상위 timeout 또한 제대로 동작한다. 예를 들어 TransactionTimeout은 StatementTimeout이 제대로 처리되어야 본인의 처리를 할 수 있다. 좀더 곰곰이 생각해보면 상위 timeout을 하위 timeout보다 적은 시간으로 설정하는 건 무의미하다고 볼 수 있다. 최 하위인 JDBC Driver SocketTimeout은 OS의 SocketTimeout에 의존적이다. 즉, java의 설정이 아닌 OS의 설정에서 소켓 timeout이 발생하면 JDBC Driver SocketTimeo..
-
데이터베이스 기초(쿼리 위주)database 2021. 3. 16. 13:50
SQL - DML : 데이터를 다루는 가장 기본적이고 자주 사용하는 쿼리 - DDL : 데이터를 정의하는 테이블을 관리하는 쿼리 - DCL : 트랜젝션과 같은 데이터를 제어하는 쿼리 주요특징 - 예약어와 데이터베이스 객체명은 대소문자를 구분하지 않는다 DESC 테이블 정보 확인하기 CHAR VS VARCAHR CHAR(NUM)은 고정길이 문자열로 데이터 저장 시 NUM만큼 반드시 메모리가 할당된다. 반면 VARCHAR(NUM)은 가변길이 문자열로 데이터 저장 시 저장한 만큼만 메모리가 할당되어 저장한다. 괄호 안의 NUM은 최대 길이다. 조건 검색(WHERE) - 열 조건 : SELECT CNAME1, CNAME2 ... - 행 조건 : WHRER ID = ... - 문자열 리터럴은 ''으로 감싸서 표기..
-
트랜잭션과 트랜잭션 격리수준database 2021. 2. 23. 00:54
트랜잭션 DBMS를 이용하는 WAS 환경에서 트랜잭션 설정은 보통 DAO에서 직접 정하지 않고, 비지니스로직이 들어간 서비스 계층에서 정하기 마련이다. 이 부분을 곱씹어보면 트랜잭션을 좀 더 가슴으로 느낄 수 있다. 트랜잭션은 한 비지니스로직과 DBMS가 소통하는 논리적 단위이다. 같은 트랜잭션 내에서 모든 변경사항은 그 생명주기를 같이 하게 된다. 트랜잭션 격리수준 트랜잭션 격리수준은 여러 트랜잭션의 동시성과 관련된 개념이다. 이를테면 A 트랜잭션에서 변경하고 있는 레코드를 B트랜잭션이 읽어올 수 있을지에 대한 내용이다. READ_UNCOMMITTED READ_UNCOMMITTED 격리수준에서는 아무런 RACE CONDITION을 고려하지 않는다. 즉, 한 트랜잭션이 특정 레코드에서 어떤 작업을 하든 ..
-
RDBMS 아키텍처(MySQL)database 2021. 2. 19. 23:50
DB와 연결한 서버에서(spring) DB api를 이용해 쿼리를 보낸 경우를 생각해보자. 객체 간 역할 분담이 잘 되어 있다면 프로그래머는 DBMS에서 어떤 일이 벌어지는지 신경 쓸 필요가 없다. 그래도 가끔은 상상해본다. 내가 요청한 쿼리가 어떻게 처리될까? 또, 내가 요청한 쿼리가 DBMS와 협업하기에 최적의 쿼리일지 의심이 될 때도 있다. 아키텍처 큰 그림은 항상 머릿속에 담자두자. - 파서 : 요청받은 쿼리를 토큰 단위로 잘라 문법 체크를 해준다. - 전처리기 : 토큰 단위로 객체를 테이블 또는 내장 메서드로 매핑한다. - 옵티마이저 : 요청받은 쿼리의 최적화를 담당 - 쿼리 실행기 : 핸들러를 이용해 스토리지 엔진에게 결과 요청 및 결과 사용자에게 반환 - 스토리지 엔진 : 쿼리 실행기에게 전..