GCP - Professional Cloud Database Engineer 후기
·
Cloud/GCP
GCP 데이터베이스 지식을 확인하고 싶어서 도전했는데 합격했습니다! 준비부터 시험까지 후기를 공유하면서 시험 준비하시는 분들께 조금이나마 도움이 되고자 적게 되었습니다. 시험 기본 정보날짜: 2025년 3월 23일시간: 오전 11시시험 시간: 120분문제 수: 50문제방식: 온라인 감독비용: 원래 $200 정도인데, 바우처 덕분에 공짜.시간 타임은 되게 많아서 원하는 시간대에 골라서 하시면 되겠습니다:) 준비 과정시간 여부에 따라 준비를 두 가지로 나눴습니다. 본인 상황에 맞춰 참고해 보세요.정말 바빠서 정신없을 때 - 덤프 위주로 외우고 부족한 부분 채우기시간이 없다면 덤프가 진짜 구세주입니다. Udemy에서 할인할 때 덤프 문제를 사서 계속해서 풀어보며 반복적으로 외웠습니다. 가격은 14,000 ~ ..
AWS RDS Oracle 라이선스 변경 시 오류 해결
·
버그처리
문제 상황RDS 인스턴스에서 BYOL(Bring Your Own License)에서 LI(License Included)로 라이선스 변경 시 인스턴스 클래스 불일치 오류가 발생했습니다. 오류 메시지RDS does not support creating a DB instance with the following combination: DBInstanceClass=db.m6i.xlarge, Engine=oracle-se2, EngineVersion=19.0.0.0.ru-2022-01.rur-2022-01.r1, LicenseModel=license-included. For supported combinations of instance class and database engine version, see the..
PostgreSQL 파티셔닝과 성능 최적화 간단히 실습
·
Database & Data/PostgreSQL
PostgreSQL에서 대규모 데이터를 효율적으로 관리하고 쿼리 성능을 최적화하기 위해 파티셔닝을 활용하는 방법을 단계별로 테이블을 생성하고 데이터를 삽입하며 성능 비교를 수행한다. 초기 설정 및 데이터 생성먼저 practice_org라는 테이블을 생성하고 여기에 랜덤 데이터를 삽입한다. 그런 다음 인덱스를 생성한다.-- PostgreSQL에 접속psql -U postgres-- 테이블 생성CREATE TABLE practice_org ( id serial NOT NULL, g int NOT NULL);-- 랜덤 데이터 삽입INSERT INTO practice_org(g)SELECT floor(random() * 100)FROM generate_series(0, 10000000);-- 인덱스 ..
DBA로의 여정: 5개월 회고 - 2
·
회고 & 일상
클라우드와 DBA의 역할 분류 내용 배경 현재 회사에서는 Aurora를 사용하고 있지만, 인프라 관리는 따로 인프라 담당자님이 하고 있습니다. 세부 내용 Aurora와 같은 클라우드 기반 DB 서비스의 경우, 기존의 온프레미스 환경과는 달리 물리적인 서버 관리보다는 성능 최적화와 데이터 관리에 중점을 둘 필요가 있습니다. 결론 클라우드 환경에서의 DBA는 데이터 구조 최적화, 쿼리 튜닝, 백업 및 복구 전략 등의 역할에 더욱 집중해야 함을 깨달았습니다. 다만, Aurora의 관리는 중점은 누구인가?에 대해서는 의문이 들었습니다. DBA와 파이썬의 조화 분류 내용 배경 최근에는 DBA가 자동화 스크립트나 데이터 처리 작업을 위해 프로그래밍 언어를 활용하는 경우가 많아지고 있다고 합니다. 세부 내용 파이썬은..
DBA로의 여정: 5개월 회고 - 1
·
회고 & 일상
1년 반정도 데이터 매니저로 일을 하다가 최근 DBA로 경력을 시작한 지 5개월 차에 접어들었습니다. 회사에서 DBA로서의 첫 5개월을 마치며, 5개월이라는 시간이 그렇게 길지는 않지만, 1개의 서비스를 오픈하며 DBA로서 많은 것을 배우고, 다양한 고민을 해보며 성장하는 계기가 되었습니다. 아직 주니어라 많이 부족하지만, 이 과정에서 느낀 점과 배운 것들을 공유하고자 합니다. 어디까지나 개인적인 견해입니다. 개발자와의 협업 분류 내용 배경 신입 DBA로 들어왔을 때, 가장 먼저 느낀 점은 개발자와의 소통의 중요성이었습니다. 세부 내용 정규화와 성능의 균형, 테이블 구조 설계 시 개발자의 요구 사항과 DBA의 논리적 구조 설계 간의 균형을 찾는 과정에서 두 직군 간의 소통의 중요성을 느꼈습니다. 결론 서..
MySQL --login-path 옵션 이해하기
·
Database & Data/MySQL
MySQL의 --login-path 옵션은 MySQL 5.6.6. 버전부터 추가된 옵션으로, 서버에 로그인하기 위한 사용자 이름, 패스워드, 그리고 기타 연결 매개변수를 설정 파일에 저장하고, 이를 불러올 수 있게 해주는 매우 유용한 기능이다. MySQL --login-path의 중요성 MySQL에 접속할 때 일반적으로 사용자 이름과 패스워드를 직접 입력하는 방식을 사용한다. 그러나 이런 방식은 다음과 같은 문제점이 있다. 보안 문제 : 패스워드를 직접 입력하는 방식은 보안에 취약해진다. 특히, 스크립트나 명령 히스토리에서 패스워드가 노출될 수 있다. 편의성 문제 : 빈번하게 MySQL에 접속해야 할 경우 매번 패스워드를 입력하는 것은 매우 번거로울 수 있다. 그래서 문제점을 보완하기 위해 mysql_c..
MySQL SQL 쿼리 성능 향상: CASE WHEN vs UNION
·
Database & Data/MySQL
데이터베이스에서 쿼리를 수행할 때, 조건 판단 방식이 쿼리의 성능에 큰 영향을 미칠 수 있다. 이 포스팅에서는 WHERE 절에 CASE WHEN 구문을 사용하는 방식과 UNION을 사용하는 방식을 비교하며, 어떤 방식이 더 효율적인 쿼리 성능을 제공하는지 알아보려고 한다. 이 문제는 https://okky.kr/questions/389347 이 사이트에서 확인했다. 우선, SQL 쿼리에서 CASE WHEN 구문은 각 행을 하나씩 검사하면서 조건을 판단한다. 이로 인해 데이터베이스는 모든 행을 전체 검색(Full Scan)해야 하며, 이는 쿼리의 성능을 저하시킨다. SELECT F.friend_one, F.friend_two, F.requested_id, F.status FROM users U, frien..
MySQL 기본 PATH 설정하기
·
Database & Data/MySQL
MySQL 실행 파일이 시스템의 PATH 환경 변수에 포함되어 있어야 어느 위치에서든 MySQL을 실행할 수 있다. Mac에서 MySQL을 설치하면 일반적으로 /usr/local/mysql/bin 디렉토리에 MySQL 실행 파일이 위치해 있다. 이 경로를 PATH 환경 변수에 추가하면 된다. 다음은 터미널을 사용하여 이를 수행하는 방법이다. ~/.bash_profile 또는 ~/.zshrc 파일을 편집하려고 한다 (쉘에 따라 다름). 이를 위해 다음과 같은 명령을 실행한다: nano ~/.bash_profile # bash 쉘 사용 시 or nano ~/.zshrc # zsh 쉘 사용 시 꼭 nano 사용하지 않고 vim 등 상관 없음 다음 줄을 파일에 추가한다: export PATH=$PATH:/usr..
MySQL 랭킹 함수 모음
·
Database & Data/MySQL
ROW_NUMBER() ROW_NUMBER()는 SQL에서 제공하는 윈도우 함수 중 하나이다. 이 함수는 결과 집합의 각 행에 고유한 숫자를 할당한다. 할당하는 숫자는 1부터 시작하며, 주로 정렬된 데이터에 순위를 부여하는 데 사용된다. 기본적으로 ROW_NUMBER() 함수는 OVER() 절과 함께 사용되며, OVER() 절 내부에서 ORDER BY를 통해 행에 할당되는 숫자의 순서를 결정한다. 예를 들어, 특정 테이블에서 가격(price)을 기준으로 상품에 순위를 부여하고 싶다면 다음과 같이 쿼리를 작성할 수 있다: SELECT product_name, price, ROW_NUMBER() OVER (ORDER BY price DESC) AS rank FROM products; 위 쿼리는 product..
MySQL ON DUPLICATE KEY UPDATE 란?
·
Database & Data/MySQL
이 구문은 새로운 레코드를 삽입하려고 할 때, 이미 존재하는 고유 키(Unique Key) 또는 기본 키(Primary Key)에 대한 충돌이 발생하면, 지정된 열을 업데이트하는 기능을 한다. 예를 들어, users테이블이 있고, 각 사용자는 고유한 이메일 주소를 가지고 있다고 가정해 보자. 만약 새로운 사용자를 추가하려고 하는데, 해당 사용자의 이메일이 이미 테이블에 존재한다면, "ON DUPLICATE KEY UPDATE"를 사용해서 이미 존재하는 레코드를 업데이트하거나, 새로운 레코드를 추가하지 않고 기존 레코드를 유지할 수 있다. INSERT INTO users (email, age) VALUES ('test@example.com', 20) ON DUPLICATE KEY UPDATE age=VAL..