database
-
[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) 속도가 향상 될 수 있다.(단, 항상 그런 것은 아니다.) 그 결과 검..
-
[몽고DB] replica set 구성 시 rs.add() #code: 74database 2021. 3. 4. 14:41
썸네일 제목 몽고디비 환경 구성중 만난 에러입니다. Quorum check failed because not enough voting nodes responded; required 2 but only the following 1 voting nodes responded: 192.168.6.130:27017; the following nodes did not respond affirmatively: 192.168.6.199:27017 failed with command replSetHeartbeat requires authentication rs.add() 명령어 수행시 오류 발생 rs0:PRIMARY> rs.add( { host: "mongodbd4.example.net:27017" } ) { "oper..
-
[Redis] 레디스 클러스터 구성 #clusterdatabase/redis 2021. 2. 13. 00:09
레디스 cluster redis.io의 cluster tutorial 과 아빠프로그래머 님의 포스팅을 참고하여 작성하였습니다. 초보 개발자 입장에서 막혔던 점이나 의문점을 같이 적었습니다. 레디스 cluster 기능에 대해 알아보고 직접 구성해 보겠습니다. 환경구성 VMware Fusion - Player Version 12.1.0 CentOS 8.3 Redis 5.0.4 Cluster 왜 사용하는가? Redis cluster을 통해 얻을 수 있는 이점은 다음과 같습니다. 샤딩(Sharding) 여러 노드 간에 데이터 세트를 자동으로 분할할 수 있는 기능 ※샤딩은 "조각내다"라는 뜻으로 데이터베이스 저장기법 중 하나이다. 데이터를 파티셔닝하는 기술을 말한다. 가용성 노드의 하위 집합에서 장애가 발생하거나..
-
[Redis] 레디스 서버 인스턴스 생성하기 #CentOS 8 #VMwaredatabase/redis 2021. 2. 12. 21:54
레디스 서버 인스턴스 생성하기 redis.io 와 아빠프로그래머 님의 포스팅을 참고하여 작성하였습니다. 초보 개발자 입장에서 막혔던 점이나 의문점을 같이 적었습니다. 레디스 utils 에는 편의를 위한 기능을 제공합니다. install_server.sh 쉘 스크립트를 사용해 간편하게 인스턴스 환경셋업을 할 수 있습니다. install_server.sh 실행 현재 디렉토리 위치 /home//Desktop/redis-5.0.4/utils/ /utils 경로로 이동하여 install_server.sh 쉘스크립트를 실행합니다. $ cd utils $ ./install_server.sh executable path 설정 1. 포트설정을 진행합니다. 기본포트는 6379 입니다. 원하는 포트번호로 변경합니다. >> ..
-
[Redis] 레디스 설치 #CentOS 8 #VMwaredatabase/redis 2021. 2. 12. 12:32
REDIS 설치 CentOS 8 환경에 redis를 설치하는 방법에 대한 포스팅입니다. redis.io 와 아빠프로그래머 님의 포스팅을 참고하여 작성하였습니다. 초보 개발자 입장에서 설치중 막혔던 점이나 의문점을 같이 적었습니다. 환경구성 VMware Fusion - Player Version 12.1.0 CentOS 8.3 Redis 5.0.4 컴파일러 설치 먼저 redis 설치시 필요한 컴파일러를 설치합니다. 관리자 권한이 필요합니다. 관리자로 변경합니다. $ su gcc : GNU 컴파일러 모음 make : makefile 컴파일러 $ sudo yum install gcc $ sudo yum install make Redis 5.0.4 다운로드 (6.x 버전은 설치도중 에러가 난다... 없다시피한 ..
-
인메모리 데이터 저장소 Redis, 왜 사용할까? #Redis 파헤치기database/redis 2021. 2. 11. 21:42
인메모리 데이터 저장소 Redis 개발을 하다보면 트랜잭션이 많이 발생하는 화면에서 느껴지는 느림(?) 같은 것을 느끼곤 했다. 자주사용되는 하지만 세션에 담고 있기에는 뭔가 모호한 것들을 조회하기 위해 DB를 몇번이나 갔다와야 하니.. 어떻게 하면 속도를 줄일 수 있을지 고민했다. 처음에는 한방에 union all로 가져와? 같은 .. 별로인 생각도 해봤는데 검색하다 보니 redis라는 캐시? 데이터베이스?의 존재를 알게 되었다. 쭉 찾아보니 꽤나 유용한 기술이라고 생각되고 실제로 유명한 곳에서 많이 사용되고 있음을 알고 한번 정리해 보려고 한다. 소개 redis는 단어의 의미에서 보면 외부에 key-value를 저장하는 서버를 말한다. redis.io 에는 다음과 같이 redis를 소개한다. Redi..