데이터베이스
-
[DB] 트랜잭션 격리수준 (Isolation Level)database/DB Concept 2022. 1. 31. 19:00
트랜잭션 격리수준 (Isolation Level) 동시성(Concurrency) 문제 실제 서비스에서는 많은 사용자가 동시 다발적으로 서버에 요청을 하게 되고 서버는 데이터베이스에 다시 트랜잭션을 요청하게 됩니다. 모든 요청을 순서대로 처리하게 된다면 동시성(Concurrency) 문제가 생길 것입니다. 반대로 동시성을 보장하기 위해 모든 요청을 동시에 처리하려고 한다면 데이터의 값이 맞지 않는 일관성(Consistency) 문제가 생기게 됩니다. Isolation 이 낮다면 발생하는 문제들 아래와 같은 회원 테이블이 있습니다. 이 테이블에 대한 트랜잭션이 동시에 일어나면 어떤 문제가 있을까 회원 테이블 이름 VARCHAR 장장스 잔액 BIGINT 10000 등급 VARCHAR BRONZE 지역 VARC..
-
[DB] 트랜잭션의 장애와 복구database/DB Concept 2021. 11. 25. 12:36
트랜잭션의 장애와 복구 트랜잭션 장애와 복구 트랜잭션 동작 시 장애가 발생하면 어떻게 해야 할까. 보통 로그를 통한 복구를 진행하게 된다. 복구 방법으로 REDO 복구와 UNDO 복구가 있다. DBMS는 어떻게 복구를 해야할지 판단한 후 REDO와 UNDO를 통해 복구를 진행하게 된다. DBMS의 페이지 버퍼 데이터베이스 시스템은 보통 비휘발성 저장 장치인 디스크에 데이터를 저장하며 전체 데이터베이스의 일부분을 메인 메모리에 유지한다. DBMS는 데이터를 고정 길이의 페이지(page)로 저장하며, 디스크에서 읽거나 쓸 때에 페이지 단위로 입출력이 이루어진다. 메인 메모리에 유지하는 페이지들을 관리하는 모듈을 보통 페이지 버퍼(page buffer) 관리자 또는 버퍼 관리자라고 부르는데, DBMS의 많은 ..
-
[DB] 트랜잭션database/DB Concept 2021. 11. 23. 19:25
# A친구의 통장 잔액은 300,000원 일때, UPDATE account SET balance = balance - 500000 WHERE name = 'A'; [DB]트랜잭션 트랜잭션이란 데이터베이스 트랜잭션은 일반적으로 데이터베이스의 모든 변경 사항을 나타냅니다. 트랜잭션은 논리 또는 작업의 단일 단위이며 때로는 여러 작업으로 구성됩니다. 데이터베이스의 일관된 모드에서 수행되는 모든 논리적 계산을 트랜잭션이라고 합니다. 트랜잭션은 왜 필요할까? 친구에게 빌린 돈 10,000원을 이체했습니다. 그런데 예기치 못한 오류가 발생해 버렸습니다. 제 계좌에서는 10,000원이 출금되어 나갔는데 친구 계좌에는 입금이 되지 않았습니다. 이러한 상황이 발생하지 않도록 중간에 거래가 실패하면 처음의 상태로 되돌려야..
-
[데이터베이스]옵티마이저 (Optimizer)database/DB Concept 2021. 7. 13. 00:16
옵티마이저 (Optimizer) 옵티마이저란(Optimizer)? DBMS에는 개발자가 작성한 SQL을 어떻게 실행할 것인지 실행 계획(Execution Plan)을 수립하고 SQL을 실행하게 되는데, 바로 이 실행 계획을 수립을 옵티마이저가 하게 됩니다. 옵티마이저는 SQL을 가장 빠르고 효율적으로 수행할 최적의 처리 경로를 생성해 주는 DBMS 내부의 핵심 엔진입니다. 실행계획(Execution Plan) 동일한 결과가 나오는 SQL이더라도 어떻게 실행하는지에 따라서 성능이 달라질 수 있습니다. 옵티마이저는 데이터 딕셔너리(Data Dictionary)에 있는 오브젝트 통계, 시스템 통계 등의 정보를 사용해서 예상되는 비용을 평가하여 여러 실행 계획(Execution Plan)을 작성합니다. 옵티마이..
-
[데이터베이스] 인덱스(INDEX)database/DB Concept 2021. 7. 12. 00:24
데이터베이스 인덱스(INDEX) 안녕하세요? 장장스입니다. 오늘은 데이터베이스 인덱스에 대해 알아보겠습니다! 인덱스(INDEX) ? 우리는 교과서와 같은 책의 맨 뒤를 보면 색인(INDEX)을 볼 수가 있었습니다. ㄱ-ㅎ 순서로 잘 정리된 인덱스 목록을 통해 우리가 찾고자 하는 내용의 페이지를 빠르게 찾을 수가 있었습니다. 데이터베이스의 인덱스는 무엇일까요? 데이터베이스의 인덱스는 테이블의 검색 속도를 향상시키기 위한 동작의 속도를 높여주는 자료 구조를 일컫습니다. 장점과 단점 인덱스를 사용할 때의 보편적인 장단점을 살펴보면 아래와 같습니다. 그러나 예외적인 상황도 많이 있으니 인덱스 사용에 신중해야 합니다! 장점 검색(SELECT) 속도가 향상 될 수 있다.(단, 항상 그런 것은 아니다.) 그 결과 검..
-
인메모리 데이터 저장소 Redis, 왜 사용할까? #Redis 파헤치기database/redis 2021. 2. 11. 21:42
인메모리 데이터 저장소 Redis 개발을 하다보면 트랜잭션이 많이 발생하는 화면에서 느껴지는 느림(?) 같은 것을 느끼곤 했다. 자주사용되는 하지만 세션에 담고 있기에는 뭔가 모호한 것들을 조회하기 위해 DB를 몇번이나 갔다와야 하니.. 어떻게 하면 속도를 줄일 수 있을지 고민했다. 처음에는 한방에 union all로 가져와? 같은 .. 별로인 생각도 해봤는데 검색하다 보니 redis라는 캐시? 데이터베이스?의 존재를 알게 되었다. 쭉 찾아보니 꽤나 유용한 기술이라고 생각되고 실제로 유명한 곳에서 많이 사용되고 있음을 알고 한번 정리해 보려고 한다. 소개 redis는 단어의 의미에서 보면 외부에 key-value를 저장하는 서버를 말한다. redis.io 에는 다음과 같이 redis를 소개한다. Redi..
-
[MySQL] SELECT한 테이블에 WHERE 조건문 걸기database/mysql 2020. 4. 12. 12:27
SELECT한 테이블에 WHERE 조건문 걸기 안녕하세요? 장장스입니다. 요즘 mysql을 사용하는데 새롭게 알게된 사실이 있어서 기록하려고 합니다. 일명 꿀팁 ^^ ~? SELECT를 실행하여 선택된 데이터가 있는 테이블에 대해 다시 WHERE 조건문을 걸고 싶을때 사용하는 방법입니다. 생각보다 간단한 방법인데 이걸 왜 생각 못했을까 싶네요. 하하 혹시나 나중을 위해 기록삼아 포스팅해봅니다. 이글을 보는 누군가에게 도움이 되시길 바라며 글을 써보겠습니다. 방법 SELECT * FROM테이블명 WHERE 조건문 기본적인 SELECT 쿼리문은 위의 코드처럼 사용하죠. 다시한번 SELECT 문을 사용하는 방법은 FROM 절에 SELECT쿼리를 이용하여 내가 원하는 데이터를 선택한 테이블을 만드는 것입니다. ..