일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- AI
- kotlin
- tampermonkey
- kotlin querydsl
- CKA 기출문제
- Kubernetes 자격증
- PETERICA
- kotlin coroutine
- MySQL
- AWS EKS
- APM
- 정보처리기사 실기
- Java
- minikube
- Spring
- 기록으로 실력을 쌓자
- Kubernetes
- Pinpoint
- CKA
- aws
- mysql 튜닝
- 코틀린 코루틴의 정석
- Linux
- CloudWatch
- 정보처리기사 실기 기출문제
- 정보처리기사실기 기출문제
- 공부
- IntelliJ
- Elasticsearch
- kotlin spring
- Today
- Total
목록전체 글 (740)
피터의 개발이야기
ㅁ SLA란 SLA는 Service Level Agreement의 약자로, 서비스 수준 계약으로 변역된다. SLA는 공급자가 고객에게 제공하는 서비스 수준을 명시하는 아웃소싱 및 기술 공급계약이다. 이 계약에는 가동 시간, 납품시간, 응답시간 및 장애대응시간 등의 지표를 포함한다. SLA에 명시된 계약 조건에 충족되지 않은 경우, 그 조치 방안도 함께 명시되고 있다. ㅁ SLA의 공통적인 요소 계약 개요 계약 개요에는 SLA의 시작 날짜와 종료 날짜, 관련 당사자의 세부 정보, 포함된 서비스에 대한 개요가 수록됩니다. 서비스 설명 서비스 설명에서는 SLA에 따라 제공되는 모든 서비스를 개략적으로 설명합니다. 또한 총 이행 시간, 기술 및 애플리케이션, 유지 관리 작업 일정, 프로세스 및 절차와 같은 정보..
ㅁ 개요 ㅇ 회사 업무 중 고객에게 재공되는 Jar를 빌드하는 Jenkins 작업이 있었다. 빌드가 완료된 Jar는 scp를 통해 로컬로 옮겨서 반입요청 메일을 보내는 작업이 있는데, 이 과정을 개선하기로 하였다. 이를 위해 Jenkins에서 바로 다운로드 받는 방법을 정리하였다. ㅁ 젠킨스 테스트 환경 ㅇ 젠킨스 테스트 환경은 [Jenkins] Docker 기반 Jenkins quick start examples을 이용하였습니다. ㅁ 샘플 item 생성 ㅇ fileArchive라는 파이프라인 item을 생성하였습니다. pipeline { agent any stages { stage('Download') { steps { sh 'echo "artifact file" > generatedFile.txt' ..
ㅁ 개요ㅇ 파티션 작업 시 필요한 쿼리를 정리하였습니다. ㅁ 파티션 테이블 리스트 조회SELECT distinct TABLE_NAMEFROM INFORMATION_SCHEMA.PARTITIONSWHERE PARTITION_NAME is not null ; ㅁ 파티션 테이블별 용량 조회SELECT TABLE_SCHEMA, -- 스키마 TABLE_NAME, -- 테이블명 PARTITION_NAME, -- 파이션 이름 PARTITION_DESCRIPTION, -- 파이션 설명 TABLE_ROWS, -- 테이블 row 건수 ROUND(DATA_LENGTH/(1024*1024),2) AS 'D..
ㅁ 개요 Docker 호스트 시스템에서 리소스 사용을 제한해야 하는 경우가 많습니다. 이번 글에서는 Docker 컨테이너의 메모리 및 CPU 제한을 설정하는 방법을 정리하였습니다. ㅁ 메모리 제한하기 $ docker run -m 512m nginx ㅇ 컨테이너가 사용할 수 있는 메모리를 512MB로 제한합니다. $ docker run -m 512m --memory-reservation=256m nginx ㅇ 예약이라는 소프트 제한을 설정할 수도 있습니다. ㅇ docker가 호스트 시스템의 메모리가 부족한 경우를 대비하여 예약 활성화를 할 수 있습니다. ㅁ CPU 제한하기 ㅇ 기본적으로 호스트 시스템의 컴퓨팅 성능에 대한 액세스는 무제한입니다. ㅇ CPUs 매개변수를 사용하여 CPU 제한을 설정할 수 있습..
ㅁ 들어가며 Redis의 비밀번호를 설정하는 방법을 정리하기 위해 docker redis를 설치하여, 생성된 Container 안에 접속하여 비밀번호 설정하는 과정을 정리하였습니다. ㅁ Redis 설치 [Redis] Docker Redis 설치하기에 따라 설치하였습니다. # redis docker 설치 $ docker run --name myredis -d -p 6379:6379 redis c9f0cdfa7cff92fe205e82a15dda0f42505d6fef25bf827b26c8d0ea77ad1b90 # redis 설치 확인 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c9f0cdfa7cff redis "docker-entryp..
ㅁ 들어가며 [SQL튜닝] MySQL 쿼리 튜닝, 쿼리 실행계획, Explain에서 쿼리의 튜닝을 위한 Explain을 보는 방법과 Explain 컬럼을 분석하여 최적의 쿼리를 분석하는 방법을 공부하였다. 이번 글에서는 SQL 튜닝 책 4장과 5장을 공부하면서 튜닝의 방법들을 정리해 보았다. ㅁ Intellij의 확장된 Explain 활용방법 ㅇ Mysql 8.0.18 이상의 경우 Explain Analyze을 제공한다. ㅇ 위의 캡쳐에서 Explain Plan의 경우 EXPLAIN FORMAT=TREE Explain Plan(Raw)의 경우 EXPLAIN FORMAT=TRADITIONAL에 해당한다. 와 각각의 Raw 분석을 제공하고 있다. 튜닝을 학습하는 과정에서 개별 Explain를 살펴보고 각각의..
[kubernetes] 개발환경 목차 1. 기본 Pod 조회 사용 가능한 모든 포드를 조회하는 명령어로 기본 Default Namespace를 조회합니다. $ kubectl get pod ✔ 6785 07:35:22 NAME READY STATUS RESTARTS AGE redis 0/1 CrashLoopBackOff 76 (3m39s ago) 6h10m 2. kube-system Pod 조회 -n kube-system 옵션을 사용하여 kube-system namespace의 모든 Pod의 정보를 확인합니다. $ kubectl get pod -n kube-system NAME READY STATUS RESTARTS AGE coredns-5d78c9869d-f2fwk 1/1 Running 0 6..
ㅇ iTerm > Preferences > Profiles > 사용자 선택을 합니다. ㅇ Terminal 탭에서 Scrollback Buffer를 조정합니다.
[kubernetes] 쿠버네티스 목차 [kubernetes] 모니터링 방법 정리 ㅁ 모든 POD의 CPU-Requet CPU-limit MEM-Request MEM-limit 조회 $ kubectl get po -A # 모든 NameSpace의 Pod들 -o custom-columns= "Name:metadata.name, CPU-Requet:spec.containers[*].resources.requests.cpu, CPU-limit:spec.containers[*].resources.limits.cpu, MEM-Request:spec.containers[*].resources.requests.memory, MEM-limit:spec.containers[*].resources.limits.memory..
ㅁ 들어가며 백엔드개발을 하면서 DB SQL의 튜닝작업은 필수입니다. 쿼리 튜닝 공부를 위해 SQL 튜닝, Real MySQL를 보고 있는데요. 쿼리를 최적화 하기 위해서는 Explain를 잘 분석할 줄 알아야 합니다. 이번 글에서는 Explain의 컬럼과 그 요소들의 의미를 정리하였습니다. ㅁ Explain 보는 방법 Explain 명령어를 SQL 앞에 붙여 실행하면 쿼리의 실행계획을 볼 수 있습니다. 옵티마이저는 이 SQL을 해석하여 최적의 실행계획을 세웁니다. 하지만 항상 최적의 실행계획을 만들어 낼 수는 없습니다. 그래서 이를 보완하기 위해 Explain 명령어로 옵티마이저가 산출한 실행 계획(Explain)을 사용자가 확인할 수 있습니다. ㅇ 참조: SQL튜닝 123p, Real MySQL 41..
ㅁ 개요 이전 글인 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 튜닝] EXISTS를 이용한 SQL 튜닝에서 EXISTS를 통한 튜닝작업을 알아보았습니다. 하지만 EXISTS가 항상 성능을 향상시키는 것은 아닙니다. EXISTS와 동일한 작업을 수행할 수 있는 IN, INNER JOIN도 있지만 성능에는 차이가 있을 수 있습니다. 이 번 글에서 질의 조건 3가지(전체, 부서, 부서 외)를 나누어 는 IN, INNER JOIN, EXISTS 성능을 비교해 보았습니다. ㅁ 일러두기 ㅇ 쿼리 테스트를 위해 [MySQL] 실습환경 구성하기에서 생성한 MySQL이며, 버젼은 5.7.37입니다. ㅇ 테스트 데이터는 [MySQL] 대용량 샘플 데이터 사용하기에서 생성된 데이터를 사용하였습니다. ㅇ salaries 테이블: 2844047건 ㅇ dept_em..
ㅁ 들어가면서 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..
ㅁ 개요 쿼리를 튜닝할 때에 가장 큰 요소는 색인데이터를 최소화 하는 방법이 있습니다. 이번 글에서는 EXISTS 구문을 통해서 불필요한 IO를 줄여 쿼리를 튜닝하는 방법을 정리해 보았습니다. ㅁ 일러두기 ㅇ 쿼리 테스트를 위해 [MySQL] 실습환경 구성하기에서 생성한 MySQL이며, 버젼은 5.7.37입니다. ㅇ categories(8 row)에 속한 products(77 row) 테이블을 샘플로 하였습니다. ㅁ EXISTS 연산자란? EXISTS 연산자는 서브쿼리에 데이터가 존재하는지 체크하고 존재할 경우 TRUE를 반환합니다. EXISTS 연산자는 IN 연산자와 비슷한 용도로 사용할 수 있으며, IN 연산자는 비교할 값을 직접 대입할 수 있지만 EXISTS 연산자는 서브쿼리만 사용할 수 있습니다...