일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- MYSQL
- mybatis
- exception
- Redis
- 스프링부트
- OOP
- spring boot
- proxy pattern
- git
- http
- 자바
- 디자인패턴
- 스프링 시큐리티
- 스프링
- RestControllerAdvice
- 인터셉터
- network
- SQL
- 객체지향프로그래밍
- aspect
- Spring Security
- Interceptor
- 트랜잭션
- request
- java
- response
- Filter
- aop
- 관점지향프로그래밍
- Spring
- Today
- Total
목록DataBase (5)
장쫄깃 기술블로그
데이터베이스 인덱스 데이터베이스의 인덱스란 추가적인 저장 공간을 사용해서 테이블 검색 속도를 향상시키는 자료구조이다. 데이터베이스 인덱스에는 데이터의 키와 해당 데이터의 물리적 위치가 저장되어 있다. 일반적으로 select 쿼리의 where 구문에 사용될 컬럼에 대한 조회 성능을 개선할 때 사용한다. 인덱스를 사용하는 이유 인덱스는 실제 크기에 비해 크기가 작다. 따라서 메모리에 적재하기가 쉽다. 실제로 주 기억장치 대비 보조 기억장치의 I/O 성능은 많이 떨어진다. 때문에 인덱스를 주 기억장치인 메모리에 적재하고, 원하는 데이터의 물리적 주소를 찾아 접근하는 방법으로 조회 성능을 개선할 수 있다. 만약에 인덱스를 사용하지 않으면 데이터를 탐색할 때 풀 테이블 스캔(Full Table Scan) 이 발생..
STRAIGHT_JOIN MySQL에는 STRAIGHT_JOIN 이라고 하는 JOIN이 있다. STRAIGHT_JOIN is similar to JOIN, except that the left table is always read before the right table. This can be used for those (few) cases for which the join optimizer processes the tables in a suboptimal order. 왼쪽 테이블을 강제로 먼저 읽는 JOIN이라고 보면 될 것 같다. 간혹 explain을 이용하여 쿼리 실행계획을 보면 index가 적용되지 않고 쿼리 타입이 ALL로 실행되는 경우가 있다. 이는 MySQL의 옵티마이저(optimizer)가..
INSERT IGNORE 중복키 제약조건에 위배되면 INSERT를 무시한다. 기본적으로 PRIMARY KEY를 기준으로 한다. INSERT IGNORE INTO USER (id, name, salary) VALUES ("user", "장쫄깃", 20000) REPLACE INTO 중복키 제약조건에 위배되면 해당 레코드를 삭제하고 다시 삽입한다. 기본적으로 PRIMARY KEY를 기준으로 한다. REPLACE INTO USER (id, name, salary) VALUES ("user", "장쫄깃", 20000)
DUPLICATE ON KEY UPDATE 데이터 삽입 시, PRIMARY KEY나 UNIQUE KEY가 중복되었을 경우 UPDATE, 중복이 아닌 경우 INSERT를 수행하는 구문이다. INSERT INTO [TABLE] (COLUMN1, COLUMN2, ...) VALUES (VALUE1, VALUE2, ...) ON DUPLICATE KEY UPDATE (COLUMN1 = VALUE1, COLUMN2 = VALUE2, ...) 기존 INSERT INTO 구문 뒤에 추가해서 사용하면 된다. 성능면에서도 괜찮은 구문이라는 말이 많다. 예) PK = id INSERT INTO USER (id, name, salary) VALUES("user", "장쫄깃", 20000) ON DUPLICATE KEY UP..
Transaction, 트랜잭션 트랜잭션(Transaction) 이란, 데이터베이스의 상태를 변경시키기 위해 수행하는 작업 단위이다. 하나의 작업을 수행하기 위해 필요한 데이터베이스 연산 기능들을 모아놓은 것이며 분리되지 않도록 하여 작업의 완전성을 보장한다. 트랜잭션을 통해서 데이터베이스의 회복과 병행 제어가 가능하다. 즉, 데이터베이스에서 오류가 발생하는 경우의 빠른 회복이나, 여러 사용자가 동시에 데이터베이스를 사용할 수 있도록 제어해주는 중요한 역할을 한다. 데이터베이스의 연산을 SQL문으로 표현한다면, 하나의 작업을 수행하는 SQL문의 집합으로 생각할 수도 있다. 트랜잭션의 특징 트랜잭션이 성공적으로 처리되기 위해서는 ACID라는 네 가지 성질을 만족해야 한다. 1. 원자성 (Automicity..