@Soo
RDBMS, NoSQL, 분산 처리에 관심이 많은 백엔드 엔지니어입니다.

7부 - 애플리케이션 입장에서의 SQL 튜닝

March 16, 2022

1. 기본 방향 프로그램 단위에서 접근하는 경우 아래의 6가지 접근법만 이해하면 여러 성능 개선 항목을 도출할 수 있다. 중복 수행 제거 불필요한 수행 제거 최적 수행 필요 이상으로 많은 데이터 건수를 조회하는가? 조회한 항목은 다 사용하는 값인가? 조회하는 항목은 모두 사용자에게 보여줘야 하는가? 업므 데이터의 성격상 쿼리를 개선할 부분이 있는가? 데이…


6부 - SQL 최적화

March 13, 2022

1. 기본 방향 SQL 튜닝 시 중점적으로 점검할 항목 통계 최적 실행계획이 수립되도록 테이블 통계 정보가 존재하고 주기적으로 갱신되는가? 인덱스 적절한 인덱스를 사용하는가? 인덱스가 있음에도 사용하지 못하는가? 인덱스 수가 많아서 INSERT 처리 시간이 오래걸리는가? 조인 처리하는 데이터 양과 연결 관계에 맞는 조인 방식이 선정됐는가? 조인 관계에서 …


5부 - 소스코드 최적화

February 20, 2022

1. 기본 방향 소스코드 최적화 분석 시 중점적으로 체크할 항목 단순 정보성 로깅을 하는 부분이 있는가? 로깅을 하지 않을 때 로깅을 위한 문자열이나 데이터가 만들어지고 있는가? 전문 파싱이나 환경설정 로딩과 같은 작업이 반복 수행되는가? 락 범위를 최소화하거나 락을 회피할 수 있는가? 집합 데이터에 대한 검색 방식은 적절한가? 문자열 처리에 오버헤드가 …


4부 - 프로세스 이해하기

February 08, 2022

4부 - 프로세스 이해하기 1. 기본 방향 애플리케이션 최적화를 하기 위해서 프로세스의 동작 방식을 이해해야 한다. 프로세스 이해에 필요한 기본 지식으로 다음 세 가지가 있다. 수행 중인 코드 : 프로세스가 현재 어떤 함수를 수행하고 있는가? 통신/파일 상태 : 프로세스가 통신으로 연계된 서버는 어디고, 어떤 파일을 열고 있는가? 통신/파일 간 동작 상태…


3부 - 화면 응답시간 분석

February 05, 2022

1. 기본 방향 2. HTTP의 이해 2.1 프로토콜 구조 기본적으로 클라이언트 서버 간에 요청과 응답이 1:1 구조를 띠고 있다. HTTP 요청/응답 모두 헤더와 본문으로 구성돼 있다. 2.2 HTTP 요청 요청은 헤더와 본문으로 나뉘고, 헤더는 다시 요청 라인과 MIME 헤더로 나뉜다. 요청 헤더 요청 방식으로는 8가지가 있다. , , , , , , …


2부 - 성능 개선

February 04, 2022

1장. 기본 자세 적극적이고 도전적인 자세를 갖춰라 다른 사람의 설명과 의견에 귀 기울여라 종합적인 시각을 가져라 실행하고 비교하라 2장. 성능 분석 시작하기 클라이언트부터 시작해 웹 서버, 애플리케이션 서버, DB 서버 등 여러 서버를 거쳐서 동작한다. 이런 구성에서 성능 저하가 발생했을 땐 네트워크를 기준으로 각 서버가 전체 응답시간에서 차지하는 비중…


1부 - 성능 기초

February 03, 2022

1. 성능이란? 고객의 특정 업무를 대상으로 운영환경하에서 고객이 수긍할 수 있는 응답시간 내에 처리할 수 있는 거래량이라고 정의할 수 있다. 1.1 동시 사용자 성능 테스트나 운영 시 시스템에 발생하는 부하의 의미로 많이 사용되는 용어가 바로 동시 사용자다. 동시 사용자에 대한 정의는 개발자와 업무담당자간에 다르게 해석할 수 있다. 동시에 시스템에 트랜…


8장 - 분산 시스템의 골칫거리

February 02, 2022

분산 시스템을 다루는 것은 한 컴퓨터에서 실행되는 소프트웨어를 작성하는 일과는 다르다. 뭔가 잘못될 수 있고 새롭고 흥미진진한 방법이 많다는 점이다. 이번장은 분산 시스템에서 잘못될지도 모르는 것에 관한 개요이다. 결함과 부분 장애 단일 컴퓨터에서 실행되는 소프트웨어는 하드웨어가 올바르게 동작하면 같은 연산은 항상 같은 결과를 낸다. 좋은 소프트웨어가 설…


7장 - 트랜잭션

February 01, 2022

애매모호한 트랜잭션의 개념 ACID의 의미 트랜잭션이 제공하는 안정성 보장은 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability) 을 의미하는 로 잘 알려져 있다. 그러나 현실에서는 데이터베이스마다 ACID 구현이 재각각이다. 시스템에서 실제로 어떤 것을 기대할 수 있는지 분명하지 않다. …


6장 - 파티셔닝

January 28, 2022

파티셔닝과 복제 데이터셋이 매우 크거나 질의 처리량이 매우 높다면 복제만으로 부족하고 데이터를 파티션으로 쪼갤 필요가 있다. 이 작업을 이라고 한다. 파티션을 나눌 때는 보통 각 데이터 단위(레코드, 로우, 문서)가 하나의 파티션에 속하게 한다. 데이터 파티셔닝을 원하는 주된 이유는 확장성이다. 보통 복제와 파티셔닝을 함께 적용해 각 파티션의 복사본을 여…