목록분류 전체보기 (289)
개발자는 기록이 답이다

우리가 구글에서 검색할 때, '문자여'만 입력해도 다음에 나올 단어들이 자동완성처럼 제안되는 것을 흔히 볼 수 있습니다. 이는 Prefix 검색 덕분입니다. 그렇다면 데이터베이스에서는 어떻게 이러한 Prefix 검색을 빠르게 처리할 수 있을까요? 📌 MySQL에서 인덱스 사용 데이터베이스에서 특정 데이터를 빠르게 찾아오기 위해 인덱스(Index)를 사용합니다. 인덱스는 디스크 파일에 저장된 데이터를 빠르게 검색할 수 있게 도와줍니다. MySQL에서의 인덱스는 주로 B+ Tree 자료구조를 기반으로 구성됩니다. B+ 트리는 B-Tree에서 파생된 개념입니다. B-Tree는 트리 구조의 최상위에 하나의 루트 노드(Root Node)가 존재하고, 그 하위에 자식 노드가 붙어있는 형태입니다. 트리 구조의 가장..

멀티프로그래밍에서 주의해야 할 점으로 3가지가 있습니다.동시성이슈(경합상태)데드락기아상태이 3가지에 대한 고찰한 내용을 담았습니다. 1. 동시성 정의 동시성이란 두 개 이상의 스레드나 프로세스가 동시에 실행 될때 발생합니다. 구체적으로 말하자면, "여러 주체가 하나의 공유 자원에 동시에 접근하여 2가지 이상의 Action"을 수행하면서 자원의 일관성이 깨지는 경쟁 상태(race condition)가 발생할 수 있습니다. 예를 들어, 한 스레드가 데이터를 변경하려고 할 때 다른 스레드가 이미 그 데이터를 사용하고 있다면 어떻게 될까요?개발자가 정의한 정상적인 흐름을 따르지 못하고 자원의 일관성이 깨지며 예기치 않은 결과를 초래하게 됩니다. "예기치 않은 결과"라는 건 아래 표와 같이 두 개의 스레드가 각..

📌 웹 서버란?웹 서버는 HTTP 요청을 받아들이고 해당 요청에 대한 응답을 제공하는 프로그램입니다. 주로 정적 컨텐츠를 제공하는 서버 (주로 정적 컨텐츠 캐싱이나 리버스 프록시 용도로 사용)로서 사용됩니다.Apache와 Nginx는 가장 인기 있는 웹 서버 프로그램 중 두 가지입니다.📌 Apache vs Nginx Apache의 구동방식오랜 기간동안 웹 서버로 사용되어 왔으며, 오픈소스 프로젝트로 가장 유명한 프로그램 중 하나입니다.Prefork MPM(Multi Processing Module) 방식HTTP 요청이 올때마다, 프로세스를 복제하여. 각각 별도 프로세스에서 해당 HTTP 요청을 처리합니다.이러한 방식은 새로운 요청이 올때마다 새로운 프로세스를 생성해야 하므로 처리 속도가 느릴 수 있습..

2024.04.19 - [SQL/쿼리 최적화] - 1000만건의 데이터를 대상으로 쿼리최적화 with. 복합인덱스, 커버링인덱스 1000만건의 데이터를 대상으로 쿼리최적화 with. 복합인덱스, 커버링인덱스2024.04.05 - [SQL/쿼리 최적화] - Index를 활용한 10만건의 레코드 Join쿼리를 최적화하자 Index를 활용한 10만건의 레코드 Join쿼리를 최적화하자 마이페이지에서 유저가 발급받은 쿠폰 이력을 조회하는strong-park.tistory.com 지난번 포스팅에서 쿼리 최적화에 대해 작성했었는데, 복합인덱스와 커버링인덱스를 적용했음에도 대규모 데이터셋이라 속도가 느린편이었습니다. 그리고 MySQL상에서 최적화를 해도, API로 연동하고나면 1~2s 정도 더 느려지는 현상이 있었습니..