[바미] 새로 쓴, 대용량 데이터 베이스 솔루션 Vol.1 - 3장 SQL의 실행계획 - 2
·
프로그래밍(Web)/공부일기
새롭게 안 사실들 실행 계획의 유형들..실행 계획에 대한 내용이 이렇게 다양하게 많이 있을 줄 몰랐다.엑세스, 스캔에 대한 내용들처음 들어 보는 조인세미 조인(Semi Join), 카티젼 조인Cartesian Join), 내포 조인(Nested loop Join), 정렬 병합 조인(Sort Merge Join), 해쉬 조인(Hash Join), 등등공부한 내용들3.2 실행계획의 유형실행계획은 데이터베이스 테이블에서 데이터를 추출하여 원하는 결과를 생성하기 위한 처리 경로를 의미한다. 가장 기본적인 실행계획은 실제 데이터가 저장된 물리적인 데이터를 액세스하는 것으로, 이를 스캔(Scan)이라고 부른다. 또한, 여러 테이블에서 스캔을 수행한 후 데이터를 서로 연결시키는 처리를 조인(Join)이라고 하며, 이..
[바미] 새로 쓴, 대용량 데이터 베이스 솔루션 Vol.1 - 3장 SQL의 실행계획 - 1
·
프로그래밍(Web)/공부일기
새롭게 안 사실들 옵티마이저옵티마이저를 처음 이 책을 공부할 땐 머리속에 남지 않았는데 옵티마이져 관련 이슈를 경험하고 나서 눈에 제대로 들어오기 시작했다.아우트라인엑세스, 스캔에 대한 내용들처음 들어 보는 조인세미 조인(Semi Join), 카티젼 조인Cartesian Join), 내포 조인(Nested loop Join), 정렬 병합 조인(Sort Merge Join), 해쉬 조인(Hash Join), 등등공부한 내용들제 3장 SQL의 실행계획SQL의 실행 계획은 데이터베이스 엑세스 효율에 가장 큰 영향을 미치는 요소로, SQL의 수행 방식을 미리 계획하여 성능 최적화를 도모하는 데 핵심적인 역할을 한다. 실행 계획은 사용 중인 SQL의 형태, 데이터 및 인덱스 구조, DBMS 버전, 통계 정보 등을..
[바미] 옵티마이저(Optimizer)란 무엇인가?
·
프로그래밍(Web)/공부일기
옵티마이저(Optimizer)란?옵티마이저는 데이터 베이스가 SQL 쿼리를 '어떻게' 실행할지를 결정(최적화)하는 엔진입니다. 개발자가 작성한 쿼리를 보고 어떤 순서로 테이블에 접근할 지, 어떤 인덱스를 사용할 지, 어떤 조인 방식을 쓸 지, 등등을 가장 빠르고 적은 자원을 사용하는 방법으로 결정해주죠. 데이터베비스 내부에서 쿼리가 실제로 실행되기 전에 '이 쿼리를 어떤 플랜(Plan)으로 실행하면 가장 비용(Cost)이 적을까?'를 계산하고, 이것에 따른 실행 계획(Execution Plan)을 생성해주는데 이 과정을 수행하는 것이 오늘 알아 볼 옵티마이저(Optimizer)입니다.옵티마이저(Optimizer)가 SQL을 실행하는 과정 옵티마이저(Optimizer)는 크게 SQL 작성 -> 구문 분석(..
[바미] 새로 쓴, 대용량 데이터 베이스 솔루션 Vol.1 - 2장 인덱스 유형과 특징
·
프로그래밍(Web)/공부일기
새롭게 안 사실들B-Tree 인덱스 구조를 가진 테이블의 엑세스 속도100 건의 로우를 가진 테이블에서나 100만건의 로우를 가진 테이블에서나 한 건을 엑세스 하는 속도는 거의 같다는 점을 새롭게 알았다.B-Tree의 B가 Binary외에 Balanced도 있다는 의미는 이미 알았지만 엑세스 하는 속도도 균형 잡았을 줄은 몰랐다.인덱스의 종류들B-Tree 인덱스의 구조 - 루트, 브랜치, 리프 블록함수기반 인덱스에 대하여NULL 값에 대하여나는 단순히 NULL = 없음, 값은 값이지만 존재하지 않는 값으로 생각하고 있었다.하지만 이 책에서는 NULL을 '미확정 값'이라고도 표현하고 있어 개념을 재확립 하였다.공부한 내용들제 2장 인덱스의 유형과 특징인덱스의 개념인덱스는 데이터베이스 내에서 특정 데이터를 ..
[바미] 새로 쓴, 대용량 데이터 베이스 솔루션 Vol.1 - 1장 데이터 저장구조와 특징
·
프로그래밍(Web)/공부일기
들어가기 전에..해당 글은 새로 쓴 대용량 데이터 베이스 솔루션 책을 공부한 내용을 정리하였습니다.새롭게 안 사실들PK와 FK의 개념 재적립PK는 각 테이블의 고유한 식별자 역할을 하는 컬럼FK는 테이블 간의 관계를 정의하기 위해 사용되는 컬럼DB도 임의의 위치에 저장된다.프로그래밍 언어의 변수만 임의의 위치에 저장되는 줄 알았는데 분리형 테이블에서 데이터가 저장될 때 '임의의 위치'에 저장된다는 것을 새롭게 알게 되었다. 분리형 테이블에 사용되는 주요 개념들데이터 블록데이터를 저장하는 가장 기본 단위로, Block은 논리적이지만 디스크에 물리적으로 매핑되며 데이터 삽입 시 빈 공간(Free Space)이 있는 블록을 찾아 데이터를 저장하게 된다.프리 리스트(Free List)블록이 새 데이터를 저장할 ..
[바미] 해시 충돌 처리 방법
·
프로그래밍(Web)/공부일기
들어가기전에..해시 테이블에서 해시 충돌이 발생하면, 두 개 이상의 서로 다른 키가 같은 해시 값을 가질 수 있습니다. 이를 해결하기 위해 충돌을 처리하는 다양한 방식들이 존재하는데 그 중에서 체이닝(Chaining), 개방 주소법(Open Addressing), 이중 해싱(Double Hashing)이 대표적인 방법입니다. 오늘은 이 세가지 방법에 대해 알아보겠습니다.체이닝(Chaining)해시 충돌을 처리하는 가장 보편적인 방법 중 하나인데 해시 테이블의 각 버킷(Bucket)을 연결 리스트나 배열과 같은 자료 구조로 만들어서 충돌이 발생한 여러 데이터를 그 안에 함께 저장하는 방식입니다.동작 방식각 버킷에는 하나의 데이터가 저장되는 것이 아니라, 여러 데이터가 연결 리스트로 연결됩니다.같은 해시 값..
[바미] Obejct와 Map의 시간복잡도는 항상 O(1)일까? (feat. JS & Node)
·
프로그래밍(Web)/공부일기
들어가기전에..회사에서 진행하고 있는 프로젝트 내에서 Front 또는 클라이언트로 부터 query 또는 body로부터 파라미터를 받아오게 되는데 이에 따라 Validation 검사 처리를 개발하고 있던 중이였습니다. 그 파라미터를 체크하는 로직은 아래와 같은데const locations = ['body', 'query'];const params = req[location];Object.keys(params).forEach(key => { const rule = validation[key];...}validation이라는 Object안에 Validation체크를 할 수 있도록 만들고,  Validation 체크 조건에 걸리면 router단에서 API를 종료시키는 구조로 구현했는데 이 중에서 const ..
[바미] 알고리즘 시간 복잡도 용어 정리
·
프로그래밍(Web)/공부일기
들어가기전에..안녕하세요. 요즘 매일 매일 제가 백준 알고리즘을 푼 것을 '하루 알고리즘'이라는 컨텐츠로 포스팅 하고 있습니다. '하루 알고리즘(JS)' 카테고리의 글 목록안녕하세요. 4년차 백엔드 개발자로 활동하고 있습니다. 코딩과 무관한 것들과 유관한 부분들 모두 공유 합니다. 오타나, 틀린 부분이 있다면 언제든지 지적 환영 입니다.codesk.tistory.com여기서 시간 복잡도 관련 용어들을 정리해보면 좋을 것 같아 이번 글을 포스팅하게 되었습니다. 빅오 표기법?빅오 표기법은 알고리즘의 효율성을 표현하기 위해 사용되는 표기법입니다. 알고리즘의 단계 수는 입력 크기에 따라 달라지기 때문에 '배열에 N개의 원소가 있을 때 N단계가 필요하다'와 같이 표현하는 것이 더 효과적이죠. 컴퓨터 과학자들은 자..
[바미] 트리거는 왜 사용할까?
·
프로그래밍(Web)/공부일기
회사의 Node프로젝트 중 트리거를 사용하는 프로젝트가 있었습니다. 그 트리거들은 특정 작업 전에 동작하거나 특정 작업 후에 처리되는 것들이였기 때문에 그 트리거들을 보면서 미들웨어라는 좋은 게 있는데 왜 트리거를 사용했을까? 라는 생각을 하게 되었습니다. 그러니까 아래와 같이 구성하면 되지 않나? 싶었죠. app.use(async (req, res, next) => { try { const result = await someAsyncTask(); req.customData = result; // 비동기 작업 결과를 요청 객체에 저장 next(); // 다음 미들웨어 함수 호출 } catch (error) { next(error); // 오류 처리를 위해 다음 미들웨어 함수 호출 } }); 그러다 GPT..
Bami