본문 바로가기

분류 전체보기

(23)
PostgreSQL vs MySQL - 1. 개요 글을 작성하기 전에 OpenSource RDBMS 시장의 2위 PostgreSQL 과 1위 MySQL을 비교해보겠습니다. 두 DBMS 모두 일반적으로 사용 가능한 DB로 개인적인 용도로 사용한다면 특이사항 없이 사용 가능할 것입니다. 해당 포스팅은 DBA 입장에서 두 DB Operation 시의 차이점과 고려사항들을 시리즈로 정리하기 전 간단한 개요의미의 포스팅입니다. MySQL과 PostgreSQL은 새로운 버전이 릴리즈됨에 따라 포스팅할 내용들의 개선점이 적용되었을 수 있으므로, 댓글을 통해 정보 공유해주시면 감사하겠습니다. PostgreSQL vs MySQL (OpenSource RDBMS) 대부분의 학부생들이 처음 접할 수 있는 RDBMS는 MySQL일 것이다. 작성자도 가장 유명하고 접하기 쉬운..
pgday.Seoul 2022 후기 글을 작성하기 전에 해당 포스팅은 개인적으로 참석한 pgday.Seoul 2022 의 후기로 발표 세션들을 들으며 정리한 내용, 개인적으로 생각했던 내용들이 포함되어 있습니다. http://pgday.postgresql.kr/ 에 발표자료가 상세 세션 정보 및 발표자료들이 공유되어 있습니다. 저는 단순한 참여자로 혹시 Pgday 지침에 어긋나는 내용이 있다면 댓글로 달아주시면 수정 하거나 비공개 처리 하도록하겠습니다. Pgday란?? 세계 여러곳에서 개최되는 PostgreSQL 행사로 PostgreSQL Day에서 따온것으로 추측된다. 우리나라에서는 7년동안 개최되었으며 코로나로 인해 온라인으로 진행하였다가 오프라인으로 진행되었다. 서로 소속된 회사에 관계없이 자유로운 분위기 속에서 PostgreSQL에..
[Real MySQL 8.0] 02. 설치와 설정 & 03. 사용자 및 권한 글을 작성하기 전에 Real MySQL 8.0 (위키북스/ 백은빈,이성욱 지음)을 읽어보고 Real MySQL 8.0 + 기존의 알고 있던 내용을 나름대로 정리하고자 합니다. 본 서적에 대한 정리 외에도 MySQL의 특징을 개인적으로 학습한 오픈소스 DBMS인 PostgreSQL와 비교할만한 점을 추가하여 포스팅할 예정이니 잘못기입된 내용이 있다면 자유롭게 댓글 부탁드립니다. Real MySQL 8.0 02장 설치와 설정 2.1 MySQL 서버 설치 OS 종류에 따라 매우 다양한 방법을 통해 설치 할 수 있으므로 해당 포스팅에서는 다루지 않음 작성자가 주로 사용했던 리눅스에서는 아래와 같은 방법등을 통하여 설치하였음 - Tar 파일 압축 해제 방식( 바이너리 파일 압축 해제) - 패키지로 설치 ( Y..
MySQL System Architecture - 2. Memory MySQL System Architecture - 2. Memory Overall MySQL 서버에서 사용하는 메모리 구조는 크게 2가지로 분류할 수 있다. 1.글로벌 메모리 영역(Shaerd Memory) - MySQL 내 모든 쓰레드들이 사용하는 공유 메모리 영역 - MySQL 서버가 시작될때 OS에 의해 할당 되며, 설정 변경 시 재기동이 필요 2.세션 메모리 영역(Local Memory) - Foreground Thread 마다 할당되는 메모리 - 쓰레드 마다 할당되는 메모리로 커넥션 갯수와 연계하여 설정필요 - Query를 수행하는 시점에서 할당됐다고 해제되는 메모리 영역이 존재 글로벌 메모리 영역 Buffer Pool - 각 세션들이 사용할 데이터들을 디스크에서 가져와 저장하는 영역 - Dat..
MySQL System Architecture - 1. Process/Thread 글을 작성하기 전에 대부분의 RDBMS는 아키텍처 부분에서 많은 공통점을 가지고 있습니다.데이터를 궁극적으로 디스크에 저장하지만, 데이터베이스의 일부를 메모리에 저장하고 유지함으로써 더 빠른 성능을 유지할 수 있도록 합니다. 또한 ACID 를 충족하기 위해 대부분 WAL 기법을 사용하고 있습니다.이 글은 MySQL System Architectire 를 PostgreSQL과 비교를 통하여 정리해보겠습니다. MySQL System Architecture (PostgreSQL과 비교를 통하여) MySQL의 시스템 아키텍처는 데이터베이스(MySQL) 엔진과 스토리지 엔진으로 분류한다. MySQL 엔진에서 쿼리의 수행을 담당하고, 그 쿼리에 결과에 따른 데이터 저장의 부분은 스토리지 엔진에서 담당한다. Post..
PostgreSQL 파티션의 목적 및 프루닝 조건 글을 작성하기 전에 PostgreSQL은 버전에 따른 파티셔닝 구성의 발전이 이루어져 왔으며 11버전에 이르러서야 파티션 테이블의 장점이 도드라졌습니다. 파티셔닝에 대해서는 추후 포스팅에 상세하게 정리할 예정이지만, 파티션 구성의 목적 및 프루닝 조건에 특이점을 미리 포스팅에 정리하겠습니다. PostgreSQL 파티션의 목적 및 프루닝 조건 작성자가 운영하는 서버들에 대해서는 50GB 이상의 단일 테이블의 경우 파티션테이블로 전환을 검토하고 있다. 파티셔닝 구성의 제약조건은 분명히 있지만 장점이 많기 때문에 전환을 검토하는 것인데 이부분을 관리적 차원, 성능적 차원으로 정리하려고 한다. 관리적 차원의 파티셔닝의 장점 - 대용량 테이블을 파티션으로 전환함으로써 각각의 테이블에 대한 관리를 용이하게 함 - ..
데이터베이스 고가용성(High Availability) 글을 작성하기 전에 작성자는 PostgreSQL/EDB PAS를 주로 이용하고 있어 PostgreSQL/EPAS 관련 정보가 다른 DBMS 보다 많이 포함될 수 있습니다. PostgreSQL 고가용성 부분은 https://postgresql.kr/blog/postgresql_ha.html 페이지에서 추가적으로 확인이 가능하며 데이터베이스의 고가용성에 대해 정리해보겠습니다. 데이터베이스 고가용성(High Availability) 데이터베이스 고가용성이란 99.999%와 같이 수치 상으로 표현되기도 하지만, DB서버의 장애 상황에서 다운타임을 최소화 하기 위한 방안들을 가르키는 경우가 많다. 특히 데이터베이스의 경우 기업에서 필요한 데이터를 담고 있어 고가용성이 필수이기 때문에 다양한 방식, 다양한 솔루션이..
PostgreSQL Manual Vacuum Tuning 글을 작성하기 전에 Vacuum은 PostgreSQL의 MVCC 구현 방식으로 인해 필수적이며, 기본적으로 Manual Vacuum 외에 autovacuum process에 의해 수행됩니다.(off로 설정되어 있어도 autovacuum_freeze_max_age가 넘어서게 되면 자동 수행) 그러나 작성자가 운영하는 서비스에서는 autovacuum parameter 변경을 통해서 빈공간회수와 Transaction ID Wraparound(TXID 겹침)이 해결 되지 않아 manual Vacuum 을 수행하였는데 그로 인한 Vacuum의 부하와 그를 줄이는 방법에 대해 정리하겠습니다. 추후 Vacuum 장애 History 포스팅에 해당 포스팅을 링크로 달아 놓겠습니다. PostgreSQL Manual Vac..
PostgreSQL 백업/복구 제약사항 검토(EPAS와 비교하여) 글을 작성하기 전에 MongoDB Enterprise Edition 에서는 OpsManager등을 활용하여 시점복구가 가능하지만 MongoDB Community 버전에서는 데이터 백업은 Dump로만 수행 가능하여 시점복구(Point in Time Recvoery)가 불가하다. (그러나 MongoDB는 대부분 ReplicaSet 과 Sharding 환경으로 구성되어 복구가 필요할 확률이 적을 수 있음) 이와 같은 사례를 검토하기 위해 PostgreSQL(오픈소스) 와 EPAS(상용) 에 대한 백업/복구 제약사항을 검토하였다. PostgreSQL 백업/복구 제약사항 검토(EPAS와 비교하여) pg_dump vs 아카이브 로그 방식 - PostgreSQL & EPAS는 pg_dump를 활용해 백업을 받을 수 ..
PostgreSQL & EPAS Client tool - psql 활용 PostgreSQL & EPAS Client tool - psql 활용 개발업무 시 pgadmin, dbeaver , workbench 등과 같은 GUI 기반 클라이언트 툴도 자주 활용 하지만, PostgreSQL & EPAS에서 리눅스 상의 CLI Client 도구인 psql이 매우 편리하게 구성되어 있어 이 내용을 소개한다. (mysql에서는 자동완성 기능을 제공하지 않으며 sqlplus, tbsql 등 에서는 컬럼길이를 지정해야 하므로 매우 불편) 자동 완성 기능 psql 접속 시 다양한 구문에 대한 자동완성 기능을 제공한다. SQL 구문, 내부 파라미터등의 일부를 기술하고 Tab버튼을 누르게 되면 자동완성이 되고, 리스트들을 출력 해준다. 직관적인 오브젝트 확인 psql 접속 시 간단한 명령어를 ..