들어가며 2000 년대 초반 시장을 쌈싸먹었던 Oracle 의 위상이 현재는 mysql 쪽으로 넘어온거 같습니다. 제가 처음으로 경험한 mysql 은 트렌젝션 특성도 지원하지 않던 3.x 버젼이었는데, 어느덧 시장을 다 재패하고 그 시절 Oracle 보다 더 큰 영향력을 발휘하고 있습니다. mysql 은 곁눈질로만 보고, 제대로 공부한 적이 없었는데 점점 나이는 먹어가고 위기감도 들어 공부를 시작해봅니다. innodb 를 중심으로 살펴볼 생각입니다. InnoDB Physical Layout 메뉴얼을 보니 이 그림이 아주 멋져서 들고 왔습니다. 이 그림을 보고 흥미로운 점을 몇가지 찾아서 적어봅니다.

PostgreSQL Hooks

들어가며 PostgreSQL 은 Hook 이라는 아주 멋진 기능을 제공합니다. 본 글은 PostgreSQL 에서 제공하는 Hook 의 기본 개념과 동작방식에 대해서 소개합니다. Hook Hook 은 일종의 Function Pointer 로써, 각각의 모듈별로 정의되어 있습니다. PostgreSQL 개발자들은 기능을 확장할 수 있도록 여러가지 Hook 등을 정의해놓았고, 여기에 내가 만든 코드를 넣어 손쉽게 PostgreSQL 의 동작을 변경하거나, 내가 필요한 코드를 추가로 넣어 기능을 확장 시킬 수 있습니다. 이러한 Hook 들은 PostgreSQL 의 _hook 접미사를 가진 전역변수로 정의되어있는데, 사실 제대로 Document 되어있지는 않습니다.

배경 메모리 관리는 여러운 작업중에 하나입니다. 메모리를 할당하고 사용하는 것은 좋은데 할당받은 메모리 포인터를 적시에 반환하지 않거나 놓쳐버리는 경우 흔히 말하는 메모리 릭이 발생하게 됩니다. 이러한 문제는 간단한 커멘드라인 유틸리티등과 같이 짧은 시간 동작하고 종료되는 경우는 그리 큰 문제가 되지 않습니다. OS 가 알아서 프로세스가 종료될때 할당받은 자원을 정리하여 주거든요. 그러나 데이터베이스 서버와 같이 오랜시간 데몬 형태로 동작하여야하는 경우는 메모리를 다 잡아먹고 시스템을 서비스 불능 상태로 만들어버리는 등의 심각한 문제를 일으킬수 있습니다.

Han

Database Engineeer, Developer

그냥 이것저것 합니다. ck

KR