CS
-
쿼리의 동작 과정CS/DB 2024. 11. 23. 22:45
SQL 실행 과정의 중요성이전에 SQL문의 실행순서를 정리했는데, 해당 순서는 논리적 순서일뿐 실제 쿼리 순서와는 약간의 차이가 있다.예를들면 order by 절이 select 보다 먼저 실행되는데 실제 쿼리 작성시 select에 포함되지 않은 컬럼으로 order by를 실행해도 정상적으로 정렬되는것이 그 예이다.이번에는 실제 물리적으로 어떻게 작동하는지 정리해본다.SQL 쿼리 실행 단계1. 파싱 (Parsing)문법 확인: SQL 문법에 오류가 있는지 확인Syntax Tree 생성: 쿼리를 구문 트리(Syntax Tree)로 변환객체 확인: 테이블, 컬럼, 함수 등의 존재 여부와 사용 권한 점검2. 바인딩 (Binding)데이터 타입 확인: 테이블과 컬럼의 데이터 타입을 분석스키마 대조: 데이터베이스 ..
-
SQL 논리적 실행 순서CS/DB 2024. 11. 15. 21:09
Introduction쿼리의 동작 원리를 이해하는 것은 최적화와 디버깅에 매우 중요하다.나또한 과거 모 기업의 면접에서 물어보기 전 까진 동작순서에 대해 모른채로 INDEX관련 쿼리튜닝만 수행하고있었는데 동작순서를 알고나니 튜닝할 수 있는 범위가 늘어난걸 느꼇었다.그때 공부한 내용을 정리해본다.SQL 실행 순서란?일반적인 SQL 쿼리에서는 SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY와 같은 여러 절들이 혼합되어 사용된다.하지만 SQL의 실행은 우리가 작성한 쿼리문에 나열된 순서와 다르게 진행되며, 진행 순서에따라 어떤 데이터를 어떻게 조회하고 가져오는지가 정해져, 쿼리 최적화를 위해선 알고있어야 하는 개념이다.SQL 실행 순서1. FROMSQL은 가장 먼저 FRO..
-
정렬 알고리즘CS/알고리즘 2023. 3. 4. 18:14
선택정렬 O(N^2) 1. 인덱스의 맨 앞부터 시작해서 가장 작은값을 찾는다 2. 현재 인덱스와 가장 작은값의 위치를 바꾼다 3. 반복 삽입정렬 O(N^2) 1. 현재인덱스와 다음인덱스를 비교하고 작으면 위치를 바꾼다 2. 위과정을 더이상 작지 않을떄까지 반복한다. 버블정렬 O(N^2) 1. 현재인덱스와 다음인덱스를 비교후 크면 위치를 바꾼다(큰수를 앞으로 보냄) 2. 이를 계속 반복한다(선택정렬의 역버전) 합병정렬O(nlogN) 1. 모든 인덱스를 분할한다 2. 인덱스를 비교 정렬하며 합치는 것을 반복한다 퀵 정렬 평균 O(NlogN) 최악(정렬되어있을경우) O(N^2) 1. 피봇값을 정하고 그 값을 중심으로 작은값은 왼쪽 큰값은 오른쪽에 배열한다. 2. 왼쪽과 오른쪽에 각각 다시 피봇값을 정하고 그 ..
-
WSGI ASGI CGICS/네트워크 2023. 2. 25. 05:46
1. WSGI WSGI란 파이썬 애플리케이션과 웹서버가 통신할 수 있게 도와주는 프로그램 동적 처리를 지원하는 프로그램 2. ASGI 비 동기식으로 처리하는 WSGI 3. CGI 웹서버와 프로그램 사이에 통신을 연결해주는 프로토콜 2. 동작 1. 클라이언트가 웹서버에 요청을 보낸다 2. 웹서버는 WSGI를 호출해서 애플리케이션에서 요청된 데이터를 가져오게 한다. 3. WSGI는 받은 데이터를 바탕으로 애플리케이션에서 데이터를 가져와 웹서버에 전달한다 4. 웹서버는 받은 데이터를 클라이언트에 전송한다. 참고 https://wsgi.readthedocs.io/en/latest/what.html
-
HTTPCS/네트워크 2023. 2. 24. 18:46
1 특징 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜이다. 무상태성으로 상호간 연결을 유지하지 않는다. 클라이언트-서버 모델을 따른다 2 웹 동작방식 브라우저는 DNS서버로 가서 웹사이트의 실제주소(IP)를 검색한다 브라우저는 서버에게 웹사이트의 사본을 보내달라는 HTTP 요청을 TCP/IP를 통해 보낸다 (해당 요청에는 아래와 같은 내용이 쓰여있고 3way handshakin[클라이언트가 패킷을 보낸다 -> 서버가 받았다는 표시로 에크를 보낸다 -> 클라이언트도 서버가 정상적으로 받았다는걸 받았다는 표시로 에크를보낸다] 과정을 통해 이루어진다.) 요청을 받은 서버는 클라이언트의 요청을 승인하고 브라우저에 데이터를 전송한다 브라우저는 받은 데이터를 해석하여 사용자에게 웹사이트를 보여..
-
REST APICS/네트워크 2023. 2. 23. 10:23
REST 자원을 이름으로 구분하여 해당 자원의 상태(정보)를 주고 받는 아키텍쳐 월드와이드웹에서는 URI(Uniform Resource Identifier)를 통해 자원을 구분(명시)하고 Method (POST, GET, PUT, DELETE)를 통해 자원을 처리하도록 설계된 아키텍쳐 구성요소 자원 : Url을 이용해 자원을 구분하고 이 자원은 서버에 보관한다. 행위 : HTTP프로토콜 메소드를 이용한다 표현 : 클라이언트가 자원을 요청하면 JSON, XML, TEXT, RSS 등 여러 형태로 나타낸다. 특징 서버-클라이언트 구조 : 서버와 클라이언트를 분리해 상호간 의존성을 줄여야 한다. 무상태성 : 클라이언트에서 보내는 요청에 필요한 모든 정보를 포함시켜 서버가 세션 정보를 저장하지 않아야 한다. 캐..