데이터베이스 8

SELECT문 처리 우선순위 정리

DB에서 SELECT문은 사람이 이해하기 쉽게 작성되어있지만, 내부적으로 처리되는 순서와 우선순위는 앞에서부터 차례대로 실행되지 않는다. FROM 테이블 선택 > JOIN 어떤 테이블을 어떻게 가져올것인지 > WHERE 테이블의 각 행별 조건 체크 > GROUP BY 그룹별 조건 > HAVING 그룹별로 집계 > SELECT 최종결과 표시 및 집계 > ORDER BY 정렬방법 > LIMIT 값을 몇개까지 표시할것인지 라는 로직 순서와 우선순위로 실행된다. 정리하면 다음과 같다.

데이터베이스 2024.11.17

인덱스 index

db에서는 일반적으로 원하는 데이터를 찾을 때, FTS(Full Table Scan) 즉 처음부터 끝까지 차례대로 탐색을 하게 된다.이것을 좀더 효율적으로 데이터를 찾을 수 있게 자료구조를 통해 만든 목차를 인덱스 라고한다. 백과사전의 각 내용을 찾기 쉽게 가,나,다 순으로 내용들을 정렬해 둔 것과 마찬가지이다.이러한 인덱스를 설계 > 관리 > 개선하는 과정을 인덱스튜닝 이라고 한다. 이해하기 쉽게 이야기해보자면여기서 백과사전은 DB, 백과사전의 내용들은 데이터, 가,나,다 순으로 정렬한 것은 인덱스, 백과사전에 이런 정렬방식을 적용하고 개선하는것을 인덱스 튜닝이라고 할 수 있겠다. 인덱스를 생성하면, 데이터베이스는 특정 컬럼 값과 데이터가 저장된 물리적 위치(테이블의 레코드 위치)를 연결하는 별도의 데..

데이터베이스 2024.11.16

SQL문 간단 정리

예제를 위한 테이블 생성 CREATE TABLE employees (     id INT PRIMARY KEY,     name VARCHAR(100),     department VARCHAR(50),     salary INT,     hire_date DATE ); CREATE TABLE departments (     id INT PRIMARY KEY,     name VARCHAR(50) ); INSERT INTO employees (id, name, department, salary, hire_date) VALUES (1, 'Alice', 'Engineering', 70000, '2020-01-15'), (2, 'Bob', 'Engineering', 80000, '2019-03-12'), (3..

데이터베이스 2024.11.14

동시성 제어

만약 쇼핑몰을 운영하는데 100개의 한정상품을 판다고 해보자. 이때 만약 동시에 1000명의 사람이 구매를 한다고 하면 어떻게 해야할까? 이런 동시성 문제에 대비하여 트랜잭션 관리와 동시성제어를 수행해야 한다. 우선 작업을 트랜잭션으로 묶어서 처리해야, 중간에 구매하다가 취소되더라고 큰 문제가 생기지 않을 것이다. 스프링의 경우에 @Transactional 어노테이션을 사용하여 트랜잭션관리가 가능하다. @Synchronized 어노테이션을 사용하여 메소드에 동기화를 적용하거나, 스프링의 AOP(Aspect-Oriented Programming)를 사용하여 메소드 호출 전후에 동시성 관련 작업을 수행할 수 있다. 이렇게 기본적으로 사용하는 트랜잭션 이외의 기법들은 다음과 같은 것들이 있다. 1.Lock(락..

데이터베이스 2024.04.12

트랜잭션 (Transaction)

트랜잭션 (Transaction) 이란? 영어뜻을 그대로 해석하면 거래라는 뜻 이다. 내가 물건을 고르고, 고른 물건에 대해 대금을 지불하는 이런 행동들들 하나로 묶어서 우리는 '산다'라고 말한다. 그리고 이런 '물건을 산다'와 '물건을 판다'를 하나로 묶어서 '거래' 라고 한다. 이런식으로 DB의 동작을 단위로 묶은것이다. 컴퓨터적으로 가져와서 다시 해석하면 DB에서 일어나는 일련의 작업의 단위이다. 위에서 거래에서 일어나는 행동이 하나가 아니듯이, DB에서의 트랜잭션도 SQL문 하나만을 뜻하지는 않는다. 여러가지 작업들을 하나의 의미있는(논리적인) 단위로 묶은 느낌이다. 트랜잭션의 4가지 특징 ACID에 대해 알아보자! 원자성, 일관성, 독립성(격리성), 지속성 1.원자성 (Atomicity) 트랜잭..

데이터베이스 2024.04.09

스키마 (Schema)

스키마란? 데이터베이스에서 사용된 구조화된 데이터의 설계로 저장되는 데이터의 구조, 형식, 제약조건 등을 정의한다. 데이터를 설명하는 데이터인 메타데이터의 집합이라고도 한다. 외부스키마, 개념스키마, 내부스키마 3가지로 나누어진다. 1.외부스키마 (External Schema 혹은 External View) 데이터베이스 사용자나 응용프로그램의 입장에서 표현하고 접근하는 데이터의 논리적 구조를 정의. 즉 외부에서 사용하는 입장에서 필요로 하는 데이터를 중심으로 설계. 사용자가 쉽게 데이터에 접근하고 이해할 수 있도록 도와줌. 각 사용자 그룹의 관점에서 데이터를 추상화하고 필요한 정보만을 제공함으로써 DB의 사용성을 향상. 예를들어 학생용 외부스키마 라고 한다면: 학생들은 자신의 수업정보, 성적, 과목 등록..

데이터베이스 2024.04.08

관계형 데이터베이스 관계

관계형 데이터 베이스란? 데이터를 테이블 형식으로 저장하고 관리하며, 각 데이터간의 관계를 테이블 간의 관계로 표현하는 데이터베이스 기본적으로 SQL(Structured Query Language)언어로 데이터를 추가,수정 및 삭제 가능 이런 관계형 데이터 베이스에서 데이터간의 관계에 대해 알아보자. 여기서의 관계는 테이블간의 연결을 의미하고, 일반적으로 기본키와 외래키를 사용하여 정의된다. 여기서 다른 테이블의 기본키를 가져다가 외래키로 삼는다. 데이터 베이스에서 말하는 엔티티(Entity)는 자바에서 말하는 객체와 거의 유사하다. 자바의 객체는 생성자,속성(필드),메소드를 가질 수 있는데, 데이터베이스의 객체인 엔티티는 자바의 객체처럼 속성을 가질 수 있고, 다른 엔티티간의 관계를 가질 수도 있다. ..

데이터베이스 2024.04.07

기본키 (Primary Key), 외래키 (Foreign Key)

기본키 (Primary Key) 테이블에서 유일한 값을 가지고 있는 속성이다. 오직 1개만 지정 할 수 있다. 테이블 안에서 유일하게 각 행(튜플 또는 레코드)들을 구별 할 수 있게 해준다. NULL값을 절대 가질 수 없고, 중복된 값을 가질 수 없다. 학생이라는 Entity가 있다고 하자. 각 Attribute에 해당하는 것들 중에 학과나 이름 나이는 학생들 끼리 중복 될 수 있지만 학번은 중복될 수 없기 때문에 학번만이 기본키가 될 수 있다. 외래키 (Foreign Key) 테이블에서 다른테이블의 데이터를 참조 할 때 연결해주는 Attribute. 아래에서는 학생 테이블과 수강 테이블이 학번으로 연결되어 있기에 수강테이블의 외래키는 학번이라고 할 수 있다.

데이터베이스 2023.09.04