본문 바로가기
반응형

분류 전체보기349

인덱스 튜닝 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.
재해복구 RPO, RTO 복구 시점 목표를 의미하는 RPO RPO, 즉 복구 시점 목표란 얼마나 자주 백업을 실행할지 시간상 어느 정도 과거로 되돌릴 수 있는지를 결정한다. 복구 시간 목표를 의미하는 RTO RTO는 재해 발생 후 복구할 때 사용된다. 재해 발생 시점과 RTO의 시간 차는 애플리케이션 다운타임이다. 재해 복구 전략 백업 및 복구 파일럿 라이트 웜 대기 핫 사이트 혹은 다중 사이트 접근 RTO는 각기 다르다. 백업 및 복구는 RTO가 작은 반면 파일럿 라이트와 웜 대기 다중 사이트는 비용이 더 들지만 RTO가 빠르다. 백업 및 복구 니다 백업 및 복구는 아주 쉽고 비용이 저렴한데 RPO와 RTO가 높다. 파일럿 라이트 애플리케이션 축소 버전이 클라우드에서 항상 실행되고 보통 크리티컬 코어가 되는데 .. 2023. 7. 22.
반응형