반응형 전체 글350 조인 튜닝 (1) NL 조인 조인의 기본은 NL 조인이다. NL은 Nested Loops 조인의 약어다. 즉 중첩 루프문과 같은 수행 구조를 사용한다. 일반적으로 NL 조인은 Outer와 Inner 양쪽 테이블 모두 인덱스를 사용한다. Outer 쪽 테이블은 사이즈가 크지 않으면 인덱스를 이용하지 않을 수 있다. Table Full Scan 하더라도 그것은 한 번에 그치기 때문이다. Inner 쪽 테이블은 인덱스를 사용해야 한다. Inner 루프에서 외래키로 데이터를 검색할 때 인덱스를 이용하지 않으면, Outer 루프에서 읽은 건수만큼 Table Full Scan을 반복하기 때문이다. NL 조인은 '인덱스를 이용한 조인 방식'이라고 할 수 있다. 튜닝 포인트 Outer Table 인덱스를 읽고 나서 Outer Table.. 2023. 8. 24. 인덱스 튜닝 1. 테이블 액세스 최소화 테이블 랜덤 액세스 인덱스 ROWID는 물리적 주소? 논리적 주소? 인덱스를 스캔하는 이유는, 검색 조건을 만족하는 소량의 데이터를 인덱스에서 빨리 찾고 거기서 테이블 레코드를 찾아가기 위한 주소 값, 즉 ROWID를 얻으려는 데 있다. 인덱스 ROWID는 물리적 주소보다 논리적 주소에 가깝다. 물리적으로 직접 연결되지 않고 테이블 레코드를 찾아가기 위한 논리적 주소 정보를 담고 있기 때문이다. ROWID는 프로그래밍에서 말하는 포인터가 아니며, 테이블 레코드와 물리적으로 직접 연결된 구조는 더더욱 아니다. 오라클 같은 경우는 테이블 블록이 수시로 버퍼캐시에서 밀려났다가 다시 캐싱되며, 그때마다 다른 공간에 캐싱되기 때문에 인덱스에서 포인터로 직접 연결할 수 없는 구조다. 메모.. 2023. 8. 23. 인덱스 기본 인덱스 구조 및 탐색 RDBMS 테이블에서 데이터를 찾는 방법은 두 가지다. 테이블 전체 스캔 인덱스 이용 인덱스는 큰 테이블에서 소량 데이터를 검색할 때 사용한다. 세부적인 인덱스 튜닝 방법의 핵심은 크게 두 가지다. 첫 번째는 인덱스 스캔 과정에서 발생하는 비효율을 줄이는 것이다. 즉, 인덱스 스캔 효율화 튜닝이다. 두 번째는 테이블 액세스 횟수를 줄이는 것이다. 인덱스 스캔 후 테이블 레코드를 액세스할 때 랜덤 I/O 방식을 사용하므로 이를 '랜덤 액세스 최소화 튜닝'이라고 한다. 둘 중 더 중요한 것은 랜덤 액세스 최소화 튜닝이다. 결국 SQL 튜닝은 랜덤 I/O와의 전쟁이다. DB 성능이 느린 이유는 디스크 I/O 때문이다. 읽어야 할 데이터량이 많고, 그 과정에 디스크 I/O가 많이 발생할 때.. 2023. 8. 22. nGrinder 설치하기 오늘은 부하 테스트 툴인 nGrinder에 대해 설치해보겠습니다. 저는 로컬 MacOS 환경과 Kakao I Cloud VM Linux ubuntu 모두 동일하게 적용했습니다. 1. nGrinder 설치 wget을 사전에 설치해야 한다. sudo wget https://github.com/naver/ngrinder/releases/download/ngrinder-3.5.6-20221007/ngrinder-controller-3.5.6.war 2. nGrinder 실행 기본 포트가 8080 포트이다. 본인은 8081 포트로 실행했다. sudo java -jar ngrinder-controller-3.5.6.war --port=8081 아래와 같이 정상적으로 실행된다. 3. nGrinder 접속 이제 loc.. 2023. 8. 18. 자바는 Call By Reference가 없다? 오늘은 스터디를 진행하면서 커뮤니티에서 본 자바의 Call By Reference에 대해 정리하려고 한다. 먼저 기본적인 Call by value와 Call by reference에 대해 짚고 넘어가자. Call by value 함수를 호출 할 때 단순히 값을 전달하는 형태의 함수 호출을 의미한다. Call by reference 메모리의 접근에 사용되는 주소 값을 전달하는 함수 호출을 의미한다. 자바는 Call By Reference가 없다? Java에서 primitive type 변수는 실제 값을 저장하는 반면 다른 모든 타입 변수는 참조하는 객체의 주소를 가리키는 참조 변수를 저장한다. 객체의 주소를 가리키는 참조 변수가 스택 메모리에 저장된다. 참조하는 객체는 힙 메모리에 저장된다. 총 2번의 과.. 2023. 8. 2. 기타 서비스 Cloud Formation 리소스에 대해 인프라의 윤곽을구분짓는 선언적 방법. 거의 대부분의 리소스가 지원된다. 우리가 작성한 순서와 구성 그대로 자동 생성 장점 코드형 인프라 모든 인프라가 코드. 수동으로 리소스를 만들 필요가 없다. 컨트롤하기에는 좋은 방법 AWS 클라우드의 작동 방식을 변경할 때마다 코드 리뷰를 통해 검토 비용 스택 내의 각 리소스는 스택 내에서 만들어진 다른 리소스들과 비슷하게 태그될 거니까요 CloudFormation 템플릿을 사용하여 리소스 비용을 쉽게 예측할 수도 있다. 마지막으로 CloudFormation으로 절약 전략을 세울 수도 있다. 템플릿과 연결된 모든 리소스를 삭제한 다음, 오전 9시 또는 안전하게 오전 8시에 다시 생성하도록 하는 거죠 오후 5시와 오전 8시 사.. 2023. 7. 23. 이전 1 ··· 6 7 8 9 10 11 12 ··· 59 다음 반응형