[MSSQL] 통계 구성요소(Statistics)
·
코딩 공부 기록/SQL
1. 통계(Statistics)란?테이블이나 인덱스의 데이터 분포를 나타내는 메타데이터로, 쿼리 최적화 도구(Query Optimizer)가 효율적인 실행 계획을 생성하는 데 사용된다. 효율적인 쿼리 실행을 위해 필수적인 요소이다.  2. 통계의 필요성 통계는 조회 대상 데이터의 예상되는 행 수를 산정하는 기반이 된다. 그래서 통계 정보가 없을 때의 실행계획에서는 1,258,290건을 예상하고 Hash Join으로 수행했다.그와 다르게 통계 정보가 있을 떄의 실행계획은 예상 행 수가 6,090건으로 낮게 계산되면서 Merge Join의 실행 계획으로 수행한다. 이처럼 통계 정보의 유무에 따라 예상 행 수가 달라지고, 실행 계획에 차이가 발생하게 된다.   3. 통계 구성요소통계는 헤더, 밀도 벡터, 히스..
[Java] 컬렉션 (Collection) 종류 알아보기
·
코딩 공부 기록/Java
✔️ 컬렉션(Collection)이란? Java Collection Framework는 Java에서 데이터를 저장하고 조작하는 데 필요한 다양한 클래스와 인터페이스의 집합이다. 이 프레임워크는 데이터 구조를 효율적으로 관리하고, 데이터의 저장, 검색, 수정 및 삭제를 쉽게 할 수 있도록 도와준다.     1. Collection 인터페이스모든 컬렉션의 최상위 인터페이스로, 기본적인 컬렉션 기능을 정의한다. List 인터페이스 (순서가 있는 요소의 집합, 중복 허용, 인덱스 기반 접근)ArrayList단방향 포인터 구조요소의 추가/접근이 빠름크기 자동 조정랜덤 액세스에 최적화중간 요소 추가/삭제 시 중간에 있으면 성능 저하 발생 가능성LinkedList이중 연결 리스트를 기반요소의 삽입/삭제가 빠름큐와 스..
[SQL] 인덱스 조각화
·
코딩 공부 기록/SQL
인덱스 조각화란?데이터의 삽입, 업데이트, 삭제와 같은 작업이 반복되면서 인덱스 페이지들이 물리적으로 비효율적인 상태로 변하는 현상이로 인해 데이터 검색 성능이 저하되고, 쿼리 실행 시간이 길어질 수 있다.조각화는 클러스터형 인덱스와 비클러스터형 인덱스에서 발생할 수 있는데, 1) 내부 조각화 와 2) 외부 조각화가 있다.  인덱스 조각화 발생 원인1. 데이터 삽입 : 새로운 데이터가 기존 페이지에 들어가지 못하고 새로운 페이지로 분산될 때.2. 데이터 삭제 : 삭제된 공간이 재사용되지 않고, 빈 공간으로 남아있는 경우.3. 데이터 업데이트 : 기존 데이터의 크기가 커져, 현재 페이지에 저장되지 못하고 다른 페이지로 이동할 때.4. 인덱스 재구성 부족 : 인덱스 생성 후, 오랜 기간 동안 인덱스를 재구성..
[MSSQL] 인덱스의 스캔 방식
·
코딩 공부 기록/SQL
최근  SQL SERVER 튜닝 가이드라는 책을 사서 튜닝을 공부해 보려고 하는데첫 시작이 인덱스이다. 스캔 방식을 알아보기 전에 클러스터 vs 비 클러스터 인덱스에 대해 정리해 둔 것이 있으니참고하면 좋을 듯 하다.  [MSSQL] 클러스터 인덱스(Clustered Index)와 비 클러스터 인덱스(Non Clustered Index)인덱스(Index) 란? 인덱스는 데이터베이스에서 데이터를 빠르게 검색하기 위해 사용되는 데이터 구조이다.책의 목차나 색인처럼, 인덱스는 특정 데이터에 대한 위치 정보를 제공하여 검색 속도murphy0v0.tistory.com    인덱스의 스캔 방식 1. Table Scan  테이블 스캔은 테이블의 모든 행을 처음부터 끝까지 훑어 데이터를 찾는 방식이다.테이블에 인덱스가..
[MSSQL] 클러스터 인덱스(Clustered Index)와 비 클러스터 인덱스(Non Clustered Index)
·
코딩 공부 기록/SQL
인덱스(Index) 란? 인덱스는 데이터베이스에서 데이터를 빠르게 검색하기 위해 사용되는 데이터 구조이다.책의 목차나 색인처럼, 인덱스는 특정 데이터에 대한 위치 정보를 제공하여 검색 속도를 향상시킨다.  클러스터 인덱스(Clustered Index)  vs  비 클러스터 인덱스(Non Clustered Index)  클러스터 인덱스(Clustered Index)클러스터 인덱스는 테이블의 데이터가 물리적으로 정렬되어 저장되는 인덱스이다.인덱스 Leaf Node에 실제 데이터를 가진다. 주로 PK로 잡힌 인덱스 키값을 기준으로 데이터를 정렬하는데, INSERT 할 경우에도 전체 정렬이 된다.테이블 당 클러스터 인덱스는 1개만 생성 가능하다.데이터를 검색하면 키를 기반으로 직접 데이터 페이지를 찾아간다.데이..
[MSSQL] 로컬 서버 사용하기 (SSMS, SQL Server Developer)
·
코딩 공부 기록/SQL
1. SSMS(SQL Server Management Studio) 설치https://learn.microsoft.com/ko-kr/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver16 SSMS(SQL Server Management Studio) 다운로드 - SQL Server Management Studio (SSMS)SQL_A 및 Azure SQL 인스턴스를 관리하고 구성하려면 최신 버전의 SSMS(SQL Server Management Studio)를 다운로드하세요.learn.microsoft.com  2. SQL Server Developer 설치하기https://www.microsoft.com/ko-kr/sql-se..
OSGi Framework 란? (기본 개념 이해)
·
코딩 공부 기록/Java
OSGi란 무엇인가?OSGi (Open Service Gateway initiative) 프레임워크는 자바 기반의 모듈형 소프트웨어 개발 환경을 제공하는 기술이다. 쉽게 말해, 하나의 큰 프로그램을 마치 레고 블록처럼 작은 조각들(번들)로 나누어 개발하고 관리할 수 있도록 돕는 도구라고 생각하면 된다.OSGi Framework를 사용하는 이유모듈화: 프로그램을 작은 단위로 나누어 관리하므로 개발, 테스트, 유지보수가 훨씬 용이하다. 각 모듈은 독립적으로 개발, 배포, 업데이트가 가능하다.재사용성: 한 번 개발된 모듈은 다른 프로젝트에서도 재사용할 수 있어 개발 시간을 단축하고 생산성을 높인다.동적 업데이트: 프로그램을 중단시키지 않고도 새로운 기능을 추가하거나 기존 기능을 수정할 수 있다.플러그인 아키텍..
[SQL] 데이터베이스 정규화 (1NF, 2NF, 3NF, BCNF, 4NF, 5NF)
·
코딩 공부 기록/SQL
1. 정규화 (Normalization)정규화는 데이터베이스 설계의 기본 단계로, 데이터 중복을 줄이고 데이터 일관성을 유지하는 것을 목표로 한다. 잘못된 데이터 구조로 인해 발생할 수 있는 데이터 이상(Anomalies)을 방지하여 효율적인 데이터 저장 및 관리를 가능하게 한다.정규화의 주요 목표데이터 중복 감소: 데이터 중복이 줄어들면 저장 공간 절약 및 데이터 일관성 유지가 용이하다.데이터 무결성 보장: 각 테이블에 의미 있는 데이터만 유지하여 관계 데이터베이스의 정확성을 높인다.데이터 이상 방지: 데이터 삽입, 갱신, 삭제 시 발생할 수 있는 문제들을 예방한다.정규화의 단계정규화는 크게 1NF, 2NF, 3NF, 그리고 BCNF 단계로 나뉜다. 단계가 올라갈수록 데이터 중복이 줄어들며 데이터 구조..
[MSSQL] 메모리 할당 최대/최소 설정
·
코딩 공부 기록/SQL
SQL을 사용하다 보면 조회 속도가 느리거나 성능이 떨어지는 경우가 있다.주로 메모리를 너무 많이 써서 부하가 걸리거나, 할당된 메모리가 너무 작아서 성능이 떨어지거나이다.      메모리 할당이 필요한 이유 1. 시스템 안정성 보장메모리 부족으로 다른 애플리케이션이나 OS가 영향을 받지 않도록 SQL Server의 메모리 사용을 제한한다. 2. 효율적인 자원 분배시스템 메모리를 SQL Server와 다른 프로세스 간에 균형 있게 분배하여 자원을 효율적으로 사용할 수 있게 한다. 3. SQL Server 성능 최적화충분한 메모리를 확보해 성능을 개선하고, 과도한 메모리 사용을 방지한다. 4. 메모리 누수 방지:SQL Server가 과도하게 메모리를 사용하는 것을 방지하여 시스템의 성능을 안정적으로 유지한..
데이터베이스 성능 분석 개요와 성능 튜닝 기초 개념
·
코딩 공부 기록/SQL
1. 데이터베이스 성능 분석 개요1.1 성능 튜닝의 목적성능 튜닝이란 데이터베이스 시스템이 효율적으로 동작하도록 개선하는 작업이다. 목표는 응답 속도 단축과 자원 사용 최적화에 있다.응답 시간(Response Time) 최적화: 쿼리가 반환되는 시간을 줄인다.처리량(Throughput) 증대: 단위 시간당 처리할 수 있는 트랜잭션을 증가시킨다.자원 사용 최적화: CPU, 메모리, I/O 같은 시스템 자원을 효율적으로 사용하여 과부하를 방지한다.1.2 데이터 처리 과정 이해SQL 문장 실행 절차SQL 파싱: SQL 문장을 구문 분석해 실행 계획을 수립한다.최적화: 다양한 실행 계획 중 비용이 가장 낮은 계획을 선택한다.실행: 선택된 실행 계획에 따라 데이터를 가져온다.결과 반환: 최종 결과가 클라이언트에 ..