
이전에 [DB] PK (Primary Key) ID 길이가 성능에 영향을 미칠까? 라는 글을 쓸 때 인덱스에 대해서 간단히 알아보았다.또한, 데이터베이스 튜닝에 대하여 라는 글을 쓸 때에도 인덱스를 설정하여 DB의 성능을 높이는 방법에 대해서도 알아보았다. 해당 글에서는 인덱스에 대해서 더 자세히 알아보겠다. 인덱스란?인덱스란 CUD 의 성능을 희생하고 그 대신에 테이블의 조회 속도를 높여주는 자료구조이다. 어떤 항목을 조회하는데 60초 이상의 시간이 걸리던 것이 인덱스를 통해서 조회하면 한자리수의 초 단위로 조회할 수도 있을 정도로 데이터베이스 속도를 크게 좌우하는 요소이다. 하지만 마구잡이로 인덱스를 사용하면 사용하기 전보다 성능이 더 떨어질 수도 있다.그렇기 때문에 인덱스라는 것을 잘 알고 써야 ..

튜닝은 데이터베이스 시스템의 성능을 끌어올리고 안정성과 신뢰성을 높이는 중요한 과정이다. 이를 통해, 쿼리 성능을 향상하고, 시스템 자원을 효율적으로 사용할 수 있다.튜닝을 하는 이유는 주어진 하드웨어 환경을 통해서 처리량과 응답속도를 개선하기 위해서이다.성능 저하가 일어나면 시스템의 안정성과 사용성은 떨어질 수밖에 없기에 주기적으로 데이터베이스 튜닝을 진행해야 한다. 튜닝이라고 하면 포괄적으로 생각할 수 있는데, 아래 방법들을 말한다.쿼리 최적화캐싱 전략하드웨어 자원 관리인덱스 관리... 이러한 튜닝을 진행할 때 단계가 있다.1. 데이터베이스 설계 튜닝(모델링 관점)데이터 모델링, 인덱스 설계데이터베이스 용량 산정ex) 반정규화2. 데이터베이스 환경 튜닝(환경 관점)메모리나 블록 크기 지정ex) Buf..

관계형 데이터베이스에서는 중복 데이터를 최대한 없애기 위해 데이터를 여러 테이블로 나눠서 저장한다.DB에 데이터들을 저장하고 데이터들을 조회하려고 할 때 여러 테이블들을 JOIN해서 데이터를 얻는 과정을 꼭 거쳐한 한다.조인은 여러 테이블에 분산된 데이터를 연결하여 원하는 결과를 도출하는 중요한 도구이다.그렇기 때문에 "JOIN"에 대해서 자세히 알아보고 사용하는게 좋을 것 같아서 이 글을 작성하게 되었다. 조인(Join)이란?조인은 두 개 이상의 테이블에서 데이터를 연결하여 원하는 정보를 조회하는 SQL 연산이다. 테이블 간의 관계를 정의하는 "키(Key)"를 기반으로 데이터를 결합하며, 이를 통해 복잡한 데이터 구조에서도 필요한 정보를 가져올 수 있다고객 테이블과 주문 테이블이 따로 있는 경우 조인 ..

먹물 프로젝트를 진행하면서, 데이터베이스 설계 시 자료형을 어떤 것을 쓸지 선택하는 것이 성능, 저장소 효율성 등에 큰 영향을 끼친다는 것을 느꼈습니다. 이를 계기로 데이터베이스 자료형에 대해서 알아보자는 목표를 갖게 되어 해당 내용을 정리하게 되었습니다. 데이터베이스 자료형자료형(Data type)은 데이터베이스에서 각 필드에 저장할 데이터의 속성을 정의하는 요소이다. 올바른 자료형을 선택해야 데이터 무결성을 보장하고, 저장 공간을 최적화하며, 쿼리 성능을 향상시킬 수 있어 자료형을 정할 때 꼭 유의해야 한다. 데이터베이스마다 자료형은 약간씩 차이가 있다. 일단 MySQL을 기반으로 자료형에 대해서 살펴보겠다. (1) 숫자형(Numeric)정수형: INT, BIGINT, MEDIUMINT, SMALLI..

Flush : 영속성 컨텍스트와 데이터베이스의 동기화JPA Flush는 영속성 컨텍스트(Persistence Context)의 변경 내용을 DB에 반영하는 것을 말한다.영속성 컨텍스트는 엔티티 객체를 관리하는 메모리 공간이다. Flush는 이 영속성 컨텍스트에서 변경된 엔티티를 데이터베이스와 동기화하는 데 사용된다.즉, 영속성 컨텍스트 메모리 상에 저장된 객체 상태를 데이터베이스에 반영하는 것이다. 이 때, Flush는 동기화하는 것이기 때문에 Flush가 일어나도 1차 캐시된 영속성 컨텍스트는 그대로 유지된다.( clear는 영속성 컨텍스트를 비워서 관리 중인 엔티티를 모두 제거하는 것이다. ) Flush가 발생하는 시점Flush는 자동으로 발생할 수도, 수동으로 발생시킬 수도 있다.일단 자동으로 발..

Primary Key ?PK (Primary Key)는 데이터베이스에서 각 행(row)을 고유하게 식별하기 위한 열(column)이다.PK는 효율적인 데이터 검색, 외래 키 참조, 데이터 무결성 보장을 위해 사용된다. PK 길이가 길어질 때의 문제점은 무엇일까?저장 공간 증가: 긴 PK는 테이블의 저장 공간을 늘리고, 외래 키로 참조되는 테이블에도 영향을 미친다.인덱스 크기 증가로 인한 검색 성능 저하: PK는 기본적으로 인덱스로 관리되며, 길이가 길수록 인덱스 크기가 증가하고 검색 속도가 느려진다.외래 키 테이블의 추가 비용: 외래 키가 긴 PK를 참조할 때, 외래 키 테이블도 더 많은 공간을 차지하게 된다. PK 길이가 길어질 때 인덱스 크기 증가로 인한 검색 성능 저하에 대해서 더 자세히 알아보겠다..

트랜잭션이란?트랜잭션은 데이터베이스에서 하나의 작업 단위로 수행되는 연산 집합이다. 트랜잭션은 작업이 모두 성공적으로 완료되거나, 실패 시 모든 작업을 취소(롤백)함으로써 데이터의 일관성을 보장한다. 하나의 트랜잭션은 Commit 되거나 Rollback 된다. 트랜잭션을 왜 사용할까?데이터의 일관성을 유지하면서 안정적으로 데이터를 복구하기 위함이다. 트랜잭션은 하나의 논리적인 작업의 단위이기 때문에, 여러 개의 작업을 하나의 논리적인 단위로 묶어서 반영과 복구를 조정할 수 있기 위해 사용한다. 따라서, 데이터의 부정합이 일어났을 경우 롤백을 하여 데이터의 부정합을 방지할 수 있다. (참고)또한 동시성 제어에도 사용한다. 데이터베이스는 다수의 사용자가 동시에 동일한 데이터에 접근할 수 있으므로, 데이터 충..

안녕하세요! 항상 나아가는 개발자 pink_salt 핑솔입니다! 코드프레소 Java 웹 개발 체험단 활동을 하고 있습니다. 이번엔 '처음 시작하는 SQL 프로그래밍'강의를 듣고 공부한 내용을 정리하여 포스팅을 진행하겠습니다. 웹서비스 개발을 진행할 때 필수적인 요소가 바로 데이터베이스 입니다. 왜냐하면 웹서비스에서 가장 중요한 것은 데이터이기 때문입니다. 쇼핑몰에서 좋아요를 누르고, 장바구니에 넣고 등등 모든 활동들이 데이터베이스에 저장되어있는 데이터라고 할 수 있습니다. 그래서 이번엔 데이터베이스와 SQL에 대해서 자세하게 알아보겠습니다! 데이터베이스란 무엇인가? 데이터는 다양한 방법으로 관리가 가능합니다.(파일, 엑셀 등) 여러 사람이 공유하여 사용할 목적으로, 통합하여 관리되는 데이터의 집합을 말합..