전체 글 82

DBA 의 컴퓨터 공부 - write throuth , write back 그리고 Postgres

기존의 MCU가 아닌 리눅스 기준으로 write throuth , write back 을 정리해보자 차이라면 아마도 디스크냐 메모리에 기입이냐 차이가 아닐지싶다.  write-through 방식은 캐시 데이터가 변경될 때 즉시 디스크에도 기록하는 방식이다. 성능은 낮지만, 데이터 일관성과 안정성을 보장하는 데 유리하다. 예를 들어, 매우 중요한 데이터를 다루는 시스템에서 write-through가 사용될 수 있다. 리눅스에서는 데이터를 캐시나 버퍼에 먼저 저장한 후, 일정 시점에 디스크로 기록하는 write-back 방식을 많이 사용한다. 이는 성능을 극대화하기 위한 것이며, 시스템 충돌이나 전원 장애 시 데이터 손실의 위험이 있을 수 있다. 그러나 데이터베이스나 파일 시스템에서 로그나 WAL을 사용해 ..

DBA의 길 2024.10.20

DBA 의 컴퓨터 공부 - 엔지니어로써 알아야 할 LINUX Memory (free -h)

Postgres 공부를 하면서 그리고 datapage , memory에 관한 공부를 진행하면서 더욱 근본적인 컴퓨터에 대해서 공부의 필요성을 느꼈다. 어쩌면 컴퓨터에서 일어나는 일이기에 당연한 것이기도하다. 컴공과 출신이 아닌 내가 지금이라도 한 번 정리해야하는건 필연적인 과정이다. 리눅스에서 메모리는 시스템 성능에 매우 중요한 역할을 한다. 메모리 자원의 적절한 관리는 시스템 안정성과 성능을 유지하는 데 필수적이다. `free -h` 명령어는 시스템의 메모리 사용 상태를 확인하는 데 유용한 도구로, 사람이 읽기 쉽게 메모리 사용량을 보여준다. 여기서는 `free -h` 명령어의 출력 항목을 기반으로 리눅스 메모리 관리에 대해 설명한다. 1. Mem (물리적 메모리) 섹션 - total (전체 메모리) ..

DBA의 길 2024.10.20

Postgres - vacuum .. 은 메모리를 청소하지 않아

postgres 에서 MVCC(Multi Version Concurrency Control) 을 위해서 독특한 기능이 존재하는데 바로 VACUUM이다. 그런데 필자도 그렇고 주변에 vacuum에 대해서 오해하는 경우가 더러 있는 것 같았다. vacuum이 메모리를 청소하는가? 아니다 vacuum 과 메모리 확보는 상관관계지 원인과 결과가 아니다. 24.1.2. Recovering Disk Space In PostgreSQL, an UPDATE or DELETE of a row does not immediately remove the old version of the row. This approach is necessary to gain the benefits of multiversion concurren..

DBA의 길 2024.10.15

INDEX에 대하여 .. 조금 더 깊은 이야기 (Postgres 와 datapage)

INDEX란 .. 간단하게 이야기하면 하나의 테이블의 레코드와 그 레코드가 담긴 데이터 페이지의 매핑정보를 담아놓은 구조라고 볼 수 있다. 또한 랜덤 액세스는 인덱스가 제공하는 중요한 이점 중 하나이다. PostgreSQL에서 인덱스는 테이블의 특정 컬럼 값과 해당 값이 저장된 위치 정보를 연결해, 쿼리를 효율적으로 실행할 수 있게 돕는다. 이 정보를 통해 데이터베이스는 테이블 전체를 탐색하지 않고도 필요한 데이터를 빠르게 찾아낼 수 있다. 인덱스의 역할인덱스는 특정 컬럼의 값과 그 값이 저장된 데이터 페이지 번호와 페이지 내 위치(오프셋)를 연결한다. PostgreSQL에서는 이 정보를 TID(Tuple Identifier)라고 부르며, TID는 해당 데이터가 저장된 페이지 번호와 행의 위치(오프셋) ..

DBA의 길 2024.10.15

INDEX에 대하여, JOIN을 곁들인

JOIN은 데이터베이스에서 여러 테이블을 결합해 데이터를 조회하는 기능이다.테이블 간의 관계를 정의하고, 그 관계를 기반으로 필요한 데이터를 하나의 결과로 결합하는 역할을 한다.예를 들어, 고객 정보와 주문 정보를 각각 다른 테이블에서 조회하고자 할 때, JOIN을 사용하면 두 테이블의 데이터를 결합하여 고객별 주문 내역을 조회할 수 있다. JOIN은 여러 테이블을 동시에 처리해야 하므로, 테이블의 크기가 크거나 결합 조건이 복잡할 경우 성능에 부정적인 영향을 미칠 수 있다. 따라서, JOIN을 사용할 때는 성능을 최적화하기 위한 전략이 필요하다. 여기서 중요한 도구 중 하나가 바로 인덱스다.  인덱스는 특정 데이터를 빠르게 찾기 위한 도구로, 테이블의 특정 컬럼에 대해 데이터를 정렬된 구조로 저장하여,..

DBA의 길 2024.10.13

JOIN에 대하여

JOIN은 여러 테이블을 결합하여 데이터를 조회할 때 사용하는 SQL 연산이다. 기본적으로 여러 테이블을 함께 사용해 데이터를 처리하겠다는 의미로, 데이터베이스에서 테이블 간의 관계를 정의하고 그 관계를 기반으로 데이터를 조회하는 방식이다. 이 과정에서 테이블 간의 연결 고리를 통해 필요한 정보를 하나의 결과로 묶어내기 때문에, 복잡한 쿼리를 처리할 수 있다. JOIN의 핵심은 여러 테이블을 결합하여 데이터를 처리하는 데 있다. 예를 들어, 고객 정보가 저장된 테이블과 주문 정보가 저장된 테이블을 결합하여, 각 고객이 주문한 상품을 함께 조회하고 싶을 때 JOIN을 사용한다. 이 과정에서 데이터베이스는 두 테이블을 결합하여, 각 고객의 주문 정보를 조회할 수 있는 쿼리를 실행하게 된다. JOIN에는 다양..

DBA의 길 2024.10.13

Postgres - PG Architecture and Process

한달전 회사에서 postgres의 구조에 대해서 살펴보고 간단하게 설명해보는 시간을 가졌다. 알아도 아는 게 아닌것같은 묘한 IT 세계 정답은 기록뿐 그동안의 공부한것들을 다시한번 가벼운 마음으로 회상해보도록 하자  아래의 사진은 기존에 인터넷에서 돌아다니는 사진을 가져와봤는데   흠 마음에 들지않아 내가 임의로 그려보았다.  postmaster 는 client의 요청을 받을때마다 자신을 pork하여 postgres daemon을 생성한다. 이 daemon의 백그라운드 프로세스들(BG writer , Wal Writer , Check pointer , Archiver , Vacuum launcher , Logger ... ETC)  1. BG Writer (Back Ground Writer) - 버퍼 캐..

DBA의 길 2024.10.13

[Ansible] Ansible playbook을 이용하여 rhel7에서 wordpress 서버 가동하기!

오늘은 남이 작성한 playbook을 다운로드하여서 내가 원하는 용도에 맞게 수정하여 사용하는 방법을 실습해볼 것이다. 엔지니어로써 playbook을 작성하는 방법은 어느 정도 알지만 처음부터 온전히 작성하기란 쉽지가 않은 법이다. 따라서 오픈소스나 다른 사람이 잘 작성해놓은 혹은 뼈대를 갖춰놓은 구조를 갖다가 쓰는 방법을 사용하여 wordpress서버를 띄워보자 사실 이와 같은 방법도 playbook 지식과 리눅스에서 wordpress서버를 띄워본 경험들이 있어야 가능한 것이다! 결코 쉬운 방법은 아니라는 것 기본 환경설정 control node와 managed node 설정을 모른다면 아래를 참고하자 https://griffithh.tistory.com/107?category=985975 [Ansib..

Python & Automation 2022.02.28

[Ansible] 본격! Playbook 개념의 이해 그리고 공유폴더

본 포스팅에서 사용하는 실습컴퓨터(control node)는 다음 게시물에서 설정한 control node입니다. https://griffithh.tistory.com/107 [Ansible] Control node & Managed node 설치 및 ssh 접속 Ansible 실습환경 구성 virtualBox 를 이용한 가상 환경 Virtual Machine CPU : dual core memory : 2GB 제어 노드 구성 필수요소 ★ sshd 활성화 python 3.x 버전 interpreter 설치 pip 패키지 설치 Control node.. griffithh.tistory.com Playbook 헌터x헌터 라는 만화의 매력적인 악당 클로로 루실후르 는 특이한 능력을 갖고 있다. 바로 상대의 능..

Python & Automation 2022.02.24

[Ansible] Ansible 과 Docker 의 생명주기 (feat.playbook)

일반적인 Docker Application의 수명주기는 다음과 같다. 로컬 머신에 Docker image 생성 로컬 머신에서 Docker image를 registry(Docker hub)로 push registry에서 Docker image를 원격 호스트에서 get 시작시 container에 설정 정보를 전달하여 원격 호스트에서 Docker container를 시작한다. Ansible을 이용한 Docker Application 수명 주기는 다음과 같다. Docker image를 생성할 수 있는 Ansible playbook 작성 docker_image module 로컬 머신에서 Docker image를 생성하기 위해 playbook실행 로컬 머신에서 Docker image를 registry에 push d..

Python & Automation 2022.02.24