일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- kotlin spring
- 정보처리기사 실기
- mysql 튜닝
- Elasticsearch
- 코틀린 코루틴의 정석
- 티스토리챌린지
- Kubernetes
- APM
- 공부
- PETERICA
- aws
- AI
- IntelliJ
- Java
- Spring
- minikube
- 오블완
- kotlin coroutine
- AWS EKS
- 정보처리기사 실기 기출문제
- kotlin querydsl
- Pinpoint
- MySQL
- 기록으로 실력을 쌓자
- CKA
- kotlin
- Linux
- CKA 기출문제
- CloudWatch
- 정보처리기사실기 기출문제
- Today
- Total
목록Database/MySQL (16)
피터의 개발이야기
ㅁ 들어가며ㅇ JPA를 사용 중인 프로젝트에서 중복체크 기능을 구현하면서 Exists와 Count의 성능차이를 고민하였다.ㅇ [QueryDSL] fetchFirst()와 fetchOne()의 차이을 정리하면서 Count vs Limit vs Exists 성능 차이에 대해서 정리하였다.ㅇ JPA exists 쿼리 성능 개선을 보고, 이해한 부분을 정리하였다. ㅁ성능 비교ㅇ 대량의 데이터(약 5600만 건)가 있는 테이블에서 COUNT와 EXISTS의 성능을 비교해보면 2배에 가까운 성능 차이가 나타났다.ㅇ 데이터가 1억 건 이상으로 늘어나면 이 차이는 더욱 벌어질 것이다.COUNT: 9.079초EXISTS: 5.278초 ㅁ 원인분석ㅇ 이러한 성능 차이의 원인은 각 쿼리의 동작 방식에 있다- EXISTS: ..
ㅁ 들어가며ㅇ DBA인 동료와 MySQL의 SSL 통신 방법에 대해서 이야기 나누면서 공부한 내용이다.ㅇ MySQL 문서와 AWS 문서를 보며 공부하였다. MySQL에서 TLS 연결은 어떻게 설명하는가?ㅁ MySQL 참조 문서 링크8.3 Using Encrypted Connections 8.3.1 Configuring MySQL to Use Encrypted Connections 8.3.2 Encrypted Connection TLS Protocols and Ciphers 8.3.3 Creating SSL and RSA Certificates and Keys 8.3.4 Connecting to MySQL Remotely from Windows with SSH 8.3.5 Reusing SSL Sessio..
ㅁ 들어가며 PostgreSQL과 MySQL의 차이점을 알아보았다. 아래의 글들을 읽고 정리해보았다. ㅇ AWS - MySQL과 PostgreSQL의 차이점은 무엇인가요? ㅇ 우아한형제들 - Aurora MySQL vs Aurora PostgreSQL ㅁ DBMS 랭킹 PostresSQL의 인기는 날로 높아지고 있는 추세이다. ㅁ PostgreSQL VS MsSQL 비교 카테고리 MySQL PostgreSQL 데이터베이스 기술 순수 관계형 DBMS 객체 관계형 DBMS 기능 보기, 트리거 및 프로시저와 같은 DB 기능을 제한적으로 지원 구체화된 뷰, INSTEAD OF 트리거, 여러 언어의 저장 프로시저와 같은 최고급 데이터베이스 기능을 지원 데이터유형 숫자, 문자, 날짜 및 시간, 공간, JSON 기하..
ㅁ 방법 요약 # root 로컬 접속 mysql -u root -p # 호스트 접속(도메인) mysql -h peterica.iptime.org -P 3307 -u {user} -p # 호스트 Database 접속 mysql -h peterica.iptime.org -P 3307 -u {user} -p {database_name} # 호스트 접속(ip) mysql -h 127.0.0.1 -P 3307 -u {user} -p ㅇ대문자 구분해야 주의!! -P는 대문자다. ㅁ들어가며 사용자 비밀번호 바꾸려면 root로 들어가야 하는데, 맨날 까먹어서 정리해 놓음. docker로 만들어 놔서 docker -> 컨테이너 -> mysql cli로 접속해야 한다. update... [Mysql] brew mysql ..
ㅁ 개요 이전 글인 SQL 연습을 위한 실습 사이트에 대해서 작성하였다. 이번에는 로컬 Docker에서 MySQL 환경을 구성하고 샘플 데이터를 적재하는 과정을 정리하였다. MySQL 5.7 설치과정은 [MySQL] 실습환경 구성하기, Mysql Docker 설치, 5.7을 참조하세요. ㅁ MySQL 설치 $ docker run -d -p 3308:3306 \ # 로컬 3308포트를 컨테이너 3306포트로 맴핑 -e MYSQL_ROOT_PASSWORD=strong-password \ # 비밀번호 설정 -v /Volumes/500GB/data/mysql80:/var/lib/mysql \ # 컨테이너의 mysql폴더를 로컬에 마운트하여 데이터가 삭제되는 것을 예방한다. --name mysql_80 mysql..
ㅁ 들어가면서 MySQL의 용량을 분석하기 위한 쿼리를 정리하였습니다. update... 댓글의 질문 때문에 확인한 결과, 테이블이 뷰인 경유 용량과 건수는 null로 나타난다. ㅁ 데이터베이스 용량 확인 SELECT table_schema AS 'Database', ROUND(SUM(data_length+index_length)/1024/1024, 1) AS 'Size(MB)' FROM information_schema.tables WHERE table_schema not in ('sys', 'mysql', 'information_schema', 'performance_schema') GROUP BY table_schema ORDER BY 2 DESC; ㅁ 전체 용량 확인 SELECT ROUND(SUM..
ㅁ 개요 MySQL을 공부하면서 대용량 샘플 데이터가 필요할 때가 있습니다. 이를 위해 MySQL 홈페이지에서 샘플데이터를 제공합니다. 이번 글에서는 샘플데이터의 종류와 설치 방법에 대해서 정리해 보았습니다. ㅁ Example Databases Title DB Download Guide Page PDF employee data (large dataset, includes data and test/verification suite) GitHub View US Ltr | A4 world database TGZ | Zip View US Ltr | A4 world_x database TGZ | Zip View US Ltr | A4 sakila database TGZ | Zip View US Ltr | A4 ai..
ㅁ 개요 ㅇ 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를 최소화하기 위해 데이터베이스 엔진은 디스크에서 읽은 블록을 캐시하려고 합니다. 즉, 다음에 데이터베이스가 동일한 데이터 블록을 필요로 할 때 디스크가 아닌 메모리에서 해당 블록..