본문 바로가기

데이터베이스41

데이터베이스 인덱스 설계: 쿼리 속도를 높이는 방법 저는 쿼리를 작성할 때 인덱스가 있는지 먼저 확인하는데요. 그만큼 인덱스는 쿼리 속도에 큰 영향을 줍니다. "이거 인덱스 설계가 잘 못된 거 아냐?"라는 말을 현장에서 많이 하게 되죠. 인덱스가 잘 설계되지 않으면 없는니만 못합니다. 그렇다면 인덱스 설계는 어떤 방법으로 진행하는 걸까요? 이 글은 인덱스 설계 전략에 대해 심도 있게 이야기해 보겠습니다. 인덱스 설계 오너쉽 필요성시스템별로 수천개부터 수백 개까지 많은 테이블을 기업들은 관리합니다. 보통 인덱스는 테이블의 몇 배로 관리되어야 하는데요. 소수의 DBA(데이터베이스 관리자) 혹은 성능 전문가가 모든 인덱스 설계를 책임질 수 없는 현실입니다. 관리해야 할 테이블 및 인덱스 수가 적은 중소기업에서는 DBA라는 전담인력조차 둘 수 없는 현실이죠. 결.. 2024. 5. 17.
결합(복합) 인덱스 어떻게 구성할까? 인덱스를 사용하다 보면 단일 인덱스(Single Index)만 사용하지 않습니다. 복합 인덱스라고도 하는 결합 인덱스는 테이블의 여러 열을 포함하는 인덱스입니다.  즉 단일칼럼이 아닌 2개 이상의 칼럼으로 구성된 인덱스를 결합 인덱스라고 합니다.  사이트에 가보면 결합 인덱스(Concatenated Index)를 잘 못 구성하는 사례가 많은데요. 어떻게 구성해야 할까요?   결합 인덱스 구성 가이드잘 알겠지만 모든 SQL 조건절마다 최적화된 인덱스들을 모두 생성할 수는 없습니다. 대체적으로 조건절에 자주 사용되는 칼럼들이 선정 대상이 됩니다.  되도록이면 선정된 칼럼들 중 ‘=‘ 조건으로 자주 조회되는 칼럼을 앞쪽에 위치하는 것이 유리합니다. 정력(Sort) 작업이 생략되도록 칼럼 추가를 고려하는 것을 .. 2024. 5. 16.
인덱스가 왜 필요했을까? 데이터베이스를 공부할 때 인데스를 빼놓고는 이야기할 수 없습니다. 데이터베이스에서 성능 최적화라고 할 때에도 인덱스 어떻게 사용할지가 중요합니다. 인덱스 전략이라고 하죠. 이 글에서는 인덱스가  왜 필요했고 어떻게 발전해 왔는지 알아보도록 하겠습니다.    인덱스(Index)의 발전 과정테이블에서 필요한 데이터만 빠르고 효율적으로 액세스하기 위해 사용하는 오브젝트가 필요했습니다. 이 인덱스(Index) 기술은 점점 방대해지는 데이터 속에서 빠른 검색이 가능하도록 발전해 갔습니다.  만약 데이터베이스의 발전 과정이 궁금하시면 링크를 확인하시기 바랍니다.   1. Sam FileSam(sequential access method) 파일은 순차적으로 액세스 할 수 있는 파일을 말합니다. 이 때는 k bytes.. 2024. 5. 13.
Redis의 특징, 어떻게 사용할까? 최근 몇 년 동안 상당한 관심을 얻은 데이터베이스 중 하나가 Redis입니다. 인터넷 검색을 해보니 2017년 이후 점유율이 10% 증가한 29%로 선두 그룹에 합류했더라고요. Redis가 인-메모리 데이터베이스라는 정도는 많은 분들이 알고 있는데요. 이 글에서는 Redis만의 특징과 어떻게 활용할 수 있는지를 살펴보도록 하겠습니다.    Redis란?Redis는 'Remote Dictionary Server'를 의미합니다. 이름에서 알 수 있듯이 Dictionary 구조입니다. 파이썬을 사용해 본 사람은 쉽게 생각해 Dictonary 데이터 타입을 생각하면 됩니다. 이는 Key-Value 형태로 데이터베이스에서 작동합니다. 즉, 각 데이터 조각이 고유 식별자 또는 키와 연결되는 형식으로 데이터를 저장합.. 2024. 4. 26.
SQL 파싱 과정: 하드파싱(hard parsing) vs 소프트파싱(soft parsing) 우리는 SQL을 단순히 실행하는데요. 내부에서는 여러 단계 프로세스를 거칩니다. SQL문을 데이터베이스 엔진이 이해하고 평가한 후 실행까지 하는 작은 작업들로 구성되어 있습니다. 이글에서 어떻게 SQL 구문 분석을 하는지 파싱과정을 상세하게 설명해 보도록 하겠습니다. SQL 파싱 과정우선 SQL을 하나하나 쪼개는 파싱 작업을 수행합니다. 쉽게 말해서 단어를 토큰화 한다고 볼 수도 있습니다. 그리고 나면 Optimiation 단계로 넘어가는데요. 이 단계는 아래 세 가지 과정을 거칩니다.Query transformer에서 사용자가 실행한 SQL을 그대로 최적화하는게 아니라 먼저 최적화하기 쉬운 형태로 변환을 합니다. 단 결과가 동일한 범위에서만 이 작업을 수행합니다. Plan Generator에서 하나의 .. 2024. 4. 11.
SQL 다중처리(Array Processing) 원리 SQL의 LOOP-QUERY와 ONE-SQL 장단점 비교 글에서 이야기했듯이 LOOP 쿼리를 수행하면 한 건씩 처리하게 됩니다. 그래서 ONE-SQL로 만들어야 하는데요. 만약 ONE-SQL로 가져오는 데이터량이 너무 많으면 어떻게 될까요? 이때 하드웨어의 메모리보다 더 많은 데이터를 가져오려고 한다면 메모리가 full 나서 수행되지 않을 것입니다. 이런 경우에 사용할 수 있는 방법이 Array Processing입니다. Array Processing의 특징 Array Processing은 한 번의 SQL 수행(ONE-SQL)으로 다량의 레코드 동시 처리하는 방법입니다. 이는 네트워크를 통한 데이터베이스 Call 감소시키고, SQL 수행시간과 CPU 사용량의 획기적으로 감소하는 이점이 있습니다. 대용량 .. 2024. 3. 21.
SQL의 LOOP-QUERY와 ONE-SQL 장단점 비교 SQL을 개발할 때 중요한 것은 "빠른 데이터 검색"과 "쿼리 성능(리소스) 최적화"입니다. 여기서 쿼리 처리에 사용되는 두 가지 일반적인 방법이 있죠. 바로 LOOP-QUERY와 ONE-SQL 처리 방식입니다. 보통은 LOOP 쿼리는 지양하고 ONE-SQL을 권장하는 내용이 많죠. 왜 그럴까요? 그 이유를 알고 사용하는 것이 중요합니다. 때로는 LOOP 쿼리가 필요한 경우도 있습니다. ONE-SQL이 적합하지 않는 경우도 있고요. 그래서 각각 고유한 장점과 제한 사항을 알아 둘 필요가 있습니다. 이 글에서는 SQL 쿼리를 최적화할 때 도움이 되도록 두 가지 방법의 특징과 장단점을 자세히 살펴보겠습니다. LOOP-QUERY 처리 방법 LOOP-QUERY 방법은 쉽게 말해 데이터를 가져올 때 LOOP를 통.. 2024. 3. 19.
인메모리(in-memory) db 유형에 따른 종류 인메모리(In-memory) 데이터베이스는 어떤 것이 있을까요? Redis, Memcached에 대해 인메모리 DB의 특징에서 알아보았지만 다른 것들도 많습니다. 인메모리 데이터베이스의 특징을 요약해 보면.. 2024. 3. 15.
데이터 마트(Data Mart) 설계 - 다차원 모델링, OLAP 이번 포스팅에서는 데이터 마트에서 데이터 구조 설계는 어떻게 하는 것인지 알아보도록 하겠습니다. 일반적인 업무 시스템하고는 모델링 기법이 다릅니다. 분석에 최적화되게 설계한다고 할 수 있습니다. 이번 글에서는 최적의 성능, 유연성 및 사용 편의성을 보장하기 위한 데이터 마트 설계에 대한 주요 고려 사항과 모범 사례를 살펴보겠습니다. Dimension (테이블) 설계 사용자가 분석하고자 하는 차원 차원은 비즈니스 관점에서 데이터를 분류하거나 분석하는 데 사용되는 속성이나 범주임 예를 들어, "시간" 차원은 "년", "월", "일"과 같은 시간 관련 속성을 포함할 수 있음. 그 외에도 고객등급, 지역과 같은 범주가 될 수도 있음 Dimension 간의 Hierarchy(계층) 존재 일반적으로 Fact Tab.. 2023. 12. 15.