본문 바로가기
반응형

CS/DataBase12

[DB] Prepared Statement란? Prepared Statement는 데이터베이스 쿼리를 실행 할 때 쿼리를 미리 준비하고 실행할 때 필요한 값만 바인딩하여 사용하는 방식이다. 일반적으로 SQL 쿼리를 실행할 때와 달리, Prepared Statement는 SQL 구문과 데이터 값을 분리하여 처리한다. 이러한 방식은 SQL Injection 공격을 예방하고, 반복적인 쿼리 실행 성능을 향상시키는 등 여러 가지 장점을 제공한다. 일반 Statement의 동작 방식일반적으로 SQL을 실행할 때 다음과 같은 단계를 거친다.SQL 문자열 생성--예시SELECT * FROM users WHERE name = 'Alice'; 2. 파싱 (Parsing) : SQL 문법을 검사하고, 쿼리 구조를 분석한다. 3. 컴파일(Complie.. 2025. 6. 10.
[DataBase] 인덱스란? 인덱스란 테이블의 특정 컬럼을 빠르게 조회할 수 있도록 만든 자료구조이다. 보통 B-Tree(Balanced Tree) 구조를 사용하여 빠른 탐색이 가능하다. 데이터를 직접 읽는 게 아니라 색인을 먼저 보고 해당 데이터 위치를 찾아가게 된다. 예제blog 테이블에서 blog_category = 1인 데이터를 찾는 쿼리SELECT * FROM blog WHERE blog_category = 1; 인덱스가 없으면데이터 전체를 처음부터 끝까지 풀 스캔(Full Table Scan)100만 개 중에서 10개만 필요해도 전부 읽어야 하기 때문에 느리다. 인덱스를 추가하면?인덱스 = 책의 목차 같은 역할CREATE INDEX idx_blog_category ON blog (blog_category);이제 blog_.. 2025. 3. 26.
[DB] MVCC(다중 버전 동시성 제어) 동시정 제어(Concurrency Control)동시성 제어란 DBMS가 다수의 사용자 사이에서 동시에 작용하는 다중 트랜잭션의 상호간섭 작용에서 데이터베이스를 보호하는 것을 의미한다. 일반적으로 동시성을 허용하면 일관성이 낮아지게 된다.  다수 사용자의 동시 접속을 위해 DBMS는 동시성 제어를 할 수 있도록 Lock 기능과 SET TRANSACTION 명령어를 이용해 트랜잭션의 격리성 수준을 조정할 수 있는 기능도 제공한다. 이렇게 동시성을 제어하는 방법에는 낙관적 동시성 제어와 비관적 동시성 제어가 있다. 낙관적 동시성 제어(Optimistic Concurrency Control)사용자들이 같은 데이터를 동시에 수정하지 않을 것이라고 가정데이터를 읽는 시점에 Lock을 걸지 않는 대신 수정 시점에 .. 2025. 3. 26.
[SQL] SQL 실행 순서에 대해서 SQL 쿼리를 작성할 때 아무 생각 없이 짜다가 문득 실행 순서에 대해 어떻게 되는지 궁금해졌다. SQL 쿼리가 실행될 때는 작성한 순서대로가 아니라 내부적으로 정해진 순서에 따라 처리된다.가장 일반적인 실행 순서는 아래와 같다 SELECT ... FROM ... JOIN ... WHERE ... GROUP BY ... HAVING ... ORDER BY ... LIMIT ...; 실제 실행 순서FROM테이블을 선택하고 원시 데이터를 가져온다.JOIN이 있다면 JOIN 조건에 따라 테이블 결합WHERE조건에 따라 행(Row) 필터링GROUP BY 전에 실행되므로 집계(Aggregation)에 영향을 줌GROUP BY같은 값끼리 그룹화집계 함수 (SUM,AVG,COUNT 등)가 사용될 때만 필요Having.. 2025. 2. 18.
반응형