본문 바로가기
반응형

MySQL5

[RDB] 이력 유형 데이터 모델 시간에 따라 발생하는 데이터 형식을 이력이라고 합니다. 이력 데이터 모델의 특징은 다음과 같습니다. 시간에 따라 발생 동일한 컬럼에 발생 대량 데이터가 발생할 가능성이 높음 성능에 영향을 주는 경우가 많음 실전에서 적용하는 이력의 유형은 세가지로 구분할 수 있습니다. 테이블 구분에 따라 구분하는 방법 내부스냅샷 이력 별도의 테이블 없이 시간에 따라 자기 자신의 테이블에 데이터가 발생되는 구조 이력 테이블이 마스터이므로 관계를 통해 PK구조도 모두 상속 일부 속성값이 변경되어도 전체 속성값 생성 1:M 스냅샷 전체 이력 별도의 테이블에 마스터 테이블의 현재정보를 포함해 변경된 모든 정보를 보관함 현재 정보 포함, 일부 변경되어도 전체 생성 1:M 스냅샷 과거 이력 마스터 테이블에는 현재 정보만 존재, 이력.. 2023. 11. 15.
MySQL 프로시저를 자바 코드로 이관 MySQL 프로시저를 자바 코드로 이관하려고 합니다. 사유는 다음과 같습니다. 프로시저 안에서 트랜잭션을 선언하게 될 경우 스프링 트랜잭션과 별개로 트랜잭션이 생성되어 원자성 위배 버전관리가 어려움 프로시저의 새 버전이 나오면 _new, _v(n)등으로 새 버전의 프로시저를 생성 디버깅이 어려움 아래와 같은 프로시저가 있다고 가정합니다. CREATE PROCEDURE `procedure_v1` ( IN p_status INT(2) , IN p_member_id BIGINT ) BEGIN DECLARE v_status VARCHAR(10) DEFAULT NULL; SELECT status INTO v_status FROM member WHERE id = p_member_id; IF v_status p_st.. 2023. 11. 13.
[RDB] PK 컬럼 순서 여러 개의 컬럼으로 구성된 PK 구성 테이블에서 있는 그대로 테이블을 생성해 버리면 다음과 같은 문제가 발생할 수 있습니다. - 인덱스 구성에서 의도하지 않은 순서의 Primary Key Unique Index가 생성됩니다. - 그에 따라 조회 SQL 실행 시 성능 저하 현상이 나타날 수 있습니다. - 많은 인덱스가 생성되므로 입력/수정/삭제 시 불필요한 내부 작업이 증가해 성능에 악영향을 미칩니다. Q) 단순히 테이블을 있는 그대로 생성했을 뿐인데, PK 컬럼 구성에 대해 순서를 고려하지 않으면 의도하지 않은 성능 저하 현상이 벌어지는 이유가 무엇일까요? A) - 데이터 모델링을 종료하였으나 스키마를 생성하기 전에 데이터 모델의 PK 순서를 조정하지 않은 채 테이블을 생성하면 인덱스를 이용하지 못해 테.. 2023. 11. 10.
MySQL) DATABASE 에서 가장 큰 용량을 지닌 테이블 조회하기 데이터베이스를 장기간 사용하다 보면 불필요한 로우 데이터가 쌓여 용량을 많이 차지하는 경우가 있다. 대용량 테이블을 조회하여 불필요한 데이터를 정리할 수 있다. 조회하는 방법을 알아보자. SELECT table_name , table_rows , round(data_length/(1024*1024),2) AS "DATA_SIZE(MB)" , round(index_length/(1024*1024),2) AS "INDEX_SIZE(MB)" FROM information_schema.TABLES where table_schema = "DATABASE_NAME" GROUP BY table_name ORDER BY data_length DESC LIMIT 10; infomation_schema 데이터베이스에 TA.. 2021. 9. 9.
반응형