본문 바로가기
반응형

Database8

[Database] 3. DB락 개념 이해 동시에 같은 데이터를 수정하게 될 경우 DB락이 어떻게 동작하는지 정리하려 한다. 1. 문제점 세션1이 트랜잭션을 시작하고 데이터를 수정하는 동안(커밋 연산이 일어나기 전) 세션2에서 같은 데이터를 수정하게 되면 여러가지 문제가 발생한다. 첫번째, 트랜잭션의 원자성(트랜잭션 내에서 실행한 작업들은 마치 하나의 작업인 것처럼 모두 성공하거나 모두 실패해야 한다는 원칙)이 깨진다.두번째, 세션1이 커밋 연산이 아닌 롤백 연산을 실행하게 될 경우, 세션2는 잘못된 데이터를 수정하게 된다. 이와 같은 문제를 방지하려면, 세션이 트랜잭션을 시작하고 데이터를 수정하는 동안(커밋이나 롤백 연산이 일어나기 전) 다른 세션에서 해당 데이터를 수정할 수 없게 막아야 한다. 데이터베이스는 이런 문제를 해결하기 위해 락(Lo.. 2024. 6. 4.
[Database] 2. 데이터베이스 연결 구조와 DB 세션 트랜잭션을 자세히 이해하기 위해 데이터베이스의 서버 연결 구조와 세션에 대해 정리하려 한다. 1. 데이터베이스 연결 구조 1 사용자는 클라이언트(WAS, Database tools, SpringBoot, H2 Console)를 사용하여 데이터베이스에 접근할 수 있는데, 이때 클라이언트는 데이터베이스 서버에 연결을 요청하고 커넥션을 맺고 데이터베이스 서버는 세션을 생성한다.그리고 해당 커넥션을 통한 모든 요청은 생성된 세션을 통해 실행된다. 세션은 트랜잭션을 시작하고, 커밋 또는 롤백을 통해 트랜잭션을 종료하며 사용자가 커넥션을 닫거나 데이터베이스 관리자가 세션을 강제로 종료하면 해당 세션은 종료된다. 2. 데이터베이스 연결 구조 2 커넥션 풀이 10개의 커넥션을 생성했다면, 세션도 10개가 생성된다.이는.. 2024. 4. 18.
[Database] 1. 트랜잭션에 대한 이해 트랜잭션을 도입하는 이유나 사용법에 대해선 알고 있으나, 자세한 이해가 부족한 상태라 개념을 다지기 위해 정리하려 한다. 1. 트랜잭션이란 여러 개의 작업을 하나로 묶은 실행 유닛을 말하며, 데이터베이스 관점에서는 상태를 변화시키는 기능을 수행하기 위한 하나 이상의 쿼리를 모아 놓은 논리적 작업 단위를 말한다. 2. 트랜잭션의 ACID 원자성(Atomicity) 트랜잭션 내에서 실행한 작업들은 마치 하나의 작업인 것처럼 모두 성공하거나 모두 실패해야 한다. 일관성(Consistency) 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 한다. 예를 들어, 데이터베이스에서 정한 무결성 제약 조건을 항상 만족해야 한다. 격리성(Isolation) 동시에 실행되는 트랜잭션들이 서로에게 영향을 미치지 .. 2024. 4. 11.
[Database] Oracle / MySQL의 특징과 차이 1. Oracle 미국의 오라클 회사에서 제작한 세계 점유율 1위 데이터베이스 관리시스템이며 현재 유닉스 체제에서 가장 많이 사용되는 DBMS이다. a. 장점 관리시스템 중앙 집중 방식으로 Administration Monitoring이 가능하고, Multiple Databases 튜닝이 가능하다. 다른 Admin User들과 공유가 가능하다. 다수의 사용자가 동시에 접근 가능하다. 변화 관리 변경 Plan을 작성하고 실제 구현하기 전에 변경사항의 효과를 볼 수 있다. 생산시스템을 방해하지 않는다. 경고 오류가 발생하면 오라클은 이메일이나 설정되어 있는 계정으로 연락을 줄 수 있다. 경고는 예정된 가동 정지 시간 동안 차단될 수 있다. 용량 & 처리 업그레이드 관리자의 계획을 돕기 위해 사용 패턴을 추적.. 2022. 7. 22.
[Database] 데이터베이스 RDBMS / NOSQL 에 관하여 1. Database란 여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 데이터들의 모임이다. 데이터에비스는 크게 관계형(RDMBS)와 비관계형(NOSQL)로 간략히 정리할 수 있다. 2. DBMS란 Database Management System의 약자로 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 데이터베이스 관리시스템 소프트웨어를 의미한다. 3. RDB란 RDB란 Relational Database의 약자로 관계형 데이터베이스라 불리고 말 그대로 데이터 모델마다 관계가 있는 데이터베이스라 볼 수 있다. 데이터 모델은 컬럼(column)과 로우(row)로 이루어졌을 때 하나의 테이블(table)이라 할 수 있다. 데이터 항목들은 로우에 저장되고, 항목의 속성은 컬럼이라고 .. 2022. 7. 21.
[MySql] Select 하여 Insert 하기 INSERT INTO prod_code ( sort_no , code_no , code_order , code_name , code_type , code_yn ) SELECT 'B' , code_no , code_order , code_name , code_type , code_yn FROM prod_code WHERE sort_no = 'A'; 위와 같이 INSERT문에는 기존 테이블에 존재하는 컬럼 그대로를 정의한다. 그리고 SELECT문에도 기존 테이블에 존재하는 컬럼을 그대로 정의하되 변경되어 저장되기를 원하는 컬럼 자리에 값을 정의한다. 이때 INSERT문에 정의된 컬럼 위치와 SELECT문에 정의된 컬럼 위치가 동일해야 원하는 컬럼에 원하는 값이 정상적으로 추가될 수 있으니 유의하자. WHER.. 2021. 9. 11.
[MySql] 문자열 분리해서 LOOP 돌리는 프로시저(LOOP, FETCH, CURSOR 사용) stu_subject, stu_score, stu_grade 속성의 데이터 값이 다중이고 CONCAT된 갯수만큼 정보를 각각 INSERT해야 하는데 도저히 쿼리로는 반복문을 해결할 수 없을 것 같아 프로시저를 만들어보기로 했다. BEGIN DECLARE stuSeq int(11); DECLARE stuName varchar(50); DECLARE stuSubject varchar(50); DECLARE stuScore varchar(50); DECLARE stuGrade varchar(50); DECLARE stuSubject1 varchar(50); DECLARE stuScore1 varchar(50); DECLARE stuGrade1 varchar(50); DECLARE DEL char(1) DEFA.. 2021. 4. 29.
[MySql] 초단위 시분초 형식으로 변경(SEC_TO_TIME 사용) 1. 초 단위 시분초 형식으로 출력 SELECT sec_to_time(cs_recp_duration) FROM cs_history_recp WHERE cs_recp_duration != 0 2021. 2. 7.
반응형