1. 트랜잭션과 ACID1) 세션과 커넥션 세션은 사용자가 DB 서버에서 작업하는 논리적인 단위를 말합니다. 다시 말해, 데이터베이스를 사용하기 시작하고, 종료하기까지의 작업 상태를 저장하는 반영구적인 컨테이너라고 할 수 있습니다. 따라서 세션 내에서 사용자의 트랜잭션, 쿼리 등의 작업이 이루어지며, 로그아웃을 할 경우, 세션도 종료됩니다. 또한, 세션은 로그인 된 캐시 데이터, 트랜잭션 격리 수준 데이터 등을 저장합니다.커넥션과 세션의 차이점은? 커넥션은 사용자와 DB 서버가 통신하기 위해 필요한 물리적인 연결 상태를 의미합니다. 신뢰성을 보장하는 TCP 기반이기 때문에 DB에 요청을 보내기 전후로 커넥션이 열고 닫혀야 합니다. 따라서 세션은 커넥션을 통해 생성되며, 커넥션이 물리적인 연결을, 세션은 ..
1. 이상현상정규화란, 릴레이션이 연관된 속성만을 갖도록 분리시키는 것을 말합니다. 이 정규화 작업의 필요성을 알기 위해서는 먼저, 이상현상에 대해 알아둘 필요가 있습니다. 이상현상은 릴레이션이 잘못 설계되어, 불필요한 중복 데이터가 존재할 때 발생하는 현상입니다. 대표적으로 삽입 이상, 갱신 이상, 삭제 이상이 있습니다. 이러한 이상현상을 해결하는 방법이 정규화입니다.1) 삽입 이상고객 ID거래 ID고객 이름거래 날짜고객 등급111T1오영일2025-01-17VIP131T2성기훈2025-01-17SILVER111T3오영일2025-01-17VIP141T4조상우2025-01-18GOLD111T5오영일2025-01-20VIP 다음과 같이, 고객과 거래 정보를 함께 저장하는 릴레이션이 존재한다고 가정하겠습니다...
1. 인덱스란?인덱스는 관계형 DBMS가 관리하는 테이블에 존재하는 데이터를 빠르게 조회할 수 있도록 데이터를 저장하는 데이터베이스 객체입니다. 인덱스는 테이블의 특정 컬럼을 기준으로 만들 수 있기 때문에 특정 컬럼을 기준으로 정렬된 일종의 표라고 할 수 있습니다. 특정 컬럼을 기준으로 정렬되어 있기 때문에 인덱스가 걸려있는 컬럼을 기준으로 검색했을 때, 인덱스를 활용하여 데이터를 빠르게 조회할 수 있습니다. 1) 인덱스는 항상 정렬된 상태를 유지해야 한다.인덱스를 사용했을 때, 조회 상황에서 유리한 이유는 인덱스가 특정 컬럼을 기준으로 내림차순 혹은 오름차순으로 정렬되어 있기 때문입니다. 실제로 DBMS가 관리하는 데이터는 HDD 또는 SSD에 저장될텐데요. 내가 저장하는 데이터들이 항상 순서대로 저장..
SELECT FOR UPDATE는 테이블 내 레코드의 동시성 제어를 위해 사용할 수 있는 SQL 구문입니다. 하지만 SELECT FOR UPDATE를 사용했을 때, 락이 걸려있는 레코드에 대한 접근이 어디까지 제한되는지 직접 실습을 통해 확인해보고자 합니다. 1. 실습 환경 구성하기먼저, 하나의 DBMS에 두 개의 세션 연결을 해야하며, 하나의 세션에서 트랜잭션을 시작하고, SELECT FOR UPDATE를 사용하면, 다른 세션에서 해당 레코드에 접근했을 때, 어디까지 접근이 되는지 확인해야 합니다. 이를 위해, 두 가지 방법을 사용할 수 있습니다.MySQL Workbench를 활용하여, 두 개의 탭을 띄운다. (본 게시글에서는 1번을 사용할 것입니다.)하나는 MySQL Workbench를 활용하여 접근..
1. SQL이란?SQL은 Strucutred Query Language로 구조화된 질의 언어라고 해석할 수 있습니다. 앞선 포스팅에서 DBMS는 응용 프로그램과 컴퓨터 언어를 통해 데이터를 주고 받으며, 다양한 처리를 한다고 하였습니다. SQL은 관계형 DBMS와의 통신에서 사용되는 언어입니다. SQL을 사용하면 복잡한 데이터베이스에서 원하는 데이터를 추가, 삭제, 수정, 조회를 쉽고 빠르게 처리할 수 있습니다.1) 기존 프로그래밍 언어와의 차이점은 무엇일까?SQL은 C, Java와 같은 기존 프로그래밍 언어와 마찬가지로 컴퓨터에서 작업을 수행할 수 있는 컴퓨터 언어입니다. 또한 응용 소프트웨어를 만들기 위해 사용됩니다. 언어별로 다양한 데이터 타입(VARCHAR / CHAR 등)을 지원하며, 언어별로 ..
1. 파일 시스템과 데이터베이스의 차이1) 파일 시스템파일시스템은 컴퓨터를 사용하는 우리들에게 가장 익숙한 데이터 저장방식입니다. 엑셀 시트, 메모장, 이미지 등 다양한 형태의 데이터가 SSD/HDD에 저장되어 있습니다. 서비스에 필요한 데이터를 저장하는 방법으로 파일 시스템을 활용할 수도 있지만, 데이터가 수십만 개에서 최소 억 단위라면, 일일이 파일로 관리하는 것은 효율적인 방법이 아닐 것입니다. 만약, 100만 개의 메모장 파일이 있는 폴더에서 특정 문구를 포함한 파일을 찾고 싶다면?이 상황에서는 하나하나 열어보는 수밖에 없을 것입니다. 스프레드 시트는요...?그렇다면, 파일로 저장하되 스프레드 시트로 데이터를 저장한다면 위와 같은 문제를 해결할 수 있을 것입니다.하지만, 특정 조건에 맞는 행 혹..