데이터베이스 (5) 썸네일형 리스트형 [DB] 데이터베이스 락(Locking) & 동시성 제어 데이터베이스에서 Lock은 여러 트랜잭션(데이터베이스 작업 단위)이 동시에 데이터에 접근하고 수정하는 상황에서 데이터의 일관성과 무결성을 보장하기 위해 사용되는 개념 DB Lock의 Level행 수준 잠금(Row-level Locking) : 데이터를 개별 행 단위로 잠금을 설정하는 것을 말한다. 이 경우에는 특정 행만 잠겨서 다른 트랜잭션은 해당 행에 접근할 수 없게 된다.테이블 수준 잠금(Table-Level Locking) : 테이블과 인덱스에 모두 잠금을 설정. Select table, Alter table, Vacuum, Refresh,Index, Drop, Truncate 등의 작업에서 해당 레벨의 락이 설정된다.데이터베이스 수준 잠금(Database-Level Locking) : 데이터베이.. [DB] SQL Injection SQL Injection은 웹 어플리케이션에서 데이터베이스와의 상호작용을 조작하여 공격자가 비정상적인 SQL 쿼리를 실행하도록 하는 보안 취약점이다.해커에 의해 조작된 SQL 쿼리문이 데이터베이스에 그대로 전달되어 비정상적 명령을 실행시키는 공격 기법공격을 통해 공격자는 민감한 정보를 조회하거나 조작할 수 있고, 심한 경우 시스템을 완전히 장악할 수도 있다. 공격 목적정보 유출저장된 데이터 유출 및 조작원격 코드 실행일부 DB의 경우 확장 프로시저를 이용하여 원격으로 시스템 명령을 실행할 수 있다.시스템 명령 실행은 원격 자원 접근 및 데이터 유출, 삭제가 가능하다.인증 우회공격의 대표적인 경우는 로그인 폼에서 발생한다.이때 상위 권한을 가진 사용자의 권한으로 인증 절차를 우회하여 로그인할 수 있다. .. [DB] Index 데이터베이스에서 탐색 속도를 빠르게 하기 위해 사용하는 인덱스에 대해 알아보자인덱스 (index) 란?데이터베이스 인덱스는 추가적인 쓰기 작업과 저장 공간을 활용하여 테이블의 검색 성능(속도)을 향상시키기 위해 사용되는 구조로, 특정 칼럼에 대한 정렬된 데이터를 유지하여 빠른 탐색을 가능하게 한다.하지만 인덱스를 관리하는데 추가적인 비용이 발생하며, 데이터 변경 작업 시 성능 저하가 발생할 수 있다. 개념데이터베이스에서 칼럼(속성)을 기반으로 빠른 검색을 지원하기 위한 자료구조특정 칼럼 값 기반으로 테이블 행에 대한 물리적인 위치를 찾아 매핑테이블에 대한 보조 구조로써 생성되며, 원본 데이터와 별도로 관리특정 칼럼에 인덱스 생성 시 해당 칼럼의 데이터를 정렬 후 별도의 메모리 공간에 데이터의 물리적 주소.. [DB] 트랜잭션 격리 수준 (Isolation Level) 트랜잭션이란?https://wishlee0204.tistory.com/259데이터베이스의 상태가 변하는 과정에서 일관성과 무결성을 유지하기 위해 실행되는 연산들의 집합데이터베이스에서 여러 연산(쿼리)이 수행될 때, 일부만 실행되고 중간에 실패하면 데이터 정합성이 깨질 위험이 있다.따라서 이를 방지하기 위해 트랜잭션을 사용하여 데이터의 정합성을 보장할 수 있다. 트랜잭션 격리 수준이란?트랜잭션 격리 수준은 여러 트랜잭션이 동시에 실행될 때 서로 간섭하지 않도록 정해진 규칙이다.즉, 실행 중인 트랜잭션의 중간 결과(DB를 수정하기 위해 쿼리가 실행되는 동안)에 다른 트랜잭션이 해당 데이터에 접근/변경/조회/수정할 수 있는 정도를조정하는 격리 레벨(수준)을 설정하는 것을 의미한다.이때 격리 수준이 낮을 수록.. [DB] 트랜잭션 (Transaction) 트랜잭션(Transaction)이란?트랜잭션(Transaction)은 데이터베이스의 논리적 작업 단위 데이터 베이스의 상태를 바꾸기 위해 하나의 작업을 수행하기 위해 실행되는 일련의 연산들을 의미트랜잭션이 성공적으로 수행되면 데이터베이스는 영구적으로 변경되며, 실패하면 변경 사항이 취소된다. 작업 단위? 하나의 작업?DB에서 작업 단위(Unit of Work)는 하나의 논리적인 작업을 수행하는 최소 단위며, 하나의 쿼리 묶음이라고 생각하면 된다.쉽게 말해, "이거 하나는 다 처리되어야 해!"라고 묶을 수 있는 작업 덩어리라고 볼 수 있다.즉, 많은 SQL 명령문들을 사람이 정하는 기준에 따라 정하는 것이다.📌 예제 1: 은행 계좌 이체💰 "A 계좌에서 5만 원 빼고, B 계좌에 5만 원 넣어줘!"이 .. 이전 1 다음