슬로우 쿼리 로그

책너두 6기 14일차 백은빈, 이성욱의 Real MySQL8.0 1권 p.150 ~ p.159 내용정리 04 아키텍처 4.4.3 슬로우 쿼리 로그 MySQL 서버의 쿼리 튜닝은 서비스가 적용되기 전 튜닝과 운영 중 전체적인 성능 검사나 정기 점검 튜닝으로 나눌 수 있다. 슬로우 쿼리 로그 파일에는 설정한 시간 이상의 시간이 소요된 쿼리가 모두 기록된다. 실행 완료 후 기록으로 판단하기 때문에 실행이 정상적으로 완료되야만 기록될 수 있다. Time : 쿼리가 종료된 시점 User@Host : 쿼리를 실행한 사용자의 계정 ...

2023년 9월 19일 · 3 분 · 배준수

SerialDate 리팩터링(1)

책너두 5기 37일차 로버트 C. 마틴의 클린코드 p. 344~ p.351 내용정리 16. SerialDate 리팩터링 남의 코드를 리팩터링 하는 것은 편안하게 여겨야 할 활동이다. 남이 내게 해준다면 감사히 반겨야 할 호라동이다. 비판이 있어야만 발전이 가능하다. 첫째, 돌려보자 테스트 케이스가 모든 경우를 점검하는지 확인하자. 필요하다면 단위 테스트가 실행하는 코드와 실행하지 않는 코드를 조사해보자. 높은 테스트 커버리지를 달성하자. 둘째, 고쳐보자 코드를 고칠때마다 단위 테스트를 실행해서 확인하자. 읽고 나서 오늘도 리팩터링은 계속 된다.

2023년 9월 18일 · 1 분 · 배준수

에러로그

책너두 6기 13일차 백은빈, 이성욱의 Real MySQL8.0 1권 p.142 ~ p.149 내용정리 04 아키텍처 4.2.13 InnoDB와 MyISAM, MEMORY 스토리지 엔진 비교 예전에는 MyISAM 스토리지 엔진을 많이 썼지만 이제는 도태되고 있고, 이후 버전에서는 사라질 전망이다. 4.3 MyISAM 스토리지 엔진 아키텍처 4.3.1 키캐시 InnoDB의 버퍼 풀과 비슷한 역할을 한다. 인덱스 만을 대상으로 작동한다. 4.3.2 운영체제의 캐시 및 버퍼 MyISAM 테이블의 데이터 읽기나 쓰기 작업은 운영체제의 디스크 읽기 또는 쓰기 작업으로 요청된다. 4.3.3 데이터 파일과 프라이머리 키(인덱스) 구조 프라이머리 키에 의한 클러스터링 없이 데이터 파일이 힙(Heap) 공간 처럼 활용된다. 키값과 무관하게 Insert 되는 순서대로 저장된다. ...

2023년 9월 18일 · 2 분 · 배준수

자료구조(7) 스택과 큐

12일차 게일 라크만 맥도웰의 코딩 인터뷰 완전 분석 3.3 ~ 3.6 내용 정리 9 면접 문제 3.3 접시 무더기 접시 무더기를 생각해보자. 접시를 너무 높이 쌓으면 무너져 내릴 것이다. 따라서 현실에서는 접시를 쌓다가 무더기가 어느 정도 높아지면 새로운 무더기를 만든다. 이것을 흉내 내는 자료구조 SetOfStacks를 구현해 보라. SetOfStacks는 여러 개의 스택으로 구성되어 있으며, 이전 스택이 지정된 용량을 초과하는 경우 새로운 스택을 생성해야 한다. SetOfStacks.push()와 SetOfStacks.pop()은 스택이 하나인 경우와 동일하게 동작해야 한다(다시 말해, pop()은 정확히 하나의 스택이 있을 때와 동일한 값을 반환해야 한다). ...

2023년 9월 18일 · 3 분 · 배준수

파이썬 알고리즘 : 신입사원, 정수 삼각형, 2xn 타일링 2

2023년 9월 18일 알고리즘 문제풀이 문제 1 백준 1946 문제 링크 1차 시도 나의 생각 서류에서 1등을 한 사람의 면접 성적을 기준으로 삼았다. 이 기준보다 면접 성적이 높은 사람만 합격할 수 있다. 기준보다 면접 성적이 낮은 사람은 서류 성적도 당연히 낮다. 서류 1등의 성적을 기준으로 하였으니까.. 문제는 이 기준에서 설정한 사람들 내에서도 문제의 조건으로 탈락하는 사람이 생길 수 있다. 리스트를 2번 순회하였더니 시간초과가 나서 큐를 이용해 최소 힙을 구현하여 수행 시간을 줄였지만 오답처리 되었다. ...

2023년 9월 18일 · 3 분 · 배준수

2023년 9월 2주차 주간 기록

주간기록 날짜 2023년 9월 11일 ~ 2023년 9월 17일 계획 책너두 : 클린코드, Real MySQL 8.0 1권, 코딩 인터뷰 완전정복 매일 알고리즘 3문제 9월 13일 : 알고리즘 스터디 9월 15월 : 면접 결과 아프지 말자.. WIL 자소서 지옥 시작 회고 버티자..

2023년 9월 17일 · 1 분 · 배준수

JUnit 들여다보기(2)

책너두 5기 36일차 로버트 C. 마틴의 클린코드 p. 333~ p.342 내용정리 15. JUnit 들여다보기 리팩터링 하기 명명법 제대로 해서 이해하기 쉽게 하기 숨겨진 시간적인 결합(hidden temporal coupling) 확인하기 고치면서 조건문의 조건을 변겨앻야 하는지 확인하기 연산자에 등호 포함 여부 확인하기 세상에 개선이 불필요한 모듈은 없다. 코드를 처음보다 조금 더 깨끗하게 만드는 책임은 우리 모두에게 있다.

2023년 9월 16일 · 1 분 · 배준수

리두로그

책너두 6기 12일차 백은빈, 이성욱의 Real MySQL8.0 1권 p.130 ~ p.141 내용정리 04 아키텍처 4.2.11 리두 로그 및 로그 버퍼 리두 로그(Redo Log)는 트랜잭션의 4가지 요소인 ACID 중에서 D(Durable)에 해당하는 영속성과 가장 밀접하게 연관돼 있다. 리두 로그는 서버가 비정상적으로 종료됐을 때 데이터 파일에 기록되지 못한 데이터를 잃지 안헥 해주는 안전장치다. 대부분 데이터베이스 서버는 데이터 변경 내용을 로그로 먼저 기록한다. 데이터베이스 서버에서 리두 로그는 트랜잭션이 커밋되면 즉시 디스크로 기록되도록 시스테 변수를 설정하는 것을 권장한다. innodb_flush_log_at_trx_commit 시스템 변수이다. ACID는 데이터베이스에서 트랜잭션의 무결성을 보장하기 위해 꼭 필요한 4가지 요소(기능)을 의미한다. ...

2023년 9월 16일 · 2 분 · 배준수

자료구조(6) 스택과 큐

12일차 게일 라크만 맥도웰의 코딩 인터뷰 완전 분석 p.144 ~ p.146, 3.1, 3.2 내용 정리 9 면접 문제 03 스택과 큐 스택 구현하기 스택 자료구조는 데이터를 쌓아 올린다(stack)는 의미이다. LIFO(Last-In-Fisrt-Out)에 따라 자료를 배열한다. 연산은 다음과 같다. pop(): 가장 위에 있는 항목을 제거한다. push(item): item 하나를 가장 윗 부분에 추가한다. peek(): 가장 위에 있는 항목을 반환한다. isEmpty(): 스택이 비어 있을 때에 true를 반환한다. 배열과 달리 상수 시간에 i번째 항목에 접근할 수 없다. 데이터를 추가하거나 삭제하는 연산은 상수시간에 가능하다. 재귀함수에서 많이 사용한다. 큐 구현하기 FIFO(First-In-First-Out) 순서를 따른다. 연산은 다음과 같다. add(item): item을 리스트의 끝부분에 추가한다. remove(): 리스트의 첫 번째 항목을 제거한다. peak(): 큐에서 가장 위에 있는 항목을 반환한다. isEmpty(): 큐가 비어 있을 때에 true를 반환한다. 큐를 연결리스트로 구현할 수 있다. BFS나 캐시를 구현할 떄 종종 사용한다. 면접 문제 3.1 한 개로 세 개 배열 한 개로 스택 세 개를 어떻게 구현할지 설명하라. ...

2023년 9월 16일 · 2 분 · 배준수

파이썬 알고리즘 : 프렉탈 평면, 회의실 배정, 점프

2023년 9월 16일 알고리즘 문제풀이 문제 1 백준 1030 문제 링크 1차 시도 나의 생각 분할정복으로 풀면 되겠다고 생각했다. 정사각형 한 변의 길이는 1초마다 n이 곱해져 결국 s초 후 n의 s제곱 형태가 된다. s는 최대 10, n은 최대 8이므로 한 변의 길이는 최대 2의 30제곱이나 된다. 전체 정사각형 배치를 그린 후 원하는 부분만 출력하기엔 너무 크다는 뜻이다. 문제에서 출력하라고 요구하는 부분만 출력해야 한다. 이 부분이 너무 어려워서 다른 사람들의 풀이를 보고 공부한 코드이다. l은 위에서 말했던 n의 s제곱이자 s초 후 정사각형의 한 변의 길이이다. main 함수는 평면의 한 변의 길이와 검은색인지 확인할 곳의 행렬을 x,y로 받는다. 중앙의 k x k 크기의 사각형에 포함된다면 검은색이므로 1을 반환한다. ...

2023년 9월 16일 · 4 분 · 배준수