전체 글 96

MYSQL 인덱스

1. 디스크 읽기와 쿼리 성능 1) 디스크 읽기의 오버헤드 컴퓨터의 CPU나 메모리처럼 전기적 특성을 띤 장치의 성능은 매우 빠른 속도로 발전했지만 디스크 같은 기계식 장치의 성능은 상당히 제한적으로 발전했다. 비록 최근 SSD가 많이 활용되고 있지만 여전히 컴퓨터에서 가장 느린 부분이라는 점은 변함이 없다. 이 때문에 데이터베이스의 성능 튜닝은 어떻게 디스크 I/O를 줄이느냐가 관건이다. 2) 랜덤 I/O와 순차 I/O 기본적으로 순차I/O는 랜덤I/O보다 빠른데, 이는 SSD에서도 동일하게 적용되는 개념이다. 따라서 일반적으로 쿼리를 튜닝하는 것은 랜덤 I/O를 줄여주는 것이 목적이라고 할 수 있다. 2. 인덱스 1) 인덱스란? 보통 인덱스란 찾아보기(색인)으로 설명한다. DBMS 인덱스 역시 동일한..

Mysql & Maria/admin 2023.03.23

NL 조인 튜닝 예시

테스트 데이터 환경 아래 스크립트 참조 * 튜닝 포인트 : SQL수정 or 인덱스 변경가능 OLTP에 최적화 T_고객23 - 총건수 : 2만건 - 고객성향코드 = '920' : 101건 - 고객성향코드 종류 : 200종류 - 인덱스 : PK_T_고객23 (고객번호) T_주문23 - 총 건수: 200만건 - 아래 조건의 결과 : 10,000건 O.주문일자 LIKE '201701%' AND O.상품코드 = 'P103' - 인덱스 : PK_T_주문23 (주문번호) */ DROP TABLE test.T_cust_KM; CREATE TABLE test.T_cust_KM (custno VARCHAR2(7), custname VARCHAR2(50), custcode VARCHAR2(3), C1 VARCHAR2(30)..

오라클/튜닝 2023.02.21

테이블 random 액세스 쿼리 튜닝 예시

테스트 데이터 환경 아래 스크립트 참조 인덱스 : 주문지역코드, 주문일자, 주문금액 * 튜닝 포인트 : 인덱스 수정 불가 하며 SQL은 수정 가능 * 전체데이터 : 1,000만건 * 주문일자 : 2019.05.24 - 2019.08.31 (100일) 1일당 10만건 * 주문지역코드 : 1, 2, 3, 4, 5 (고르게 분포) * 주문금액 : 1만원 - 100만원 (고르게 분포) ALTER SESSION SET WORKAREA_SIZE_POLICY = MANUAL; ALTER SESSION SET SORT_AREA_SIZE = 2000000000; drop table test.t_order_km; --테이블생성 create table test.t_order_km AS SELECT A.custno, orde..

오라클/튜닝 2023.02.13

My sql 성능 최적화

* Mysql 기본 아키텍처를 이해하고 성능 최적화를 위해서 기본 개념 정리한다. * 고성능 시스템 구축을 위한 전략과 최적화 기법 Mysql 아키텍처 mysql 논리적 아키텍처 최상위 계층인 클라이언트에는 (네트워크기반 클라이언트/서버 도구, 인증, 보안 등 포함) 두번째 계층 -쿼리 파싱, 분석, 최적화 및 기본 제공 함수 (mysql 지능적인 부분이 여기에 속함) 세번째 계층 - 스토리지 엔진 포함하며 모든 데이터 저장하고 검색하는 역할 담당 연결 관리 및 보안 클라이언트가 mysql 서버에 연결되면 서버에서 인증해야한다. 인증은 사용자 이름, 호스트 및 암호를 기반으로 한다. 클라이언트가 연결되면 각 쿼리에 권한이 있는지 확인한다. 최적화 및 실행 mysql은 쿼리를 구문 분석해 내부 구조를 생성..

Mysql & Maria/admin 2022.12.23

mysql 아키텍쳐

innoDB buffer pool / redo log buffer / additional memory pool buffer pool - buffer cache 해당하나 insert buffer 영역 존재 insert buffer 는 데이터 변경이 일어나면 성능 향상을 위해 사용되는 영역 redo log buffer = redo log buffer additional memory pool doublewrite buffer 페이지를 디스크에 저장할때 발생하는 장애상황을 대비한 복구용도영역 buffer pool - 메모리에 데이터와 인덱스를 캐싱하기 위한 영역, 4가지 모듈을 조정 1. lru replacement algorithm 2. flush algorithm 3. buffer read 4. binary..

카테고리 없음 2022.12.20

postgresql 메모리구조

postgresql 메모리 아키텍처 oracle postgresql data buffer cache = shared buffers redo log buffer = wal buffers 트랜잭션 커밋여부 clog buffers shared buffers 1. hash table - 데이터가 메모리에 로드되어 있는지 변수는 sharedbufhash 이고 변수의 구조체는 HTAB 이다. hctl , dir 이 중요하다. hctl -freelist 정보를 포함 hash segment - buffer hash partition / dir / segment / hash element 포함 buffer hash partition = 헤시 엘리먼트 추가시 락을 설정하는 역할 dir - 각 세그먼트의 시작위치를 가르킴 ..

카테고리 없음 2022.12.20

제 1-2-3 정규화 & 역정규화

1. 정규화란? ERD내에서 중복요소를 찾아 제거해 나가는 과정 - 중복된 데이터는 많은 문제를 일으킨다. 2. 데이터베이스 정규화 절차 2.1 제 1 정규화 -> 제1차 정규화는 같은 성격과 내용의 컬럼이 연속적으로 나타나는 컬럼이 존재할 때, 해당 컬럼을 제거하고 기본테이블의 PK를 추가해 새로운 테이블을 생성하고, 기존의 테이블과 1:N 관계를 형성하는 것이다. tag필드를 보면, 값들이 여러개가 있다. 하나의 필드에 값들이 여러개 있으면 안된다. 이를 정규화 시키보자. 1. 우선 하나의 title은 여러개의 tag를 갖는다. 또한 하나의 tag(rdb)는 여러개의 title(mySQL, Oracle)을 갖는다. 2. 그러면 title과 tag를 테이블 두개로 분리했을때 이들의 관계는 M:N이 된다..

DA 2022.12.16

데이터 모델링 개념

https://www.erdcloud.com/ ERDCloud Draw ERD with your team members. All states are shared in real time. And it's FREE. Database modeling tool. www.erdcloud.com 1. 데이터모델링이란? 데이터 모델링이란 정보시스템 구축의 대상이 되는 업무 내용을 분석하여 이해하고 약속된 표기법에 의해 표현하는걸 의미한다. 그리고 이렇게 분석된 모델을 가지고 실제 데이터베이스를 생성하여 개발 및 데이터 관리에 사용되는, 데이터베이스 설계의 핵심 과정이기도 하다. 특히 데이터를 추상화한 데이터 모델은 데이터베이스의 골격을 이해하고 그 이해를 바탄으로 SQL문장을 기능과 성능적인 측면에서 효율적으로 작성..

DA 2022.12.16

6장. DML 튜닝

6.3 파티션을 활용한 DML 튜닝 테이블 파티션 오라클 파티션테이블은 하나의 큰 테이블을 물리적으로 나눠놓은 것입니다. 물리적으로 나눴지만 논리적으로는 하나의 테이블로 간주됩니다. 왼쪽 그림처럼 Sales 테이블에 1월데이터부터 5월데이터까지 하나의 통테이블에 몰아서 넣을수 있습니다. 하지만, 파티션테이블을 사용하게되면 오른쪽 그림처럼 월마다 다른 세그먼트에 Sales 데이터를 나눠서 넣을 수 있습니다. 이렇게 나눠서 넣어놔도 사용자는 1월~5월치 데이터가 마치 하나의 Sales 테이블에 들어있는 것처럼 사용할 수 있습니다. Range Partition Range Partition 은 범위로 구분되는 파티션 테이블, 범위(Range)에는 숫자, 날짜, 문자가 모두 가능 참조 : https://jack-..

오라클/튜닝 2022.06.26