개요 저번 포스팅, MySQL의 아키텍처와 성능 핵심에서 우리는 디스크 I/O를 줄이는게 중요하다는 걸 알았다. 하지만 디스크 I/O를 줄이기 위한 캐시 사용, 인메모리 적용이 애매한 경우가 분명 존재한다. 이럴때 유용하게 사용할 수 있는 방법이 있는데, 그게 바로 인덱스다. 인덱스는 어플리케이션단 코드를 바꿀 필요도 없고, 새로운 기술 스택을 도입할 필요가 없어 아키텍처에 변화가 생기지도 않는다. 따라서 성능 최적화 작업을 할 때 참 유용해보인다. 하지만 이런 인덱스를 사용한다고 무조건 성능이 좋아지는건 아니라는 사실! 오늘은 인덱스에 좀 더 깊게 공부해보자. 인덱스 👀 인덱스가 뭔가요? 간단하게 표현하면, 책의 목차로 비유할 수 있다. 각 데이터의 위치를 설명해주는 친구! 책의 내용이 많아지면, 우리..
개요 내가 백엔드 개발자라면, 또는 DB를 공부해 본 적이 있다면 한 번쯤은 ACID에 대해 들어봤을 것이다. 생각해보면 DB를 공부하며, 또는 개발 면접을 준비하며 ACID를 달달 외운 적은 있어도, 각각의 특성을 어떻게 DBMS가 보장해주는지를 찾아본 적은 없는 것 같다. 오늘은 트랜잭션, ACID에 대해 알아보고, MySQL이 ACID 각각의 특성을 어떻게 보장해주는지까지 공부해보자 💪 트랜잭션이란? 데이터베이스 트랜잭션(Database Transaction)은 데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위이다. 여기서 유사한 시스템이란 트랜잭션의 성공과 실패가 분명하고 상호 독립적이며, 일관되고 믿을 수 있는 시스템을 의미한다. - 위키백과 : 데이터베이스 트랜잭션 문서 ^^ 봐..
개요 즐거운 추석..에 갑자기 인덱스에 꽂혔다. 책이며 강의며 막 뒤지면서 듣는데, 이거 고냥 보고 끝낼게 아니라 정리해두면 더 기억에 잘 남겠다 싶어서 블로그도 쓱싹 쓰게 되었다 😄 쓰다보니 내용이 길어져서 이번 포스팅에선 아키텍처와 구조적 특성 위주로 작성하고, 다음 포스팅에서 인덱스와 자료구조를, 그 다음 포스팅에서 인덱스 종류에 대해서 다뤄볼까 한다. (한번 공부해서 포스팅 3개로 우려먹기 ^_____^ v) 그럼 아이엠그라운드 MySQL 아키텍처 시작! MySQL의 아키텍처 MySQL 서버 아키텍처를 이해하면 우리가 작성한 SQL이 어떻게 실행되는지 알 수 있고, 실행 과정을 알면 튜닝 방법을 알 수 있다 🤔 우리가 아무 생각 없이 사용하는 MySQL 안에서 쿼리는 어떻게 처리되고 있을까? 한번..