전체 글

공부중인 학생입니다! 글에서 틀린 곳이 있으면 지적 부탁드립니다 블로그 이사 https://velog.io/@joohr1234
보호되어 있는 글입니다.
이번에는 MySQL의 풀 테이블 스캔에 대해 정리해보려고 한다. MySQL 서버에서 쿼리의 실행절차 쿼리가 실행되는 과정은 다음과 같다. SQL 파싱 최적화 및 실행계획 수립 결정된 실행계획을 이용해 스토리지 엔진으로부터 데이터를 가져옴 1. SQL 파싱 제일 처음에는 사용자로부터 받은 SQL 문장을 잘게 쪼개서 MySQL 서버가 이해할 수 있는 수준으로 분리한다(파스 트리를 만든다) 이 부분은 MySQL 서버의 SQL 파서 모듈로 처리한다. SQL문장이 문법적으로 잘못된 경우 이 단계에서 걸러진다. 2. 최적화 및 실행계획 수립 SQL 파스 트리를 이용하여 어떤 테이블로부터 읽을지, 어떤 인덱스를 이용해 테이블을 읽을지 선택한다. 이 부분은 MySQL 서버의 옵티마이저에서 처리하며, 이후 쿼리의 실행계..
이전에 썼던 잘못된 글.. https://fladi.tistory.com/312 [DB] Unique index와 pk 최근 데이터베이스 인덱스에 대해 공부를 하고 적용시키는 과정에서 아직 모르는 부분이 있는 걸 발견하였다. 관계형 디비에서 pk를 지정하면 해당 pk는 unique인덱스가 이미 존재한다는 것이었다 fladi.tistory.com 작년에 다음과 같은 포스팅을 했었다. 이 때는 인덱스가 뭔지도 몰랐고, Unique인덱스도 처음 들어보는 이야기였다. Primary키를 왜 써야하는지 쓰면 뭐가 좋은지도 몰랐고 그냥 쓰라고 해서 썼었던 시절이었다. 그래서 구글링을 조금 해보면서 둘의 차이점을 블로그에 올렸었다. 하지만 최근에 Real MySQL 책을 읽고 디비를 공부하면서 내가 알고있던 지식이 잘..
· 협업/Git
최근 간단한 협업 프로젝트를 하면서 .gitignore때문에 고생한 적이 있었다. 그래서 개념을 확실하게 잡아두고, 다음부터는 .gitignore때문에 스트레스를 받지 않고싶어서 게시글을 작성한다. 내가 겪었던 상황을 그대로 재현했고, 이를 해결하는 과정도 담았다 초기 세팅 폴더를 2개 만들어줬다 src 폴더는 소스파일이 올라가는 곳으로, 깃허브에 올려야하는 파일들이 저장된다 bin 폴더는 컴파일된 .class파일이 올라가는 곳으로, 굳이 깃허브에 올릴 필요 없는 파일들이 저장된다 각각 올려야하는 파일, 올리면 안되는 파일을 넣어두고 초기 커밋했다 clone 받기 일단 클론을 받고 내가 수정할 곳을 수정해준다 bin 디렉토리 내부 파일은 변경시켰고 src파일에는 새로운 파일을 추가시켰다 i_want_pu..
글의 내용은 Real MySQL 8.0 책을 참고하였습니다. DBMS들이 데이터 압축을 사용하는 이유 디스크에 저장된 데이터 파일의 크기는 쿼리 처리 성능과 직결되며, 백업 및 복구 시간과도 밀접하게 연관된다. 데이터 파일의 크기가 커질수록 쿼리 처리를 위해 많은 데이터 페이지를 InnoDB 스토리지 엔진 버퍼풀로 읽어들여야할 수 있고 새로운 페이지가 버퍼풀로 적재될 때 더티 페이지가 더 자주 디스크로 기록되어야 함 (Disk IO 증가) 이런 문제점 때문에 많은 DBMS는 데이터 압축 기능을 사용한다. MySQL 서버에서는 테이블압축과 페이지 압축 기능을 제공한다. MySQL 페이지 압축(많이 사용 x) MySQL 서버가 디스크에 저장하는 시점에 데이터 페이지가 압축되어 저장되고, 디스크에서 데이터 페..
대망의 구현 뿌수기다. 가장 기본이면서 가장 중요하고 문제도 가장 많다. 긴 여정이 될 것 같다. 2167 2차원 배열의 합 - 실버5 https://www.acmicpc.net/problem/2167 2167번: 2차원 배열의 합 첫째 줄에 배열의 크기 N, M(1 ≤ N, M ≤ 300)이 주어진다. 다음 N개의 줄에는 M개의 정수로 배열이 주어진다. 배열에 포함되어 있는 수는 절댓값이 10,000보다 작거나 같은 정수이다. 그 다음 줄에는 www.acmicpc.net 누적합 냄새가 너무 나서 그렇게 풀었다 public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new Buffe..
· 기타
보호되어 있는 글입니다.
비트마스킹 시즌2다. 비트마스킹은 뿌수기 시리즈 중 가장 어렵다고 느껴진다.. 비트마스킹이 내 취약점인 것 같다. 더 열심히해야지.. 17419 비트가 넘쳐흘러 - 실버4 https://www.acmicpc.net/problem/17419 17419번: 비트가 넘쳐흘러 🎶 DJ욱제는 비트에 몸을 맡기는 중이다. 🎶 DJ욱제는 비트에 심취한 나머지, 비트를 비틀어 제껴버리는 문제를 내 버렸다! N자리 이진수 K가 주어진다. K가 0이 아닐 때까지 아래의 연산을 적용 www.acmicpc.net 0이 될 때까지 계속 연산을 반복하면 시간초과가 날 것 같았지만, 규칙이 떠오르지 않아서 그냥 해봤다가 51%에서 안움직였다 N의 개수가 100만이었기 때문에 long으로도 처리가 안된 것이었다 어쩔 수 없이 규칙을..
이번에는 비트마스킹을 공부해보려고 한다. 비트 연산을 안배운지 너무 오래돼서 브론즈문제부터 차근차근 풀 예정이다. 개념정리 - XOR 연산자 1 ^ 1 = 0 1 ^ 0 = 1 0 ^ 1 = 1 0 ^ 0 = 0 true ^ true = false false ^ true = true true ^ false = true false ^ false = false 자바의 XOR연산자는 두 값이 다르면 true를 반환한다. 1은 true의 의미를 가지고 있다고 c언어처럼 생각하면 되겠다 개념정리 - 비트 반전 연산 ~1 = 0 ~0 = 1 말그대로 비트를 반전하는 연산 27960 사격 내기 - 브론즈3 https://www.acmicpc.net/problem/27960 27960번: 사격 내기 A, B, C는 올..
13023 ABCDE https://www.acmicpc.net/problem/13023 13023번: ABCDE 문제의 조건에 맞는 A, B, C, D, E가 존재하면 1을 없으면 0을 출력한다. www.acmicpc.net 친구관계와 관련되어 있어서 union-find인가 생각도 들었지만, A-B-C-D-E 로 이어져야하고, 네트워크와는 관련이 없기 때문에 다른 방식으로 풀어야한다는 걸 느꼈다 4만큼 떨어져있다면 촌수계산처럼 bfs로 푸는 게 맞나 싶었지만, visit관리를 어떻게 해야할 지 몰라 dfs로 풀었다. class Man { int num; int count; public Man(int num, int count) { this.num = num; this.count = count; } } ..
fladi
주프링 블로그