[PostgreSQL] TimescaleDB
·
Database
TimescaleDB란 ?TimeScaleDB는 PostgreSQL 확장으로 개발된 오픈 소스 시계열 데이터베이스시계열데이터 저장 및 쿼리 성능 최적화하면서도 PostgreSQL의 강력한 기능 유지 핵심 기능 : 하이퍼테이블하이퍼테이블은 사용자에게 하나의 테이블처럼 보이지만, 내부적으로 여러 개의 작은 청크로 분할되어있다.(한마디로 논리적 테이블)쪼개는 최적화 작업이 백그라운드에서 실행이 청크들은 시간 간격, 다른 차원 (id, 위치 등)으로 분할될 수 있다. 장점Chunk pruningWHERE ts BETWEEN ... 같은 시간 필터만 있어도, 해당 범위를 벗어난 chunk는 통째로 스킵 → I/O 크게 절감.병렬 처리 쉬움서로 다른 chunk를 여러 워커가 병렬 스캔 가능(특히 집계/리포트).인덱..
[OS] 주소 공간의 동적 재배치
·
OS
사람들이 컴퓨터를 더 많이 사용하길 원하면서 시분할, 대화식 이용의 개념이 등장하였다.시분할을 구현하는 가장 고전적인 방법은 프로세스를 짧은 시간동안 실행시키고, 중단한 후 중단 시점의 모든 상태를 디스크에 저장하고, 다른 프로세스를 또 탑재해서 실행시키는 것을 반복하는 방법이 있다. 하지만 알다시피 디스크 입출력은 엄청나게 느리기 때문에 이 방식은 비효율적이였다. 따라서 프로세스 전환 시 프로세스를 메모리에 그대로 유지하면서 운영체제가 시분할을 할 수 있도록 하는 개념이 등장하였다.말은 좋지만, 결국 여러 프로그램이 메모리에 동시에 존재하려면 한 프로세스의 메모리를 다른 프로세스의 메모리로부터 보호해야하는 문제가 생겼다.그런 위험에 대비해서 운영체제가 사용하는 메모리 개념이 주소 공간이다. 주소 공간은..
[MySQL] 클러스터링 인덱스
·
Database
프라이머리 키 값이 비슷한 레코드끼리 묶어서 저장하는 것을 클러스터링 인덱스라고 한다.중요한 점은 프라이머리 키 값에 의해 레코드의 저장 위치가 결정된다. 따라서 프라이머리 키 값의 변경은 레코드의 물리적 저장위치의 변경을 뜻한다.클러스터링 인덱스는 사실 인덱스라기 보단 레코드의 저장 방식으로 보는게 편하다. (클러스터링 테이블이라고 부름)일반적으로 우리가 사용하는 InnoDB 테이블은 항상 클러스터링 인덱스로 저장되기 때문에 키 기반의 검색이 매우 빠르지만,그에따라 레코드의 저장이나 프라이머리 키의 변경이 상대적으로 느리다. 클러스터링 인덱스 구조 자체는 일반 B-Tree와 비슷하지만, 세컨더리 인덱스를 위한 B-Tree의 리프 노드와는 달리, 클러스터링 인덱스의 리프 노드에는 모든 칼럼이 같이 저장되..