본문 바로가기

데이터베이스7

전공자 SQLD SQL 개발자 2일전사 후기 컴공, 2년전 정보처리기사 취득, 최근 필기 준비한다고 CS이론 훑었음, 프로그래머스 기준 SQL 4레벨 풀 수 있음  도움이 될진?? 모르겠????음????????   자격증 신청 데이터자격시험SQL 전문가(SQLP*, SQL Professional)란 데이터베이스와 데이터모델링에 대한 지식을 바탕으로 데이터를 조작하고 추출하는데 있어서 정확하고 최적의 성능을 발휘하는 SQL을 작성할 수 있고, 이를 토대www.dataq.or.kr 발등에 불이 떨어져 일단 53회 접수부터 했다. SQLD는 연 4회 정기시험을 치른다.  4/22월 ~ 4/26금 5일간 접수를 받는다. 수도권에 살아서 수험장은 정처기와 얼핏 비슷했던 것 같다. 게다가 정처기와 다르게 인기가 없어(!) 늦게 접수했음에도 불구하고 집근처 수.. 2024. 6. 25.
[MySQL] Query 성능 높이는 팁 Query 튜닝 Index 전략을 사용하기 인덱스는 데이터베이스 성능 최적화에 필수적인 요소다. PK나 JOIN, WHERE 자주 사용되는 컬럼 같은 컬럼에 반드시 인덱스를 생성하자. 하지만 과도한 인덱스는 부정적인 영향(쓰기 성능 느려짐, 메모리 낭비)을 주기 때문에 전략적으로 필수적인 인덱스를 만들어 사용해 관리하자. Predicate 절에서 함수 사용을 피하라 SELECT * FROM TABLE1 WHERE UPPER(COL1)='ABC' UPPER() 같은 함수를 사용하게 되면 데이터베이스는 인덱스를 사용하지 못하게 된다. 함수 기반 인덱스를 생성하거나, 컬럼 커스텀을 이용해야 한다. Predicate 절에서 와일드카드(%)로 시작하는 조건을 피하라 SELECT * FROM TABLE1 WHERE.. 2023. 9. 8.
[데이터베이스] DBMS와 옵티마이저 MySQL 기준 사용할 땐 하더라도 내부 엔진을 알고 사용하자클라이언트-서버 아키텍처 클라이언트 층 서버에 명령, GUI Connection Handling : 클라이언트가 서버에 접속하면 연결을 클라이언트는 위한 스레드를 얻음 Authentication : Mysql에 연결할 때 서버쪽에서 수행, username과 password로 인증 Security : 서버와 연결된 후 특정 사용자에게 쿼리 권한이 있는지 확인 서버 층 (a.k.a “Brain of MySQL Architecture”) RDB의 논리적인 기능을 책임짐 Thread Handling : 연결된 클라이언트가 스레드를 할당받을 때 그 스레드를 제공, 스레드로 실행되는 클라이언트 쿼리들을 핸들링 Parser : SQL을 분석해 문법 검사, .. 2023. 8. 20.
[데이터베이스] 트랜잭션과 ACID 성질 데이터베이스의 상태를 변화시키는 하나의 논리적인 작업 단위, 하나의 트랜잭션은 Commit 또는 Rollback 된다. ACID 데이터의 무결성과 안정성을 보장하기 위해 트랜잭션이 지녀야 하는 성질! Atomicity 원자성 : All or Nothing 트랜잭션 결과가 데이터베이스에 모두 반영되거나 반영되지 않아야 하는 성질 Consistency 일관성 : 트랜잭션 수행 전후 데이터베이스는 일관된 상태를 가져야 하는 성질 Isolation 독립성 : 모든 트랜잭션은 다른 트랜잭션부터 독립되야 하는 성질 Durability 영속성 : 트랜잭션이 성공적으로 수행되었다면 그 결과는 영구적으로 기록되는 성질 永續性 영속성 : 영원히 지속되는 성질이나 능력 無缺性 무결성 : 데이터의 정보가 변경되거나 오염되지 .. 2023. 8. 19.
[자료구조] B-tree와 B+tree 이진트리 종류 정이진트리 Full Binary Tree 트리의 모든 노드가 0개 혹은 2개의 자식을 가지는 경우 (한국의 교재에선 포화이진트리라고 번역된 게 있는데 둘은 다른 개념이다.) 포화이진트리 Perfect Binary Tree 말 그대로 마지막 레벨까지 노드가 꽉 찬 트리, (2^N-1)개의 노드를 가진다. 완전이진트리 Complete Binary Tree 마지막 레벨을 제외한 모든 레벨에서 순서대로 노드가 꽉 찬 트리, 마지막 레벨은 왼쪽부터 채워져야 한다. 균형이진트리 Balanced Binary Tree 말단 노드들의 레벨 차이가 최대 1레벨까지만 나는 트리, 균형이 깨지면 별도의 로직을 통해 다시 균형을 잡게 된다. 포화이진트리, 완전이진트리, 정이진트리는 이상적인만큼 현실에서 잘 찾아볼.. 2023. 4. 24.
[서평/23-16] SQL 레벨업 : DB 성능 최적화를 위한 SQL 실전 가이드 독서기간_2023년 1월 10일 ~ 2023년 1월 20일 저자_미크 출간일_2016년 1월 30일 😦... 내가 이걸 아직도 안 썼다니... 데이터베이스, 특히 SQL은 간과하기 쉽다. 작은 예제 테이블에서 SELECT, FROM, WHERE 문을 잘 조합하면 원하는 데이터를 조회할 수 있다. 다른 테이블과 관계된 데이터의 조회도 필요한가? 그럼 JOIN을 사용하면 된다. 그런데 테이블 결합 시 발생하는 결과를 생각해본 적 있는가? 카티션 프로덕트가 초래하는 성능 이슈를 아는가? SQL 실행계획을 아는가? 조건 분기, 윈도우 함수를 아는가? 그렇지 않다면 이 책을 읽어보길 바란다. 1000개도 안 되는 데이터베이스 테이블에서 조회만 잘 한다고 SQL을 잘 쓰는 것이 아니다. 신입 개발자 준비하면서 얼마.. 2023. 4. 8.
[Spring Reactive] 리액티브 데이터 Repository 정의하기 리포지토리를 생성하기 앞서 도메인은 다음과 같다. public class Item { private @Id String id; private String name; private double price; private Item(){} public Item(String name, double price) { this.name = name; this.price = price; } public String getId() { return id; } } 블로킹API인 JPA를 사용하지 않지만 JPA와 매우 유사한 인터페이스가 정의되어 있다. ReactiveCrudRepository 인터페이스를 상속하면 된다. 주석 내용은 기본적으로 제공하는 메서드이다. JPA와 거의 동일하게 제공한다는 것을 알 수 있다. pub.. 2023. 3. 12.