본문 바로가기
728x90

스터디/Database15

[MySQL] PK 컬럼 순서와 Index 목차   1. PK 컬럼 순서의 중요성인덱스 구성에서 의도하지 않은 순서의 Primary Key Unique Index가 생성됩니다.많은 인덱스가 생성되므로 입력/수정/삭제 시 불필요한 내부 작업이 증가해 성능에 악영향을 미칠 수 있습니다. 2. PK 구성과 Index 이용스키마를 생성하기 이전에 데이터 모델의 PK 순서를 조절하지 않은 채 테이블을 생성하면 인덱스를 이용하지 못해 테이블 Full Scan 현상이 발생할 경우가 있습니다.예시 테이블create table multi_pk_table( student_id varchar(255) not null, year datetime not null, semester int not null, .. 2024. 7. 13.
[MySQL] 대용량 테이블 스키마 변경하기 목차 1. ALTER TABLE 아래와 같은 단순 DDL 구문으로 테이블의 스키마를 변경할 수 있습니다. ALTER TABLE [테이블명] MODIFY COLUMN [변경할 컬럼명][변경할 컬럼 타입] 예시 코드 ALTER TABLE user MODIFY COLUMN name varchar(10); 2. 대용량 데이터 테이블 스키마 변경하기 데이터가 100만, 1000만 정도일때 테이블 스키마 변경은 alter table로 가능했습니다. 천만건이라도 alter table은 5분안에 끝났기 때문입니다. 하지만 1억건이 넘어가면 이야기가 달라집니다. 3~4시간동안 진행될수도 있기 때문에 다른 방법으로 진행해야합니다. 전체적인 작업 과정은 다음과 같습니다. 복사테이블 생성 -> 복사테이블에 원본 테이블 데이터.. 2024. 4. 14.
[MySQL] TEXT Column cannot set default value text 타입을 가지는 컬럼의 default 값을 설정하려고 할 때 "TEXT Column cannot set default value" 이라는 에러가 발생하여 그 원인을 찾아보았습니다! TEXT 컬럼 default value 설정 CREATE TABLE `test_table` ( `col1` INT(11) NOT NULL AUTO_INCREMENT, `col2` TEXT, `col3` INT(11) DEFAULT NULL, `col4` TINYINT(1) DEFAULT '0', PRIMARY KEY (`col1`) ); 먼저 위와 같은 쿼리로 test_table을 생성합니다. ALTER TABLE `table1` change `col2` `col2` text default ''; col2 컬럼의 디폴트.. 2023. 8. 12.
[DB] MySQL CharacterSet과 Collation Character Set character set은 텍스트 데이터를 어떤 방식으로 인코딩하여 저장할 것인지를 결정하는 값입니다. 한글 인코딩을 위해 가장 널리 사용되는 인코딩 방식으로는 UTF-8과 EUC-KR이 존재하지만 show character set; 명령어를 통해서 지원하는 인코딩 목록을 확인 할 수 있습니다. Collation Collation은 정해진 character set에 의해 저장된 데이터들이 어떤 방식으로 정렬(order by) 될지를 결정하는 옵션입니다. 물론 직관적인 자료 (int나 date type)에서는 collation의 차이가 크게 의미 없습니다. 하지만 문자열을 정렬하는 방식에서는 차이가 있습니다. A와 가, 또는 A와 a 와 같은 문자열 정렬 방식을 설정하는 것은 설정.. 2022. 11. 12.
[MySQL] 다중 테이블 업데이트, 여러 테이블 update 하기 MySQL에서 한 번의 쿼리로 여러 개의 테이블을 update 처리해야하는 경우가 종종 있습니다. 이때 사용하는 쿼리는 매우 간단!! UPDATE 테이블A a, 테이블B b SET a.column = value, b.column = value WHERE [ 조건문 ] 위 쿼리를 이용하여 기존 행에 새로운 값을 설정합니다. 새로운 값을 덮어씌워 이전 값을 재정의합니다. 단, 여러 테이블을 업데이트하는 구문은 ORDER BY 구문이나 LIMIT 구문과 함께 사용할 수 없습니다. JOIN을 이용하는 경우 아래와 같이 사용할 수 있습니다. UPDATE 테이블A a, 테이블B b SET a.column = value, b.column = value WHERE a.column = b.column 참고: https:.. 2022. 10. 6.
[DB] ACID란? 데이터베이스하면 항상 따라다니는 기본 개념인 ACID에 대해 정리해본다. 트랜잭션은 DB 서버에 여러 개의 클라이언트가 동시에 액세스 하거나 응용프로그램이 갱신을 처리하는 과정에서 중단될 수 있는 경우 등 데이터 부정합을 방지하고자 할 때 사용한다. 부정합이 발생하지 않으려면 프로세스를 병렬로 처리하지 않도록 하여 한 번에 하나의 프로세스만 처리하도록 하면 되는데, 이는 효율이 너무 떨어진다. 병렬로 처리할 수 밖에 없는 현실적인 상황으로 인해 부정합을 방지하고자 트랜잭션을 사용하는 것입니다. 자세한 내용은 https://hyeri0903.tistory.com/169?category=772718 에 정리해두었다. ACID(원자성, 일관성, 고립성, 지속성)는 데이터베이스 트랜잭션이 안전하게 수행된다는 것.. 2021. 7. 4.
[DB] 정규화 vs 반정규화(비정규화) 정규화 여러 제약조건(규칙)을 기반으로 데이터베이스를 이상현상 없이 설계하는 기법이다. 데이터의 무결성을 향상한다. 정규화에 대한 자세한 내용은 https://hyeri0903.tistory.com/175?category=772718 에 정리해 두었다 ㅎㅎ 비정규화 비정규(Denoramlizaiton)는 데이터를 중복시키거나 그룹핑함으로써 데이터 베이스의 성능을 향상시키기 위한 기법이다. 정규화된 테이블을 읽기 성능 향상을 위해 다시 합치는 방법 역정규화는 정규화된 테이블을 비정규 상태로 만들기 위한 방법 중 하나이다. - 비정규화 프로세스 데이터베이스의 완벽한 구조 설계를 포기하고 데이터의 무결성을 떨어트리는 대신 관계형 데이터베이스의 읽기 성능을 향상하기 위한 설계이다. 위와 같은 , , 3개의 테이.. 2021. 7. 4.
[DB] Locking (잠금 기법) 💡Locking 이란? 데이터베이스에서 Lock이란 트랜잭션 처리의 순차성을 보장하기 위한 방법이다. (트랜잭선 : DB의 나누어지지 않는 최소한의 작업 단위) 잠금 단위란 = 잠그는 단위 잠금 기법이란 = 하나의 트랜잭션이 데이터에 액세스 하는 동안 다른 트랜잭션이 그 데이터 항목에 접근할 수 없도록 하는 병행제어 기법. Lockd은 잠금 기법에서 사용하는 데이터 객체이다. 🍒Lock 종류 - 공유 잠금 (Shared Lock) 공유 잠금은 데이터를 읽을 때 사용되어지는 Lock이다. 공유 잠금은 공유 잠금끼리 동시에 접근이 가능하다. - 베타 잠금 (Exclusive Lock) 베타 잠금은 데이터를 변경하고자 할 때 사용되며, 트랜잭션이 완료 될 때까지 유지된다. 베타 잠금은 Lock이 해제 될 때까.. 2021. 5. 28.
[DB] 데이터 정규화 1NF, 2NF, 3NF, BCNF 💡데이터 정규화란? 데이터 베이스의 설계를 재구성. 불필요한 데이터를 제거하고, 삽입/삭제/갱신 시 각종 이상현상 방지를 하기 위함 💡데이터 정규화 목적 1. 불필요한 데이터 제거 2. 논리적인 데이터 저장 (이상현상 방지) 정규화는 제1정규화, 2정규화, 3정규화, BCNF, 4정규화, 5정규화로 나눌 수 있다. 보통 4, 5정규화까지는 하지 않는다고한다. 제 1정규화 제1정규화는 각 row마다 컬럼의 값이 1개씩 있어야한다. 즉, 컬럼의 값이 원자값이어야 한다. 예를들어 subject 라는 컬럼에 값이 math, biology 이렇게 2개의 값이 들어가면 제 1정규화를 만족하지 못 한다. 제 2정규화 2정규화는 테이블의 모든 컬럼이 완전 함수 종속을 만족한다. 완전 함수 종속이란 기본키 중에 특정 컬.. 2021. 5. 28.
[DB] Transation / Undo / Redo 트랜잭션을 공부하면서 나온 undo, redo 에 대해서 알게되어 정리를 해보려고한다. 트랜잭션이란? 데이터베이스 트랜잭션(Database Transaction)은 데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위이다. 여기서 유사한 시스템이란 트랜잭션이 성공과 실패가 분명하고 상호 독립적이며, 일관되고 믿을 수 있는 시스템을 의미한다. 이론적으로 데이터베이스 시스템은 각각의 트랜잭션에 대해 원자성(Atomicity), 일관성(Consistency), 독립성(Isolation), 영구성(Durability)을 보장한다. 이 성질을 첫글자를 따 ACID라 부른다. 그러나, 실제로는 성능향상을 위해 이런 특성들이 종종 완화되곤 한다. 어떤 시스템들에서는 트랜잭션들은 논리적 작업 단위(LUW, .. 2021. 5. 17.
DL (Data Lake) 데이터 호수(Data Lake) :데이터 호수(Data Lake)는 시스템 또는 자연적인 형식으로 저장된 데이터 저장소이며, 일반적으로 소스 시스템 데이터의 원시 사본 및 보고, 시각화, 분석 및 기계 학습(Machine Learning)과 같은 작업에 사용되는 변환된 데이터를 포함하여 모든 엔터프라이즈 데이터의 단일 저장소이다. 데이터 호수에는 관계형 데이터베이스(행과 열), 반 구조화 된 데이터(CSV, 로그, XML, JSON), 구조화되지 않은 데이터(전자 메일, 문서, PDF) 및 바이너리 데이터(이미지, 오디오, 비디오)의 구조화된 데이터가 포함될 수 있다. 데이터 웨어하우스 vs 데이터 레이크 데이터 웨어하우스와는 다르게 데이터 레이크는 데이터의 종류를 묻지도 따지지도 말고 저장하는 공간이다.. 2020. 4. 20.
DM (Data Mart) DM (Data Mart) : 데이터 웨어하우스와 사용자 사이의 중간층에 위치한 것으로, 하나의 주제 또는 하나의 부서 중심의 데이터 웨어하우스라고 할 수 있다. 전사적으로 구축된 데이터 웨어하우스로부터 특정 주제, 부서 중심으로 구축된 소규모 단일 주제의 데이터 웨어하우스이다. 데이터 마트 내 대부분의 데이터는 데이터 웨어하우스로부터 복제되지만, 자체적으로 수집될 수도 있으며, 관계형 데이터 베이스나 다차원 데이터 베이스를 이용하여 구축한다. 즉, 일반적인 데이터베이스 형태로 갖고 있는 다양한 정보를 사용자의 요구 항목에 따라 체계적으로 분석하여 기업의 경영 활동을 돕기 위한 시스템을 말한다. 데이터 웨어하우스는 정부 기관 또는 정부 전체의 상세 데이터를 포함하는 데 비해, 데이터 마트는 전체적인 데이.. 2020. 4. 20.
OLTP / OLAP OLTP (On-line Transaction Precessing) : 온라인 트랜잭션 처리 여러 과정의 연산이 하나의 단위 프로세스(트랜잭션)로 실행되도록하는 처리이다. 네트워크상의 여러 이용자가 실시간으로 데이터베이스의 데이터를 갱신하거나 조회하는 등의 단위 작업을 처리하는 방식을 말한다. 주로 신용카드 조회 업무나 자동 현금 지급 등 금융 전산 관련 부문에서 많이 발생하기 때문에 ‘온라인 거래처리’라고도 한다. 이 방식의 특징은 기존 컴퓨터 통신에서 이용해 온 온라인 방식과 달리 다수의 이용자가 거의 동시에 이용할 수 있도록 송수신 자료를 트랜잭션(데이터 파일의 내용에 영향을 미치는 거래 ·입출고 ·저장 등의 단위 행위) 단위로 압축, 비어 있는 공간을 다른 사용자들이 함께 쓸 수 있도록 한 점이다.. 2020. 4. 20.
ETL (Extract, Transform, Load) ETL (Extract, Transform, Load) : 저장된 데이터를 추출하고 변형하여(요구사항에 맞게) 다른 곳으로 적재하는 모든 과정 Extract : 테이블에서 데이터를 추출 Transform : 추출한 데이터를 요구하는 형태로 변형 (필터링, 정렬, 집계, 데이터 조인, 데이터 정리, 중복 제거 및 데이터 유효성 검사 등) Load : 변경된 데이터를 테이블에 적재 OLTP에서 DW, DM, OLAP에 이르기까지의 과정에서 중간 중간에서 데이터를 이관하는 과정을 모두 ETL이라고 한다. 다음 그림과 같이 중간에 변형작업에서 주로 하는 일은 바로 정제이다. OLTP에서 발생한 데이터를 그대로 이관하여 DW, DM을 만들게 될 때 가장 먼저 부딪히는 벽이 바로 데이터의 정합성 문제이다. 이를 해.. 2020. 4. 20.
DW (Data Warehouse) DW(Data Warehouse) : Raw Data를 통한 분석자료를 제공하여 조직 내 의사결정을 지원하는 정보관리 시스템 DW 4가지 특성 주제지향(Subject Oriented): data를 categorizing하여 End User에게 이해하기 쉬운 형태 제공 통합(Integrated): raw data를 일관적인 포맷으로 변환하여 저장 시계열(Time Variant): DW내의 data는 일정기간동안 정확성을 나타낸다. 비휘발성(Nonvolatile): DW에 적재 후 일괄처리(batch) 작업에 의한 갱신 이외에는 삽입, 삭제 등의 변경이 수행되지 않는다. AWS는 DW를 3가지 티어로 나눔 하단티어 : DB Server 중간티어 : data를 액세스하고 분석하는 데 사용되는 분석 엔진으로 구.. 2020. 4. 20.
728x90