![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQTmHi%2FbtrL9KkANCM%2FbgL4KPG8WZp1HNzOkX9Ne1%2Fimg.png)
[Database] DBA급 개발자로 - #13 Rule based 쿼리 최적화
2022. 9. 15. 16:22
Database/DBA급 개발자로
이전 포스팅에서는 쿼리 요청을 어떻게 병렬 처리하는지 살펴봤습니다. 이번 포스팅에서는 쿼리를 최적화할 수 있는 방법에 대해 살펴보겠습니다. Query Optimization 쿼리는 다양한 방법으로 최적화할 수 있습니다. 첫 번째 방법은 잘못됐거나 비효율적인 쿼리 문장을 제거하는 heuristic / rule 방식의 최적화 방법이 있습니다. 두 번째 방법은 쿼리 수행에 필요한 예상 비용을 비교해서 비용이 가장 작은 쿼리 플랜을 선택하는 cost based 방법이 있습니다. 이번 포스팅에서는 heuristic / rule 기반의 최적화 방식에 대해 살펴보겠습니다. Relational Algebra Equivalance Relational algebra 표현식이 서로 다르더라도 결괏값이 동일하면 해당 rela..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxVpkb%2FbtrLzQKz6eO%2FE5U7m27Dc84bfLkkrKayq0%2Fimg.png)
[Database] DBA급 개발자로 - #8 Index Concurrency Control
2022. 9. 7. 08:33
Database/DBA급 개발자로
이전 포스팅에서 B+Tree에 대해 살펴봤습니다. 이번 포스팅에서는 인덱스 동시성 문제를 어떻게 해결하는지 살펴보겠습니다. Concurrency Control 여태까지 논의했던 B+Tree는 단일 스레드 환경에서만 정상적으로 동작합니다. 멀티 스레드 환경에서는 두 개 이상의 스레드가 동일한 노드에 동시에 접근할 수 있습니다. DBMS는 concurrency control protocol을 통해 동시에 접근되는 데이터를 물리적 또는 논리적으로 보호합니다. 물리적 단위에서 데이터를 보호하는 것은 메모리 상의 데이터가 일관된 상태를 유지할 수 있도록 보호하는 것입니다. 논리적 단위에서 데이터를 보호하는 것은 논리적으로 스레드가 접근할 수 있는 데이터에 접근할 수 있도록 보장하고 접근할 수 없는 데이터는 접근할..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUmA8S%2FbtrK4Erj1Dq%2FGDla1LXk4DRh9UgxM4jbk1%2Fimg.png)
[Database] DBA급 개발자로 - #3 Database Storage 1/2
2022. 9. 1. 08:32
Database/DBA급 개발자로
이전 포스팅에서 중급 SQL에 대해 살펴봤습니다. 이번 포스팅을 통해서 DBMS가 데이터를 디스크에 어떻게 저장하고 관리하는지 살펴보겠습니다. DBMS가 데이터를 저장하는 방법 대다수의 DBMS는 전원이 꺼져도 데이터가 보존되는 비휘발성 저장 장치를 기준으로 설계됐습니다. 최근에는 휘발성 저장 장치만큼 빠르면서도 비휘발성 저장 장치처럼 전원이 꺼져도 데이터가 보존되는 특성을 지닌 NVRAM이 개발됐습니다. 비휘발성 저장 장치는 휘발성 저장 장치보다 더 많은 데이터를 저장할 수 있지만 I/O에 소요되는 시간이 훨씬 깁니다. 따라서 DBMS는 비휘발성 저장장치를 사용함에 있어 I/O 비용을 최소화할 수 있도록 설계됐습니다(예를 들면 random access보다는 sequential access를 선호하도록 ..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcgvZPS%2FbtrK4DFeLY6%2FoPX0u5sXpdN9j9ukdWe65K%2Fimg.png)
[Database] DBA급 개발자로 - #1 Relational Model
2022. 8. 31. 19:01
Database/DBA급 개발자로
Relational Model 이번 포스팅에서는 다양한 데이터베이스가 탄생할 수 있었던 계기인 관계형 모델(Relational Model)에 대해 알아보겠습니다. 개발자에게 가장 큰 관심사는 역시 데이터베이스입니다. 그럼 데이터베이스가 무엇인지부터 살펴보겠습니다. 데이터베이스는 데이터를 쉽게 접근, 관리하고 업데이트할 수 있도록 구성된 데이터의 모음입니다. 따라서 우리는 데이터를 flat file에 저장을 하던, csv에 저장을 하던 상관없이 데이터를 저장하는 것을 데이터베이스라고 부를 수 있습니다. 하지만 데이터를 아무런 생각 없이 저장하게 된다면 무슨 문제가 발생할 수 있을까요? 첫 번째로는 데이터가 정확한지 확신할 수 없습니다. 만약 중복 데이터가 있다면 어떤 게 정말 내가 원하는 데이터인지 어떻게..