데이터베이스
-
인덱싱이란데이터베이스 2021. 8. 12. 22:38
1️⃣ 인덱스란 무엇인가💡인덱스란 데이터 베이스에서 원하는 데이터를 빨리 찾기 위해 튜플의 키 값에 대한 물리적 위치를 기록해둔 자료구조입니다.인덱스의 가장 큰 목적은 대용량 데이터 조회 시 select문의 조회 속도를 향상시키는 것입니다. 이를 위해서 Insert, Update, Delete문의 성능을 희생시키는 측면도 있습니다. 대용량 데이터가 아니라면 인덱스의 메리트가 크지 않을 수 있습니다. 인덱스의 장점Full Scanning에 비해서 테이블을 조회하는 속도를 크게 향상시킬 수 있습니다. 인덱스의 단점인덱스를 유지하기 위한 별도 저장 공간이 필요합니다. (테이블의 10% 정도), 또한 카디널리티나 여러 요인들을 고려하여 인덱스를 생성하지 않으면 오히려 성능이 저하되는 현상이 발생할 수 있습니다...
-
트랜잭션 - 회복데이터베이스 2021. 8. 11. 15:07
💡회복은 데이터베이스에 장애가 발생했을 때 데이터베이스를 일관성 있는 상태로 되돌리는 DBMS의 기능입니다.1️⃣ 트랜잭션과 회복트랜잭션은 데이터베이스 회복의 단위입니다. 트랜잭션은 데이터의 변경 내용을 한순간에 모두 데이터베이스에 기록하지 않고, 일단 변경한 내용을 로그에 기록한 후 데이터베이스에 반영합니다. DBMS의 회복 관리자는 트랜잭션의 ACID 성질 중 원자성과 지속성을 보장하여 장애로부터 데이터베이스를 보호합니다 트랜잭션 수행 과정트랜잭션이 시작하면 수행 상태가 됩니다정상적으로 수행되면 COMMIT문을 만나 부분 완료됩니다부분 완료 후 버퍼의 내용을 데이터 베이스에 기록하면 트랜잭션이 최종 완료됩니다.만약 수행 중 문제가 생겨 완료 전에 실패하면 취소 과정을 거쳐 이제까지 진행한 작업을 거꾸..
-
트랜잭션 - 고립 수준데이터베이스 2021. 8. 11. 15:07
락은 두 트랜잭션이 (쓰기, 쓰기) 상황일 때 해결하기 위한 것입니다. 하지만 (읽기, 쓰기) 상황일 때는 갱신손실 같은 심각한 문제는 발생하지 않기 때문에 락을 이용해서 처리하기에는 아쉬운 점이 있습니다. (락으로 해결하면 두 트랜잭션의 동시 진행 정도를 과도하게 막게 됩니다.) 1️⃣ 트랜잭션 동시 실행 문제오손 읽기반복 불가능 읽기유령 데이터 읽기 오손 읽기읽기 작업을 하는 트랜잭션 1이 쓰기 작업을 하는 트랜잭션 2가 작업한 중간 데이터를 읽기 때문에 생기는 문제입니다. 작업 중인 트랜잭션 2가 어떤 이유로 작업을 롤백할 경우 트랜잭션 1은 무효가 된 데이터를 읽게 되고 잘못된 결과를 도출합니다. 트랜잭션 2가 age를 21로 변경했다가 롤백을 했습니다. 하지만 트랜잭션 1은 롤백을 하기 전 바뀐..
-
트랜잭션 - 동시성 제어데이터베이스 2021. 8. 10. 15:46
💡트랜잭션이 동시에 수행될 때, 일관성을 해치지 않도록 트랜잭션의 데이터 접근을 제어하는 DBMS의 기능을 동시성 제어라고 합니다.트랜잭션을 수행할 때, 한 트랜잭션이 끝난 다음 다음 트랜잭션을 수행시킨다면 데이터베이스의 일관성을 유지할 수 있습니다. 하지만 데이터베이스는 가능한 많은 트랜잭션을 동시에 수행시켜야 합니다. 2개 이상의 트랜잭션이 같은 테이블에 동시에 접근하게 되면 여러 문제가 발생할 수 있습니다.2개의 트랜잭션이 읽기만 하는 경우는 문제가 발생하지 않지만, 쓰기 작업을 할 경우 오손 읽기, 반복 불가능 읽기, 유령 데이터 읽기, 갱신 손실 등의 문제가 발생합니다. 1️⃣ 갱신손실💡갱신손실 문제는 두 개의 트랜잭션이 한 개의 데이터를 동시에 갱신할 때 발생합니다.초기값 X = 1000원이 ..
-
트랜잭션 - 개념데이터베이스 2021. 8. 10. 15:45
1️⃣ 트랜잭션의 개념 💡 DBMS에서 데이터를 다루는 논리적인 작업의 단위, 장애 발생 시 데이터를 복구하는 작업의 단위, 여러 작업이 동시에 같은 데이터를 다룰 때 이 작업을 분리하는 단위 트랜잭션은 전체가 수행되거나 또는 전혀 수행되지 않아야 합니다. 예를 들어, A계좌에서 B계좌로 10,000을 이체할 경우 START TRANSACTION 1. A 계좌에서 10,000원을 인출하는 쿼리 2. B 계좌에 10,000원을 입급하는 쿼리 COMMIT 만약 1번 쿼리가 수행된 다음 시스템에 문제가 생기거나 다른 UPDATE문이 끼어들어 A 계좌에서 돈을 동시에 인출하게 되면, A 계좌와 B 계좌의 잔액이 의도하지 않는 값이 될 수 있습니다. 따라서 1번 쿼리와 2번 쿼리는 모두 수행되거나 아예 수행되지 ..