[일상] CS50’s Introduction to Databases with SQL 강좌 수료 [쿼리 튜닝과 DB 설계의 재발견]
·
◐ 기타/개발자의 일상🎈
This is CS50 SQL. Spring Boot와 MyBatis/JPA를 주력으로 사용하다 보면, 편리한 추상화 뒤에 숨어 'DB가 어떻게 동작하는지'를 간과하기 쉽습니다. 하지만 시스템의 병목은 결국 I/O에서 발생하고, 쿼리 한 줄이 전체 서비스의 레이턴시(Latency)를 좌우합니다.하버드 CS50 Introduction to SQL 과정을 통해, 단순히 문법을 익히는 것이 아니라 RDBMS의 내부 아키텍처와 옵티마이저(Optimizer)의 관점에서 데이터를 다루는 법을 재정립했습니다.* 이 과정은 특정 DBMS 툴 사용법이 아니라, 관계형 데이터베이스(RDBMS)의 보편적인 원리를 다룹니다.과정의 마지막은 실제 서비스를 가정한 DB 설계를 수행하는 것이었습니다.설계 주안점확장성을 고려한 테이..
[MySQL] root 계정 비밀번호 설정 방법 [root 비밀번호가 invalid일 경우]
·
▣ SQL : Database/MySQL🐬
- root 계정 비밀번호 설정 방법기존 local에서 개발할 때는 연결이 잘 되던 개발DB가 개발서버에서는 Access denied가 떴다. 그 이유는 root@localhost의 Password가 invalid여서! (개발서버에 개발DB가 같이 있다.)root@localhost의 비밀번호가 제대로 설정되지 않아서 그랬다.- 해결 방법# 비밀번호 새로 설정ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_password';# 변경사항 반영FLUSH PRIVILEGES;
[튜닝일지] 4. 숫자 ID vs 텍스트 ID [백엔드 개발자의 쿼리 튜닝일지]
·
◈ Refactoring/쿼리 튜닝일지🔧
4. 숫자 ID vs 텍스트 ID사이드 프로젝트를 준비하면서 고민한 ID 타입에 대한 공부와 고찰을 남겨보려 한다.1) 숫자 ID [ ex) 3451832 ]- 장점숫자는 일반적으로 텍스트보다 작은 공간을 차지하기 때문에 인덱스 생성 및 검색이 빠르다.데이터베이스에서 숫자 인덱스를 사용하면 메모리 사용량을 줄일 수 있다.자동 증가(Auto-increment)와 같은 기능을 이용하여 쉽게 새로운 ID를 생성할 수 있다.- 단점가독성이 떨어질 수 있다. 숫자 ID는 사용자에게 의미 있는 정보를 전달하지 않는다.데이터베이스에서 무작위로 할당된 ID를 사용할 경우, 보안상의 문제가 발생할 수 있다.2) 텍스트 ID [ ex) user123 ]- 장점가독성이 좋다. 텍스트 ID는 해당 사용자를 직관적으로 나타낸다..
[튜닝일지] 3. 믿었던 Function이 날 배신했다. [백엔드 개발자의 쿼리 튜닝일지]
·
◈ Refactoring/쿼리 튜닝일지🔧
3. 믿었던 Function이 날 배신했다. 지난 쿼리 튜닝으로 기존 대비 절반 이상으로 실행 속도를 절감시켰다. 그러나 여기서 튜닝을 멈추지 않았다. 아니 멈출 수 없었다. 이번에 건드린 건 Function(≒Procedure, 프로시저)였다. Function을 주석하고 실행하면 신기하게도 실행 속도가 빨라졌다. 왜 그런 것일까요? GPT 선생님께 여쭤보았습니다. 더보기 MySQL에서 함수가 인덱스를 사용하는지 여부는 함수의 형태와 쿼리의 구성에 따라 다릅니다. 일반적으로, MySQL은 함수를 사용하여 쿼리를 실행할 때 인덱스를 사용하지 않습니다. 함수는 쿼리에서 조건절에 사용되는 경우 인덱스를 사용할 수 있는 기회를 제한합니다. 예를 들어, 다음과 같은 쿼리에서는 인덱스를 사용할 수 없습니다. SEL..
[Oracle] RECURSIVE와 WITH, 재귀적으로 데이터 조회하기 [재귀 쿼리의 활용과 이해]
·
▣ SQL : Database/Oracle SQL🏮
- RECURSIVE와 WITH, 재귀적으로 데이터 조회하기 Oracle에서도 MySQL과 같이 재귀 쿼리가 존재한다. Oracle에서의 재귀 쿼리는 다음과 같다. [MySQL] RECURSIVE, 재귀적으로 데이터 조회하기 [재귀 쿼리의 활용과 이해] - RECURSIVE, 재귀적으로 데이터 조회하기 1. RECURSIVE 쿼리란? RECURSIVE 쿼리는 데이터베이스에서 재귀적으로 데이터를 조회하거나 처리하는 데 사용되는 쿼리다. 주로 계층적 데이터 모델이나 트리 yermi.tistory.com WITH -- Anchor Member: 초기 쿼리 부분, 재귀를 시작하는 지점 OrgChart (employee_id, name, manager_id, level) AS ( SELECT employee_id..