| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
- PETERICA
- kotlin coroutine
- Spring
- Java
- go
- APM
- MySQL
- SRE
- AI
- 기록으로 실력을 쌓자
- golang
- 티스토리챌린지
- kotlin
- Linux
- CKA 기출문제
- minikube
- AWS EKS
- 정보처리기사 실기 기출문제
- aws
- 코틀린 코루틴의 정석
- Kubernetes
- tucker의 go 언어 프로그래밍
- 컨텍스트 엔지니어링
- Pinpoint
- 오블완
- CKA
- CloudWatch
- 공부
- 바이브코딩
- kotlin querydsl
- Today
- Total
목록Database (37)
피터의 개발이야기
ㅁ 개요 쿼리를 튜닝할 때에 가장 큰 요소는 색인데이터를 최소화 하는 방법이 있습니다. 이번 글에서는 EXISTS 구문을 통해서 불필요한 IO를 줄여 쿼리를 튜닝하는 방법을 정리해 보았습니다. ㅁ 일러두기 ㅇ 쿼리 테스트를 위해 [MySQL] 실습환경 구성하기에서 생성한 MySQL이며, 버젼은 5.7.37입니다. ㅇ categories(8 row)에 속한 products(77 row) 테이블을 샘플로 하였습니다. ㅁ EXISTS 연산자란? EXISTS 연산자는 서브쿼리에 데이터가 존재하는지 체크하고 존재할 경우 TRUE를 반환합니다. EXISTS 연산자는 IN 연산자와 비슷한 용도로 사용할 수 있으며, IN 연산자는 비교할 값을 직접 대입할 수 있지만 EXISTS 연산자는 서브쿼리만 사용할 수 있습니다...
ㅁ 개요 ㅇ MySQL의 좋은 자료가 있다면 관련 정보를 목차 형태로 정리 하기 위한 글이다. ㅁ MySQL 최적화 ㅇ Google Cloud MySQL 최적화 ㅁ MySQL쿼리 튜닝 ㅇ MySQL에서의 LIKE vs INSTR() ㅇ Which is faster — INSTR or LIKE?
ㅁ 개요 MySQL의 문자열에서 특정문자열의 검색을 위해서 LIKE 함수를 많이 이용합니다. 상황에 따라서 INSTR이 더 빠른 경우도 있는데, 구체적으로 INSTR, LOCATE, LIKE, REGEXP들의 속도차이가 얼마인지, 다시 말해 상황에 따라 어떤 것이 더 효율적인지 분석한 내용을 정리하였습니다. ㅁ 테스트 방법 a-z의 문자열에서 처음, 중간, 끝의 문자열 검색 속도를 비교 하기 위해 테스트를 진행하였습니다. [MySQL] 실습환경 구성하기에서 생성한 MySQL이며, 버젼은 5.7.37입니다. ### INSTR ### # 16 s 529 ms SELECT BENCHMARK(50000000,INSTR('abcdefghijklmnopqrstuvwxyz','abc')) # 1 m 24 s 146 ..
ㅁ 들어가며 MySQL DB에서 Select 쿼리가 늦어지는 이유에 대해서 정리하였습니다. 1. 시스템 리소스를 초과하는 경우 MySQL DB가 처리 가능한 워크로드 용량을 초과하여 CPU 사용량이 많거나, 메모리가 부족하게 됩니다. CPU 사용률과 가용 메모리를 항상 모니터링하는 것이 좋습니다. 가끔 CPU 스파이크가 발생하는 것은 정상이지만 오랜 기간 동안 지속적으로 많은 CPU가 사용되면 SELECT 쿼리가 느리게 실행될 수 있습니다. SELECT 쿼리는 디스크 탐색으로 인해 실행 속도가 저하될 수 있습니다. 디스크 I/O를 최소화하기 위해 데이터베이스 엔진은 디스크에서 읽은 블록을 캐시하려고 합니다. 즉, 다음에 데이터베이스가 동일한 데이터 블록을 필요로 할 때 디스크가 아닌 메모리에서 해당 블록..
ㅁ 개요 MySQL을 사용하면서 InnoDB에 대해서 잘 이해하지 못한 부분이 있어서 공부를 하게 되었다. 백엔드 입장에서 시스템 포퍼먼스를 위해 캐싱기능을 이용하는데, InnoDB도 Memory를 이용한 캐싱처리를 통해 DB 포퍼먼스를 향상 시켰음을 알게 되었다. 이번 글은 InnoDB의 구조를 이해하고 세부적인 처리 방식에 대해서 정리하였다. ㅁ InnoDB의 구조 ㅇ Buffer Pool를 이용한 성능 향상 Buffer Pool은 MySQL의 DB Engine인 InnoDB가 Table Caching 및 Index Data Caching을 위해 이용하는 Memory 공간이다. Buffer Pool 크기가 클수록 상대적으로 Disk에 접근하는 횟수가 줄어들기 때문에 DB의 성능이 향상된다. ㅇ Mem..
ㅁ 개요 이전 글인 SQL 연습을 위한 실습 사이트에 대해서 작성하였다. 이번에는 로컬 Docker에서 MySQL5.7 환경을 구성하고 샘플 데이터를 적재하는 과정을 정리하였다. MySQL 8.0 설치과정은 [MySQL] Mysql Docker 설치, 8.0을 참조하세요. ㅁ MySQL 설치 $ docker run -d -p 3307:3306 \ # 로컬 3307포트를 컨테이너 3306포트로 맴핑 -e MYSQL_ROOT_PASSWORD=strong-password \ # 비밀번호 설정 -v /Volumes/500GB/data/mysql57:/var/lib/mysql \ # 컨테이너의 mysql폴더를 로컬에 마운트하여 데이터가 삭제되는 것을 예방한다. --name mysql_57 mysql:5.7 ㅇ 로..
ㅁ 개요 SQL 공부를 하면서 공부환경을 위해 MySQL를 설치하고 데이터도 세팅하기에는 버거운 점이 있다. 그래서 SQL 공부를 도와줄 수 있는 사이트를 알아보았다. 우선 DB없이 SQL을 연습할 수 있는 튜트리얼 사이트 w3schools, sql fiddle를 알아보고, SQL 문제를 풀어볼 수 있는 사이트에 대해서 정리하였다. Tutorial ㅁ w3schools ㅇ SQL의 기본적인 문법을 공부할 수 있는 사이트이다. ㅇ SQL Tutorial의 카테고리를 통해 SQL의 다양한 문법을 연습할 수 있다. ㅇ URL: https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_all ㅇ 위 링크에서 유통업체 관련 8개의 테이블과 샘플 데이터를 제..
ㅁ 개요 하루의 경험을 기록해야겠다는 모티브가 되어준 이동욱님의 QUERYDSL의 노하우가 담긴 영상이 있어서 정리를 하였다. 객체 지향적 JPA를 통해 SQL문 작성에서 자유로워 질 수는 있지만, 실질적 데이터베이스 성능을 위해서는 real SQL도 고려해야한다. 이 영상에서 JPA의 장점과 단점을 고려하여 DB 성능을 어떻게 구현할 수 있을 지에 대한 노하우를 얻을 수 있었다. ㅁ 목차 ㅁ extends / implements 사용하지 않기 ㅁ 동적 쿼리 BooleanExpression ㅁ exist 메소드 금지 ㅁ Cross Join 회피 ㅁ Entity 보다는 Dto 를 우선 ㅁ Group By 최적화 ㅁ 커버링 인덱스 ㅁ 커버링 인덱스 조회는 나눠서 진행 ㅁ 마무리
DBeaver에서 쿼리작업 시 다량의 쿼리를 실행 해야 하는 경우가 있다. 다량의 쿼리를 순차적으로 실행시켜주는 단축키가 있다. 일별 파티션 작업 시 다중 SQL수행으로 도움을 받았다. 1. 실행할 쿼리들을 드래그한다. 2. Alt + x 를 클릭하면 쿼리들 순차적으로 실행한다. 3. Statistics를 보면 실행된 쿼리 수와 수행시간, 끝난 시간을 확인 할 수 있다. 4. 수행 결과는 Result탭에서 확인 할 수 있다. ㅁ 함께 보면 좋은 사이트 ㅇ [DBeaver] 필수 단축키 [DBeaver] 필수 단축키 ㅁ DBeaver 필수 단축키 ㅇ Ctrl + Enter : 현재 SQL문 실행 ㅇ Crt + Shift + F : 선택된 SQL문 자동정리 ㅇ Alt + ↑/↓ : 이전 / 다음 쿼리로 이동..
ㅁ 개요 상황에 따라 GUI가 아닌 터미널에서 SQL 작업을 하게 되는 경우가 있다. 이런 경우 CLI를 통해 직접 SQL를 편집하고 실행하는데, SQL 파일을 통해 편집하여 실행하면 실수나 기존 SQL를 보존하여 더욱 편리하다. 이번 글에서는 맥에 CLI를 설치하고 SQL 파일을 실행하는 과정을 정리하였다. ㅁ Brew를 이용한 mysql과 mysql-client 설치 ㅇ brew 명령어 사용 시 자동완성기능을 이용하면 효율적이다. ㅇ brew install mysql 입력 후 탭 키를 누르면 위의 이미지처럼 install 가능한 목록을 확인 할 수 있다. ㅇ mysql과 mysql-client를 선택한 후 커멘드 실행하면 install이 시작된다. ㅁ 설치 확인 ㅇ 설치 확인을 위해 mysql --v..