[Database] Lock과 동시성 제어, 2PL
·
Database
🔒 Lockwrite 연산은 단순히 값 하나 바꾸는 것보다 더 복잡한 과정인덱스 처리, 실제 파일에 대한 처리 등이 포함될 수 있음동시에 같은 데이터에 또 다른 read / write가 있다면 예상치 못한 동작을 할 수 있다.=> LOCK을 통해 해결할 수 있다!Write-Lock(Exclusive Lock, 배타적 락)read / write(insert, modify, delete)할 때 사용한다write-lock이라고 해서 무조건 write 할 때만 사용하는 것이 아니라는 것에 주의!다른 tx가 같은 데이터를 read / write 하는 것을 허용하지 않는다.Read-Lock(Shared Lock, 공유 락)read 할 때 사용한다다른 tx가 같은 데이터를 read하는 것은 허용한다.Lock 호환성..
[Database] Transaction Isolation Level
·
Database
Transaction들이 동시 실행될 때 발생 가능한 이상 현상Dirty Read커밋되지 않은 변화를 읽는 현상Nonrepeatable Read(= Fuzzy Read)같은 데이터를 2번 읽었는데 값이 달라짐이는 트랜잭션의 Isolation 속성을 위반하는 현상Phantom Read없던 데이터가 갑자기 생기는 현상이 역시 Isolation 속성을 위반하는 현상이런 이상 현상들이 모두 발생하지 않도록 만들 수는 있지만, 그러면 제약사항이 많아져서 동시 처리 가능한 트랜잭션 수가 줄어들어 결국 DB의 전체 처리량(throughput)이 하락하게 된다..⇒ 일부 이상한 현상은 허용하는 몇 가지 level을 만들어서 사용자가 필요에 따라서 적절하게 선택할 수 있도록 하자!Isolation Level위에서 3가지..
[Database] Transaction, Concurrency Control
·
Database
트랜잭션개념단일한 논리적인 작업의 단위(a single logical unit of work)논리적인 이유로 여러 SQL문들을 단일 작업으로 묶어서 나눠질 수 업섹 만든 것DB에서 데이터를 다룰 때 장애가 일어난 경우, 데이터를 복구하는 작업의 단위가 됨DB에서 여러 작업이 동시에 같은 데이터를 다룰 때, 이 작업을 서로 분리하는 단위가 됨트랜잭션은 전체가 수행되거나 전혀 수행되지 않아야 한다(All or Nothing)START TRANSACTION;UPDATE account SET balance = balance - 200000 WHERE id = 'J';UPDATE account SET balance = balance + 200000 WHERE id = 'H';COMMIT; -- ROLLBACK;A..
[Database] 테이블 설계 / FD / DB 정규화(Normalization)
·
Database
잘못된 DB 테이블 설계 시 발생하는 문제이상현상(Anomaly)삽입 이상(Insertion Anomalies): 튜플 삽입 시 특정 속성에 해당하는 값이 없어 NULL을 입력해야 하는 현상저장 공간 낭비실수로 인한 데이터 불일치 가능성 존재null 값을 많이 쓰게 됨삭제 이상(Deletion Anomalies): 튜플 삭제 시 같이 저장된 다른 정보까지 연쇄적으로 삭제되는 현상수정 이상(Update Anomalies): 튜플 수정 시 중복된 데이터의 일부만 수정되어 일어나는 데이터 불일치 현상Spurious(가짜) Tuples잘못된 종속성을 갖게 테이블을 natrual join 시 가짜 정보가 발생NULL 값이 많아짐으로 인한 문제점들null 값이 있는 column으로 join 하는 경우 상황에 따라 ..
[Database] SQL Trigger
·
Database
SQL trigger 뜻데이터베이스에서 어떤 이벤트가 발생했을 때 자동적으로 실행되는 프로시저(procedure)데이터에 변경이 생겼을 때, 즉 DB에 insert, update, delete가 발생했을 때 이것이 계기가 되어 자동적으로 실행되는 프로시저를 의미간단한 예제들예제 1사용자의 닉네임 변경 이력을 저장하는 트리거delimiter $$CREATE TRIGGER log_user_nickname_trigger BEFORE UPDATE -- update 이전에 발생하도록 지정 ON users FOR EACH ROW -- 업데이트 되는 각 row에 대해 실행 BEGIN insert into users_log values(OLD.id, OLD.nickname, now()); END $$delimiter..
[Database] Stored Function & Stored Procedure
·
Database
stored function사용자가 정의한 함수DBMS에 저장되고 사용되는 함수SQL의 select, insert, update, delete statement에서 사용할 수 있다.예제 1임직원의 ID를 열자리 정수로 랜덤하게 발급하고 싶다.ID의 맨 앞자리는 1로 고정이다.delimiter $$CREATE FUNCTION id_generator()RETURNS intNO SQL -- 오직 MySQL에만 있는 부분BEGIN RETURN (1000000000 + floor(rand() * 1000000000));END$$delimiter;일반적으로 SQL에서의 delimiter는 세미콜론(;) 이다. 하지만, 함수 내부에서 세미콜론을 사용할 일이 있으므로 function을 작성하기 전에 미리 deli..
[Database] SQL 고급
·
Database
서브쿼리서브쿼리의 종류동작 방식에 따라: 비연관 서브쿼리, 연관 서브쿼리위치에 따라: 스칼라 서브쿼리, 인라인뷰, where 절 서브쿼리집합함수: UNION, UNION ALL, INTERSECT, MINUS그룹함수COUNT, AVG, SUM, MIN/MAX, VARIANCE, STDDEVGROUP BY FUNCTION: GROUPING SETS(), ROLLUP(), CUBE()윈도우함수그룹함수 형태(OVER 절 사용): SUM OVER, AVG OVER, MIN/MAX OVER, COUNT OVER순위 관련 함수 → ORDER BY 필수RANK(순위): RANK() WITHIN GROUP(), RANK() OVER(), DENSE_RANK(), ROW_NUMBER()LAG, LEADFiRST_VALU..
[Database] SQL 기초
·
Database
SQL 기본 개념SQL(Structured Query Language)관계형 데이터베이스에서 데이터 조회 및 조작, DBMS 시스템 관리 기능을 명령하는 언어DDL, DML, DCL 등으로 구분SQL 문법은 대소문자 구분 XSQL 기능에 따른 분류데이터 정의어(DDL) -> CREATE, ALTER, DROP, TRUNCATE데이터 조작어(DML) -> INSERT, UPDATE, DELETE, MERGE데이터 제어어(DCL) -> GRANT, REVOKE트랜잭션 제어 언어(TCL) -> COMMIT, ROLLBACK데이터 질의 언어(DQL) -> SELECTDDLCREATEcreate table EMPLOYEE ( id INT PRIMARY KEY, name VARCHAR(30) NOT NU..
[Database] Relational Database
·
Database
Relational Data Model(관계 데이터 모델)Relational Data Model 주요 개념relation: 행과 열로 구성된 테이블domain: 값들의 집합attribute: 세로 값으로 열(Column)이라고도 함tuple: 가로 값으로, 행(Rolw)이라고도 함. 일부는 NULL일 수 있다cardinality: tuple의 수degeree: attribute의 수instance: 정의된 스키마에 따라 테이블에 실제 저장된 데이터의 집합schema: relation이 어떻게 구성되는지, 어떤 정보를 담고 있는지에 대한 기보넞ㄱ인 구조를 정의relation의 특징relation은 중복된 tuple을 가질 수 없다 → 각 행은 중복될 수 없음relation의 tuple을 식별하기 위해서 a..
[Database] 데이터베이스 기본 개념
·
Database
DB & DBMS & DB SytemDB: 전자적으로(electronically) 저장되고 사용되는 관련있는(related) 데이터들의 조직화된 집합(organized collection)DBMS(DataBase Management Systems): 사용자에게 DB를 정의하고 만들고 관리하는 기능을 제공하는 소프트웨어 시스템예) PostgreSQL, MySQL, ORACLE, MsSQLDB를 정의하다 보면 부가적인 데이터(metadata)가 발생.DBMS의 기능데이터 정의: 데이터의 구조(=Table)를 정의하고 데이터 구조에 대한 삭제 및 변경 기능을 수행데이터 조작: 데이터(=Table 내에 있는 데이터)를 조작하는 프로그램이 요청하는 데이터의 삽입, 수정, 삭제 작업을 지원데이터 추출: 사용자가 조..