본문 바로가기

Database14

Redis란? 목차Redis란?Redis의 특징동시성 Race Condition 해결결론1. Redis란?REDIS는 REmote DIctionary Server의 약자로 외부에서 사용 가능한 Key-Value 쌍의 해시 맵 형태의 서버라고 생각할 수 있다.In-Memory 데이터베이스이며 다양한 데이터 구조체를 지원한다.디스크에 데이터를 쓰는 구조가 아니라 메모리에서 데이터를 처리하기 때문에 작업 속도가 상당히 빠르다.즉, Redis는 고성능 키-값 저장소로서 String, list, hash, set, sorted set 등의 자료 구조를 지원하는 NoSQL이다.2. Redis의 특징영속성을 지원하는 인 메모리 데이터 저장소다양한 자료 구조를 지원함.싱글 스레드 방식으로 인해 연산을 원자적으로 수행이 가능함.읽기 .. 2023. 11. 14.
MySQL Index에 대해 알아보자 개요Index란?Index 선정 기준Index 동작 방식결론1. 개요MySQL은 데이터를 검색할 때 첫 번째 필드부터 차례대로 테이블 전체를 검색하는데 테이블이 크면 클수록 데이터를 탐색하는 시간도 많이 늘어나게 된다.하지만, 인덱스를 사용하면 테이블 전체를 읽지 않아도 검색과 질의에 대한 처리가 빠르게 이루어진다.2. Index란?DB 테이블에서 원하는 데이터를 빠르게 검색하고 조회하기 위해 사용되는 데이터 구조이다.인덱스가 없더라도 데이터베이스를 '작동' 하는데 있어서는 문제는 없다.하지만 데이터베이스의 크기가 억대 단위로 크면 클 수록, 인덱스가 반드시 필요해진다. 인덱스는 데이터베이스의 성능(속도)를 크게 좌우하는 요소이기 때문이다.따라서, 인덱스를 사용하는 SQL을 만들어 효율적으로 사용한다면 .. 2023. 11. 7.
MYSQL __SELECT FOR UPDATE__ 목차SELECT FOR UPDATESELECT FOR UPDATE 의 옵션1. SELECT FOR UPDATEselect for update는 MySQL에서 사용되는 특별한 select 문의 한 종류이다.특정 레코드 또는 행을 select하면서 해당 레코드를 다른 트랜잭션에서 변경하지 못하도록 락을 거는 것이다.즉 "데이터 수정하려고 SELECT 했어. 건드리지마 !" 와 같은 뜻이다.사용예시SELECT column1, column2, ... FROM table_name WHERE conditions ORDER BY column_name LIMIT row_count FOR UPDATE;마지막 절에 FOR UPDATE를 추가하면서 SELECT된 레코드들은 다른 트랜잭션에서 변경되지 않도록 락이 걸리게 된다.. 2023. 8. 4.
낙관적인 락 vs 비관적인 락 목차락이란?낙관적 락(Optimistic Lock)비관적 락(Pessimistic Lock)낙관적 락 vs 비관적 락결론1. 락이란?여러 개의 트랜잭션이 동시에 접근했을 때, 데이터의 일관성이 깨질 수 있기 때문에 락(잠금)을 걸고 이를 관리하는 것을 Locking이라고 한다.예를 들어, 3000원이 있는 계좌에 A와 B가 3000원을 입금했는데 이 과정이 동시에 이루어져서 A와 B가 동시에 3000원을 읽어서 3000원을 더해버리는 바람에 최종 금액이 9000원이 아니라 6000원이 되버리는 현상을 막기 위해 필요하다.2. 낙관적 락(Optimistic Lock)낙관적인 락은 데이터를 읽을 때는 락을 걸지 않고, 데이터를 업데이트할 때 충돌이 발생하지 않았는지 확인하는 방식이다.데이터를 읽을 때는 다른.. 2023. 7. 7.
Mybatis #과 $차이 목차개요#{} 실행방식${} 실행방식결론1. 개요MyBatis는 데이터베이스 접근 라이브러리이고 데이터베이스와 상호 작용할 때, SQL쿼리를 작성하고 실행하는 방법에 대한 기능을 제공한다.주로 SQL 쿼리 내에서 2가지 기호로 ‘#’, ‘$’을 사용하는데, 각각 다른 목적과 동작 방식을 가지고 있으며 살펴보도록 하자.2. #{} 실행방식SQL 쿼리의 매개 변수(parameter)를 나타내는 데 사용된다.SQL 쿼리에 대한 자동화된 바인딩을 제공하며, 입력 매개 변수를 자동으로 이스케이프(escape)하여 SQL 쿼리에 삽입한다.Prepared Statement를 사용하여 SQL을 실행한다.SQL구문을 미리 컴파일 하여 성능을 최적화하는 기능을 제공한다.3. ${} 실행방식SQL 쿼리의 리터럴(litera.. 2023. 6. 30.
JOIN의 종류(INNER, OUTER, CROSS, SELF JOIN) 목차JOIN 이란?INNER JOIN(내부 조인)OUTER JOIN(외부 조인)3-1. LEFT OUTER JOIN3-2. RIGHT OUTER JOIN3-3. FULL OUTER JOINCROSS JOIN(상호 조인)SELF JOIN(자체 조인)결론1. JOIN 이란?조인은 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것을 말한다.두 테이블의 조인을 위해서는 기본키(PRIMARY KEY, PK)와 외래키(FOREIGN KEY, FK) 관계로 맺어져야 하고, 이를 일대다 관계라고 한다.2. INNER JOIN(내부 조인)두 테이블의 컬럼 값을 비교 후 서로 연관된 내용만 검색하는 조인이다.3. OUTER JOIN(외부 조인)두 테이블 사이에 일치 하지 않는 행도 포함하여 기준이 되는 테이블을.. 2023. 6. 23.