검색 본문
hseong.tistory.com 개발 일지 [MySQL] 옵티마이저의 데이터 처리 방식 쿼리 실행 절차 MySQL 서버에서 쿼리가 실행되는 과정은 크게 세 단계로 나누어질 수 있습니다. 사용자로부터 요청된 SQL 문장을 잘게 쪼개서 MySQL 서버가 이애할 수 있는 수준으로 분리(파스 트리)한다. SQL의 파싱 정보(파스 트리)를 확인하면서 어떤 테이블부터 읽고 어떤 인덱스를 이용해 테이블을 읽을지 선택한다. 두 번째 단계에서 결정된 테이블의 읽기 순서나 선택된 인덱스를 이용해 스토리지 엔진으로부터 데이터를 가져온다. 이 중 두 번째 단계가 "최적화 및 실행 계획 수립" 단계로 옵티마이저가 처리합니다. 이 단계에서는 SQL 파스 트리 비용기반 최적화(Cost-based optimizer, CBO) 현재 대부분의 DBMS는 비용 기반 최적화를 사용합니다. 비용 기반 최적화는 쿼리를 처리하기 위한 여러 가지 가능한 방법을 만들고, 각 단위 작업의 비용(부하) 정보와 대상 테이블의 통계 정보를 이용해 실행 계획별 비용을 산출합니다. 이 중 비용이 최소인 처리 방식을 선택하여 최종적으로 쿼리를 실행합니다. 기본 데이터 처리 풀 테이블 스캔과 풀 인덱스 스캔 풀 테이블 스캔은 인덱스를 사용하지 않고 테이블의 데이터를 처음부터 끝까지 읽어서 요청된 작업을 처리하는 것을 의미합니다. 풀 테이블 스캔은 다음과 같은 조건에서 선택됩니다. 테이블의 레코드 건수가 작아 풀 테이블 스캔이 더 빠른 경우(일반적으로 테이블이 페이지 1개로 구성된 경우) WHERE 절이나 ON 절에 인덱스를 이용할 수 있는 적절한 조건이 없는 경우 옵티마이저가 판단한 조건 일치 레코드 건수가 너무 많은 경우 풀 테이블 스캔 테이블 전체를 읽어들이면서 상당히 많은 디스크 읽기가 필요 InnoDB 스토리지 엔진은... 병렬 처리 MySQL 8.0부터는 하나의 쿼리를 여러 스레드가 동시에 처리하는 병렬 처리가 가능해졌습니다. innodb_parallel_read_threads라는 시스템 변수를 이용해 하나의 쿼리를 최대 몇 개의 스레드를 이용해서 처리할지 변경할 수 있습니다. MySQL 8.0 버전에서는 아무런 WHERE 조건 없이 단순히 테이블의 전체 건수를 가져오는 쿼리만 병렬로 처리할 수 있습니다. ORDER BY 처리(Using filesort) 정렬을 처리하는 방법은 인덱스를 이용하는 방법, 쿼리가 실행될 때 "Filesort"라는 별도의 처리를 이용하는 방법으로 나눌 수 있습니다. 모든 정렬이 "Filesort"라는 정렬 작업을 거칠 필요는 없지만, 다음과 같은 이유로 모든 정렬을 인덱스를 이용하도록 튜닝하는 것은 거의 불가능합니다. 정렬 기준이 너무 많아 요건별로 모두 인덱스를 생성하는 것이 불가능한 경우 GROUP BY의 결과 또는 DISTINCT 같은 처리의 결과를 정렬해야 하는 경우 UNION의 결과와 같이 임시 테이블의 결과를 다시 정렬해야 하는 경우 랜덤하게 정렬 알고리즘 레코드 정렬 시 레코드 전체를 소트 버퍼에 담을지, 정렬 기준 컬럼만 소트 버퍼에 담을지에 따라 MySQL 서버는 3가지 정렬 방식을 가집니다. <sort_key, rowid>: 정렬 키와 레코드의 로우 아이디만 가져와서 정렬하는 방식 <sort_key, additional_fields>: 정렬 키와 레코드 전체를 가져와서 졍럴하는 방식, 레코드 컬럼들은 고정 사이즈로 메모리 저장 <sort_key, packed_additional_fields>: 정렬 키와 레코드 전체를 가져와서 정렬하는 방식, 레코드 컬럼들은 가변 사이즈로 메모 정렬 처리 방법 쿼리에 ORDER BY가 사용되면 반드시 다음 3가지 처리 방법 중 하나로 정렬이 처리됩니다. 아래쪽으로 갈수록 처리 속도는 떨어집니다. 옵티마이저가 정렬 처리를 위해 인덱스를 이용할 수 있다면 인덱스를 읽어서 결과를 반환합니다. 그렇지 않다면 WHERE 조건에 일치하는 레코드를 검색해 소트 버퍼에 저장하면서 정렬을 처리합니다. 인덱스를 이용한 정렬 인덱스를 이용한 정렬을 위해서는 다음의 조건을 만족해야 합니다. 반드시 ORDER BY에 명시된 컬럼이 제일 먼저 읽는 테이블에 속하고, ORDER BY의 순서대로 생성된 인덱스가 있어 GROUP BY 처리 GROUP BY 또한 쿼리가 스트리밍된 처리를 할 수 없게 하는 처리 중 하나입니다. GROUP BY에 사용된 조건은 인덱스를 사용해서 처리될 수 없기 때문에 HAVING 절 튜닝을 고민할 필요는 없습니다. 인덱스 스캔을 이용하는 GROUP BY(타이트 인덱스 스캔) 조인의 드라이빙 테이블에 속한 컬럼만 이용해 그루핑하면 인덱스를 읽어 작업을 수행하고 그 결과로 조인을 처리합니다. 이 방식을 사용하는 경우 Extra 컬럼에 별도의 코멘트가 표시되지 않습니다. 루스 인덱스 스캔을 이용하는 GROUP BY 루스(Loose) 인덱스 스캔 DIDSTINCT 처리 DISTINCT는 집합 함수와 함께 사용되는 경우와 그렇지 않은 경우의 영향을 미치는 범위가 서로 다릅니다. 또한, DISTINCT 처리가 인덱스를 사용하지 못할 때는 항상 임시 테이블이 필요합니다. SELECT DISTINCT SELECT DISTINCT는 GROUP BY와 동일한 방식으로 처리되며, SELECT 절에 사용된 DISTINCT 키워드는 조회되는 모든 컬럼에 영향을 미칩니다. 이 때의 DISTINCT는 SELECT 절에 사용된 모든 컬럼의 조합이 유니크한 레코드를 조회합니다. 집합 함수와 함께 사용된 DISTINCT 내부 임시 테이블 활용 MySQL 엔진이 스토리지 엔진으로부터 받아온 레코드를 정렬하거나 그루핑할 때는 내부적인 임시 테이블(Internal temporary table)을 사용합니다. 임시 테이블은 처음에는 메모리에 생성됐다가 크기가 커지면 디스크로 옮겨지게 됩니다. 이후 쿼리의 처리가 완료되면 자동으로 삭제됩니다. 메모리 임시 테이블과 디스크 임시 테이블 MySQL 8.0 버전부터 메모리는 TempTable이라는 스토리지 엔진을 사용하고, 디스크에 저장되는 임시 테이블은 InnoDB 스토리지 엔진을 사용합니다. 8.0 이전 버전에서 메모리 임시 테이블 7 DISTINCT는 집합 함수와 함께 사용되는 경우와 그렇지 않은 경우의 영향을 미치는 범위가 서로 다릅니다. 또한, DISTINCT 처리가 인덱스를 사용하지 못할 때는 항상 임시 테이블이 필요합니다. SELECT DISTINCT SELECT DISTINCT는 GROUP BY와 동일한 방식으로 처리되며, SELECT 절에 사용된 DISTINCT 키워드는 조회되는 모든 컬럼에 영향을 미칩니다. 이 때의 DISTINCT는 SELECT 절에 사용된 모든 컬럼의 조합이 유니크한 레코드를 조회합니다. 집합 함수와 함께 사용된 DISTINCT 정렬 mysql order by 임시 테이블 Group by DISTINCT 옵티마이저 Real MySQL 2024.05.15 블로그 검색 더보기 yeonco.tistory.com coding.king numpy 정수형 데이터의 처리방식으로 인한 오류 7 학습 내용 python에서의 정수형 데이터 처리 방식을 이해한다 numpy의 정수형 데이터 처리방식을 이해한다 (C언어) 들어가며 p 값의 변화에 따른 norm 값의 변화를 직접 확인해보고자 아래 코드를 실행시키다 보니 19부터 numpy 패키지를 통해 계산한 값과 직접 하드코딩으로 계산한 값의 차이가 나타나기 시작했다. 이... 자료형 int float object numpy 2024.05.24 twdatastory.tistory.com 데이터스토리(Data Story) 데이터 처리 방식 OLTP OLAP 알아보기 1. 데이터 처리 방식 OLTP와 OLAP 란 OLTP와 OLAP가 어떤 내용인지 부터 알아보겠습니다. 그전에 데이터란 무엇일까요? 1) 약어의 의미 OLTP는 영문 Full Name으로 Online Transaction Processing system입니다. 의미를 풀어보면 온라인으로 트랜잭션을 처리하는 시스템이란 것이죠. 즉, 온라인으로 데이터 처리를 위한 시스템입니다. 중요한것은 "데이터 처리"라는 것이죠, 그럼 OLAP를 살펴보죠. OLAP의 영문 Full Name은 Online Analytical Processing system입니다. 의미를 풀어보면 온라인으로 분석작 2. OLTP와 OLAP 비교 알아보기 OLTP와OLAP를 비교해 보겠습니다. 비교하다보면 서로의 차이와 용도를 알기 편합니다. 1) OLTP와 OLAP 비교 항목 OLTP OLAP 기본 온라인 트랜잭션 시스템이며, DB의 데이터를 수정한다. 온라인 분석 시스템으로 데이터 분석과 검색을 한다. 중점사항 데이터베이스에서 정보를 삽입, 수정, 삭제한다. 의사결정에 도움이 되는 분석용 데이터를 추출한다. Data OLTP와 해당 트랜잭션은 데이터의 원본 소스이다. 다양한 OLTP 데이터베이스가 OLAP용 데이터 소스가 된다. 거래 OLTP는 트랜잭션이 짧다. 3. 정리하며 이번 포스팅은 데이터 처리방식의 2가지에 대해서 알아봤습니다. OLTP는 데이터를 처리하는 시스템으로 데이터를 추가, 수정, 삭제합니다. 즉, 데이터에 직접적인 영향을 주는 것입니다. OLAP는 대량의 데이터에서 다차원 분석을 하는 검색용 시스템입니다. 취급하는 업무와 목저에 따라 OLTP와 OLAP를 구성하여 활용하시면 됩니다. 보통 규모가 있는 회사는 OLTP를 먼저만들고, 이어서 OLAP를 만들어 관리합니다. 회사가 작을 때는 업무 트랙잭션에 충실하지만, 규모가 커지면 영업, 품질, 마케팅 등을 위해 분석시스템이 필수적으로 필 3 이번 포스팅은 데이터 처리방식의 2가지에 대해서 알아봤습니다. OLTP는 데이터를 처리하는 시스템으로 데이터를 추가, 수정, 삭제합니다. 즉, 데이터에 직접적인 영향을 주는 것입니다. OLAP는 대량의 데이터에서 다차원 분석을 하는 검색용 시스템입니다. 취급하는 업무와 목저에 따라 OLTP와 OLAP를 구성하여 활용하시면 됩니다. 보통 규모가 있는 회사는 OLTP를 먼저만들고, 이어서 OLAP를 만들어 관리합니다. 회사가 작을 때는 업무 트랙잭션에 충실하지만, 규모가 커지면 영업, 품질, 마케팅 등을 위해 분석시스템이 필수적으로 필 oltp olap 차이점 olap 특징 oltp 특징 oltp olap 비교 oltp란 무엇인가 olap란 무엇인가 데이터 분석을 위한 시스템은 트랜잭션이란 무엇인가 2024.04.28 modutaxi-tech.tistory.com 모두의 택시 기술 블로그 [React] React의 에러 처리 방식 9 Error-boundary 에서 잡을 수 있게 됩니다. showBoundary를 활용한 에러 처리 const postTodo = async () => { try { await postTodo(); } catch (error: any...Error-boundary 로 에러를 보낼 수 있는 것이죠 우리의 에러 핸들링 방식 저희는 이제 위 모든 것을 조합하여 에러를 핸들링 해 볼 것입니다. 1. 토큰에러... 2024.04.19 shinjaeeun.tistory.com 신재은 JavaScript의 비동기 처리방식 6 displayB 메소드에게 2초라는 시간을 부여하니 displayC가 먼저 실행된 것을 확인할 수 있어요. 동기와 비동기처리방식을 비유하자면..🤔 커피주문을 예시로 두 방식에 대해 설명해보겠습니다. 동기 처리 방식은 앞 사람이 커피를 주문하면 다음 사람은 앞 사람이 커피를 받을 때까지 기다려야 하는 것이고, 비동기 처리... 2024.04.13 통합웹 더보기
서비스 안내 스토리의 글을 대상으로 검색결과를 제공합니다. 자세히보기 네버슬립 커리어 분야 크리에이터 노션으로 일하는 방식 바꾸기: 협업 업무 시스템 - 노션(Notion) 활용 꿀팁: 작은 조직 맞춤형 운영 체계 만들기 6 고객과 미팅 날짜를 여러 개 잡은 후 조율할 수 있습니다. 실제로 잘 작동하는 노션 업무 시스템은? 제일 먼저 해야 할 것은! 우리 조직이 업무를 처리하는 방식을 파악해야 합니다. 프랜차이즈, 스타트업, 마케팅 에이전시, 오프라인 매장 등 조직마다 업무 방식이 다릅니다. 각 부서, 업무 성격별로도 다르죠. 협업툴... 시스템 업무 체계 2024.04.03 브런치스토리 검색 더보기 story.kakao.com 다비치헤어 다비치헤어 - 카카오스토리 2 부드럽고 탄력 있는 모발로 윤기나게 빗겨줍니다. 인체 공학적 Vent 패들 Body 부분이 Vent 방식으로 처리되어 드라이 시술 시 공기 유입이 용이해 컬링과 볼륨 스타일링에 매우 뛰어납니다. 탁월한 실용성... 2024.05.18 카카오스토리 검색 더보기 커리어 크리에이터 보기
서비스 안내 Kakao가 운영하는 책 서비스 입니다. 다른 사이트 더보기 방식 및 표면처리 저자 박준규 출간 2013.6.27. 도서 25,200원 방식 및 표면처리 저자 박준규 출간 1998.3.30. 탄소배출권의 회계처리 방식과 후생효과에 관한 연구 저자 김은정 출간 2014.12.19. 도서 7,200원 방식기술 및 표면처리 저자 조종수 출간 1992.1.10. (주)카카오는 상품판매의 당사자가 아닙니다.법적고지 안내 (주)카카오는 통신판매중개자로서 통신판매의 당사자가 아니며 상품의 주문 배송 및 환불 등과 관련한 의무와 책임은 각 판매자에게 있습니다.
앤알비 nrb.co.kr 신청자 작성 미생물발효방식 음식물처리기기 생산 및 유통. 미생물발효방식 음식물처리기기, 고성능 음식물 처리기 기업. 전화고객센터: 031-915-2700 장소 전자자료 교환방식에 의한 수출입신고 업무처리 승인 www.gov.kr/main?a=AA020InfoCappViewApp&HighC... 정부24 민원안내, 신청방법, 자격, 처리기간, 수수료, 신청서, 필요서류 제출, 구비, 발급, 온라인, 인터넷 접수, 기관방문, 소관부서, 근거법령. 경기도 옴부즈만 www.gg.go.kr/ombudsman 소개, 운영 방식, 절차, 대상기관, 민원신청방법, 처리결과 제공. 사이트 더보기
이미지
뉴스
쇼핑
사이트
같이가치
- 함께 만드는 '용기'있는 배달문화!
플라스틱 배달 용기의 문제를 다양한 각도에서 접근해보고 시민들과 함께 생활방식의 변화를 만들어보고자 합니다. 우선, 배달 용기로 이용되는 플라스틱 재질에 대해, 생산-유통-소비-처리 각 단계에서 발생하는 문제가 무엇인지 조사해보려고 합니다. 그리고
사단법인 녹색연합 달성률 모금완료 총 모금액 18,320,400원 - 시간이 멈춰진 그 날! 그 날을 기억하며..
교육방식으로 진행합니다. 또한 세월호 참사의 희생자들의 꿈을 기억하기 위해 ‘걸으며 함께 만들어 가는 4.16이야기’와 기억과 기록의 의미와 가치에 대하여 생각하게 만드는 프로그램 등으로 진행됩니다. 2017년에 제1기를 시작으로 현재 제
416기억저장소 달성률 모금완료 총 모금액 4,351,100원