성능개선 2

헛된 다중컬럼 인덱스와 진짜 다중컬럼 인덱스

개요 이전에 explain 기능을 써보다가 다중컬럼 인덱스를 걸어놓은 테이블에서 full scan을 하는 상황을 발견했다. 이후에 테이블을 수정해서 사용하고 있다. 수정한 것이라고는 다중컬럼 인덱스를 만들 때 순서를 수정한 것이다. where 절에 항상 넣는 location_num을 가장 먼저 넣어 unique index를 생성했다. 원래 테이블 unique index의 Seq_in_index의 1번이 date인데 반해 새로운 테이블 unique index의 Seq_in_index의 1번이 location_num인 것이 차이점이다. ALTER TABLE new_index_table ADD UNIQUE INDEX u_idx(location_num, date, time_diff); 이전의 테이블과 현재 수정..

Database 2022.05.26

Kafka의 Zero copy

Zero copy Zero-copy란 컴퓨터에서 CPU의 개입을 받지 않고 한 메모리의 영역에서 다른 메모리의 영역으로 데이터를 카피하는 작업을 말한다. 불필요한 데이터 복사을 줄이고 CPU 자원을 아껴 성능을 개선할 수 있다. Kafka는 이 방식을 사용하여 클라이언트에서 요청하는 메시지를 빠르게 송신할 수 있다. 카프카는 파일(또는 리눅스의 경우 파일시스템 캐시)의 메시지를 중간 버퍼 메모리에 쓰지 않고 곧바로 네트워크 채널로 전송한다. 데이터를 클라이언트에게 전송하기 위해 로컬 캐시 메모리에 저장하는 대부분의 데이터베이스와 달리 Kafka가 갖는 하나의 특징이며 데이터 전송을 빠르게 하여 성능을 향상시킨다. 아래에서 데이터를 전송하는 일반적인 방식과 Kafka가 채택한 Zero copy 방식을 비교..