TIL💡/Database(27)
-
[SQL Server] Lock
1. Lock 기본 🔥 Lock이란? 같은 자원을 액세스하려는 다중 트랜잭션 환경에서 데이터베이스의 일관성과 무결성을 유지하려면 트랜잭션의 순차적 진행을 보장할 수 있는 직렬화(Serialization) 장치가 필요하다. 이런 직렬화를 가능하게 하려고 모든 DBMS가 공통적으로 사용하는 매커니즘이 바로 Lock이다. 🔥 공유 Lock과 배타적 Lock 공유 Lock - 읽기 모드로 데이터 읽을 때 사용 - 다른 공유 Lock과는 호환되지만 배타적 Lock과는 호환 X 배타적 Lock - 쓰기 모드로 데이터를 변경할 때 사용 - 트랜잭션이 완료될 때까지 유지 - Lock이 해제될 때까지 다른 트랜잭션은 해당 리소스에 접근 불가 🔥블로킹과 교착 상태 ① 블로킹(Blocking) Lock 경합이 발생해 특정 ..
2022.02.08 -
SQL Server로 Index 실습
회사에서 과제로 SQL Server를 학습해야해서 개인적으로 퇴근 후 실습을 수행하였다. 다만 SQL Server가 Mac용으로 릴리스되지 않아서 대체재로 Docker의 Azure SQL로 데이터베이스 서버 역할을 수행하도록 하였다. 1. 데이터베이스 만들기 --- 새 데이터베이스 만들기 IF NOT EXISTS ( SELECT name FROM sys.databases WHERE name = N'TutorialDB' ) CREATE DATABASE [TutorialDB] GO --- 쿼리 저장소 기능 사용 ALTER DATABASE [TutorialDB] SET QUERY_STORE=ON GO 그 결과 아래 데이터베이스가 생성된 것을 확인할 수 있었다. 이전에 데이터베이스에 대해 열심히 공부하지 않았을..
2022.01.30 -
[데이터베이스] Index(인덱스)
Index란 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상하기 위한 자료구조이다. 우리가 책에서 원하는 내용을 찾는다고 하면, 책의 모든 페이지를 찾아보는 것은 오래걸린다. 그래서 책의 맨 앞이나 두에 색인을 추가하는데, 이와 비슷한 역할을 수행한다. 데이터베이스에서도 테이블의 모든 데이터를 검색하면 시간이 오래걸리기 때문에 데이터와 데이터의 위치를 포함한 자료구조를 생성하여 빠르게 조회할 수 있도록 한다. 인덱스를 활용하면 데이터를 조회하는 SELECT 외에도 UPDATE나 DELETE의 성능이 함께 향상된다. 만약 Index를 사용하지 않은 컬럼을 조회해야 하는 상황이라면 전체를 탐색하는 Full Scan을 수행해야 한다. Full Scan은 전체를 비교하여 탐색하..
2021.10.13