나는 PostgreSQL을 homebrew를 통해서 설치하였다. nano /opt/homebrew/var/postgresql@14/pg_hba.conf이 파일을 열면 아래 부분에 아래와 같이 기본적으로 설정되어있다.# TYPE DATABASE USER ADDRESS METHOD# "local" is for Unix domain socket connections onlylocal all all trust# IPv4 local connections:host all all 127.0.0.1/32 ..
이 글은 인프런의 지식 공유자 박재성님의 강의를 듣고 개인적으로 정리하는 글임을 알립니다.조회 전략데이터를 조회할 때 주로 사용하는 전략이 Cache Aside 전략이다. Look Aside 전략 또는 Lazy Loading 전략이라고 부른다. 캐시에 데이터가 있을 경우 (= Cache Hit) 캐시에 데이터가 없을 경우 (= Cache Miss) Cache Aside 전략은 캐시(Cache)에서 데이터를 확인하고, 없다면 DB를 통해 조회해오는 방식이다. 쓰기 전략Write Around 전략Cache Aside 전략이 데이터를 어떻게 조회할 지에 대한 전략이었다면, Write Around 전략은 데이터를 어떻게 쓸지(저장, 수정, 삭제)에 대한 전략이다. Write Around 전략은 Cache ..
이 글은 인프런의 지식 공유자 박재성님의 강의를 듣고 개인적으로 정리하는 글임을 알립니다.RedisOracle, MySQL, PostgreSQL 등 RDB는 디스크에 데이터를 저장하기 떄문에 상대적으로 느리다.하지만 NoSQL인 레디스(Redis)는 인메모리(in-memory)에 모든 데이터를 저장한다. 그래서 데이터의 처리 성능이 굉장히 빠르다. NoSQL은 아래와 같이 Key와 Value 형태로 데이터를 저장하는 데이터베이스이다. Redis 네이밍 컨벤션여러가지 컨벤션이 존재하지만 콜론(:)을 이용해서 계층적으로 의미를 구분해서 사용한다는 것을 꼭 기억해야 한다.users:100:profile : 사용자들(users) 중에서 PK가 100인 사용자(user)의 프로필(profile)products:..
이 글은 인프런의 MySQL 성능 최적화 입문/실전 (SQL 튜닝편) (박재성) 강의를 듣고 개인적으로 정리하는 글임을 알립니다.유저 이름으로 특정 기간에 작성된 글 검색기본 테이블 생성DROP TABLE IF EXISTS posts;DROP TABLE IF EXISTS users;CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);CREATE TABLE posts ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, create..
이 글은 인프런의 MySQL 성능 최적화 입문/실전 (SQL 튜닝편) (박재성) 강의를 듣고 개인적으로 정리하는 글임을 알립니다.많은 데이터를 조회하는 단건 쿼리데이터를 조회할 때 한 번에 너무 많은 데이터를 조회하는 건 아닌지 체크LIMIT, WHERE문 등을 활용해서 한 번에 조회하는 데이터의 수를 줄이는 방법을 고려 테이블 생성DROP TABLE IF EXISTS users; # 기존 테이블 삭제CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), age INT); 100만건의 랜덤 데이터 삽입-- 높은 재귀(반복) 횟수를 허용하도록 설정-- (아래에서 생성할 더미 데이터의 개수와 맞춰서 작성하면 된다...
이 글은 인프런의 MySQL 성능 최적화 입문/실전 (SQL 튜닝편) (박재성) 강의를 듣고 개인적으로 정리하는 글임을 알립니다.실행 계획(Explain) 개념옵티마이저가 SQL문을 어떤 방식으로 어떻게 처리할 지를 계획한 걸 의미한다.이 실행 계획을 보고 비효율적으로 처리하는 방식이 있는 지 점검하고, 비효율적인 부분이 있다면 더 효율적인 방법으로 SQL문을 실행하게끔 튜닝을 하는 게 목표다. 실행 계획(Explain)은 데이터베이스가 SQL 쿼리를 실행할 때 어떤 경로로 데이터에 접근하고 처리하는지를 보여주는 일종의 “설계도”라고 할 수 있다.즉, 쿼리가 어떻게 실행될지에 대한 세부적인 계획을 제공한다. 쉽게 설명하자면 데이터베이스에 어떤 SQL 쿼리를 보내면, 데이터베이스는 그 쿼리를 실행할 때 최..
이 글은 인프런의 MySQL 성능 최적화 입문/실전 (SQL 튜닝편) (박재성) 강의를 듣고 개인적으로 정리하는 글임을 알립니다.MySQL 아키텍쳐MySQL의 아키텍처를 간단하게 표현하자면 위와 같다.클라이언트가 DB에 SQL 요청을 보낸다. MySQL 엔진에서 옵티마이저가 SQL문을 분석한 뒤 빠르고 효율적으로 데이터를 가져올 수 있는 계획을 세운다. 어떤 순서로 테이블에 접근할 지, 인덱스를 사용할 지, 어떤 인덱스를 사용할 지 등을 결정한다.(옵티마이저가 세운 계획은 완벽하지 않다. 따라서 SQL 튜닝이 필요하다.)옵티마이저가 세운 계획을 바탕으로 스토리지 엔진에서 데이터를 가져온다. (DB 성능에 문제가 생기는 대부분의 원인은 스토리지 엔진으로부터 데이터를 가져올 때 발생한다. 데이터를 찾기가 어..
2024.02.22 - [데이터베이스/기타] - Mac에서 Oracle(XE) + Mysql + DBeaver 설치 Mac에서 Oracle(XE) + Mysql + DBeaver 설치 아래의 모든 명령어은 Homebrew가 설치되어있다고 가정한다. DBeaver 설치 터미널에서 아래의 명령어를 입력하면 특별한 오류가 나지 않는이상 설치는 완료된다. brew install --cask dbeaver-community 이후 rebugs.tistory.com Scott 사용하기 관리자 권한으로 sqlplus 접속 docker exec -it oracle sqlplus SCOTT 계정 생성 및 권한 부여 CREATE USER scott identified by tiger; -- 한줄씩 입력해주세요. GRANT ..