전체 글
-
short query , long query 란 무엇인가? sql최적화 팁 - 수정중데이터베이스/postgresql 2024. 5. 13. 13:49
첫 번째 단계는 쿼리가 짧은 쿼리인지 긴 쿼리인지 식별하는 것입니다. 이 장에서는 짧은 쿼리를 최적화하는 데 중점을 둡니다. 짧은 쿼리를 식별하는 방법, 짧은 쿼리에 사용할 최적화 기술, 이 쿼리 유형에 인덱스가 매우 중요한 이유를 배우게 됩니다. 또한 PostgreSQL에서 사용할 수 있는 다양한 유형의 인덱스와 각 인덱스 유형을 사용할 수 있는 경우에 대해서도 설명합니다. 이 챕터를 진행하기 전에 몇 가지 추가 인덱스를 만들어 보겠습니다 SELECT d.airport_code AS departure_airport, a.airport_code AS arrival_airportFROM airport a, airport dLong query 1-1SELECT f.flight_no, f.scheduled..
-
POSTGRES 테이블 인덱스 - 정리데이터베이스/postgresql 2024. 5. 10. 12:01
Contents --> 인덱스(INDEX)란? • 중복 데이터 구조• 응용 프로그램에 표시되지 않음 • 특정 기준에 따라 데이터 선택 속도를 높이도록 설계 중복성은 데이터 손실 없이 인덱스를 삭제할 수 있고 다른 곳(물론 테이블)에 저장된 데이터에서 재구성할 수 있음을 의미합니다. 응용 프로그램 표시되지 않음은 인덱스가 있는지 여부를 감지할 수 없음을 의미합니다. 즉, 모든 쿼리는 인덱스가 있든 없든 동일한 결과를 생성합니다. 마지막으로, 인덱스는 특정 쿼리 또는 (더 나은!) 여러 쿼리의 성능을 향상시킬 수 있다는 확신으로 만들어집니다. 인덱스 오버헤드 성능 이슈 테이블 인덱스는 테이블이 추가될떄마다 인덱스 테이블도 추가된다. 그러므로 많은 인덱스를 설정할경우 insert 성능 이슈가 있을수있다...
-
동기(sync)/비동기(async) , 블로킹(blocking)/논블로킹(nonblocking) 쉽게 이해하고 완전 정복 하자 with 예제코드 with java컴퓨터과학 2024. 5. 8. 14:45
Contents --> 예전에 공부했는데 다시보면 헷갈리는 동기,비동기, 블로킹,논블로킹에 대해 마스터 하겠다고 생각하고정리한내용을 적어봅니다. 동기(Sync) Vs 블록킹(Blocking)일단 제목만 봐도 두개가 다른 개념이라는것을 알수있다. 한번 정의를 내려보자 동기(Sync):작업들이 순차적으로 실행되고, 다음 작업은 이전 작업이 완료될 때까지 기다립니다. 이는 여러 작업들이 순서대로 진행되는 것을 의미합니다.블로킹(Blocking):한 작업이 완료될 때까지 다른 작업을 멈추고 대기하는 것을 의미합니다. 보통 입출력 작업이나 네트워크 호출과 같은 I/O 작업에서 발생합니다. 두개의 개념은 비슷하면서도 다른의미를 가지고 있다. 즉, 동기적 작업은 순서대로 실행되지만, 블로킹이 발생할 수도 있고..
-
DMA(Direct Memory Access)란 왜사용할까? - 수정중컴퓨터과학 2024. 5. 8. 13:29
Contents --> 입출력 제어 방식프로그램(프로세스)에 의한 I/O (cpu 개입)인터럽트에 의한 I/O (cpu 개입)DMA에 의한 I/O (cpu 개입하지 않음)채널에 의한 I/O (cpu 개입하지 않음) DMA (직접 메모리 접근) DMA는 주변장치 (하드디스크,그래픽카드)등이 메모리에 직접 읽거나 쓸수있도록 하는 기능입니다. DMA는 Cpu의 개입없이 I/O를 진행하는 방식입니다. Cpu PIO 토대로 주변장치와 데이터를 주고받으며 , cpu 싸이클을 돌며 데이터를 주고받기떄문에 약간에 딜레이가 존재합니다. ( 대기,실행,준비 등 사이클을 반복하며 프로세스가 동작함) 이를 극복하기위해 DMA기술이 개발되었습니다. 예를 들어, 시스템에 CPU 자체, RAM 및 I/O 장치 등 3개의 구성..
-
쿠버네티스 pod란 ?파드란? pod생성 및 사용법 -수정중Devops/kubernetes 2024. 5. 3. 07:36
Contents --> POD(파드)란?쿠버네티스는 개별 컨테이너를 직접 처리하지 않는다. 공동 배치된 컨테이너의 개념을 사용합니다. 이 컨테이너 그룹을 파드(Pod)라고 한다.Pod는 항상 동일한 작업자 노드와 동일한 Linux 네임스페이스에서 함께 실행되는 하나 이상의 밀접하게 관련된 컨테이너 그룹입니다. 각 Pod는 자체 IP, 호스트 이름, 프로세스 등이 있는 별도의 논리적 시스템과 같으며 단일 애플리케이션을 실행합니다. 응용 프로그램은 단일 컨테이너에서 실행되는 단일 프로세스일 수도 있고, 각각 자체 컨테이너에서 실행되는 기본 응용 프로그램 프로세스 및 추가 지원 프로세스일 수도 있습니다. Pod의 모든 컨테이너는 동일한 논리 머신에서 실행되는 것처럼 보이지만 다른 Pod의 컨테이너는 동일..
-
SQL 인덱스 기본 사용법 - 수정중데이터베이스/최적화 2024. 5. 2. 22:31
수직적 탐색 :수평적 탐색 : 인텍스를 정상적으로 사용한다?인덱스를 정상적으로 사용한다는것은 리프 블록에서 스캔 시작점을 찾고 거기서부터 스캔하다가 중간에 멈추는것을 의미한다. OR 조건 검색수직적 탐색을 통해 전화번호가 '01022222222'이거나 고객명이 '홍길동' 인 어느 한 시작지점을 바로 찾을수 없다따라서 인덱스를 어떤 방식을 구성해도 Range Scan을 할수없다where (전화번호 = :tel_no OR 고객명 = :cust_nm) 위와같은 쿼리는 select *from 고객where 고객명 = :cust_nmunion allselect *from 고객where 전화번호 =:tel_noand (고객명 :cust_nm or 고객명 is null) 로 변경하면 인덱스를 타고 이것을 OR E..
-
SQL 최적화 테스트공부일기장 2024. 5. 2. 22:30
1.복합 인덱스 테스트이름 ,시력 시력, 이름으로 했을경우 속도가 똑같은지 확인 2.가공한값으로 인덱스 테스트실험 이유 : 이름으로 정렬되어있을경우 (인덱스) 김동완,김진수,김지수 로 되어있을경우만약에 where절에 '진수'로 검색할경우 인덱스 풀스캔을 탄다??인덱스를 탈대는 Index range scan 을 사용해야 정삭적으로 인덱스를 타는것이다.인덱스를 정상적으로 사용한다는것은 리프 블록에 스캔 시작점을 찾는것이다. 3. 라이크롤 인덱스를 태울수없다??실험 : 만약에 인덱스를 탄다는게 리프블록에 스캔 시작점을 찾는것이라면, Like를 썻을때스캔 시작점에 있는 이름과 똑같이 적는다면 과연 인덱스를 태울까?예) Like 김동완