본문 바로가기

Database14

논리적삭제 vs 물리적삭제 논리적삭제 vs 물리적삭제목차개요논리적 삭제(Logical Deletion)물리적 삭제(Physical Deletion)결론1. 개요논리적 삭제(Logical Deletion)와 물리적 삭제(Physical Deletion)는 데이터를 처리하는 방법에 있어서 근본적인 차이를 가진다. 이 두 가지 방법은 주로 데이터베이스 관리나 파일 시스템 관리에서 데이터를 어떻게 삭제할지 결정할 때 사용된다. 각각의 삭제에 대해 장단점을 파악해보자.2. 논리적 삭제(Logical Deletion)논리적 삭제는 데이터를 실제로 데이터베이스나 파일 시스템에서 제거하지 않는 방식이다. 대신, 데이터가 삭제되었다는 표시를 남겨 데이터를 더 이상 사용하지 않도록 한다. 예를 들어, 데이터베이스의 특정 행에 ‘삭제됨’또는 ‘비활성.. 2024. 6. 20.
SQL Mapper vs ORM 기술 SQL Mapper vs ORM 기술목차개요SQL MapperORM (Object-Relational Mapping)결론1. 개요SQL Mapper와 ORM(객체 관계 매핑, Object-Relational Mapping) 기술은 데이터베이스와 객체지향 프로그래밍을 연결하는 두 가지 주요 접근 방식입니다. 각각의 특징, 장단점 및 사용 사례를 살펴보려고 한다.2. SQL MapperSQL Mapper는 SQL 쿼리를 사용하여 객체와 데이터베이스 간의 매핑을 처리하는 도구이다.특징직접적인 SQL 제어: 개발자가 직접 SQL 쿼리를 작성하고 이를 통해 데이터베이스와 상호작용한다.유연성: 복잡한 쿼리와 최적화된 SQL을 사용할 수 있어 성능 최적화에 유리하다.매핑 파일: 객체와 SQL 간의 매핑을 정의하는 X.. 2024. 6. 19.
테이블마다 id 칼럼을 PK로 사용한 이유는 무엇일까? 목차개요설계 테이블사용한 이유와 장점결론1. 개요프로젝트 테이블을 설계하고 리뷰를 받는중 아래와 같은 질문을 받았다.Q) 각각의 테이블에 auto increment 되는 id 칼럼을 사용한 이유와 했을때의 장점이 무엇인가요?A) 어,,, 엄,,, 관용적으로 많이 사용해서 자연스럽게 id를 PK로 사용했습니다. 질문을 받은 나는 대답을 제대로 하지 못하였고 테이블을 왜그렇게 설계했는지보단 관용적으로 이렇게 많이들 사용한다고 해서 자연스럽게 테이블을 설계했던 것이었다. '설계를 왜 이렇게 했는가?' 에 대해서 고민하고 설계를 해야 하는데 이번을 계기로 많은 사람들이 왜 id칼럼을 auto increment가 되는 칼럼으로 사용했을때 장점에 대해 정리를 해보려고 한다.2. 설계 테이블내가 설계한 테이블은 위와.. 2024. 2. 14.
SELECT * 을 쓰면 안되는 이유 목차개요SELECT * FROM table 이 안좋은 7가지 이유2-1. 불필요한 I/O(입력 출력)2-2. 네트워크 트래픽 증가2-3. 애플리케이션 메모리 낭비2-4. ResultSet의 컬럼 순서에 의존하는 결과2-5. 테이블에 새로운 컬럼을 추가하면 뷰에 오류 발생2-6. JOIN 쿼리 충돌2-7. 테이블 간에 데이터를 복사할 때 문제 발생결론1. 개요쿼리를 조회할 경우, SELECT * FROM table 문을 자주 사용했다. * 을 이용해 모든 칼럼의 데이터를 가져오는 것 보다 필요한 칼럼을 명시해서 가져오는게 더 좋다고 키워드를 던져 주셔서 찾아 보게 되었다.2. SELECT * FROM table 이 안좋은 7가지 이유처음 SQL을 배울때 기본적으로 SELECT * FROM table과 같이.. 2023. 11. 29.
MySQL 실행계획이란? 목차MySQL 실행계획이란?어떤 정보를 제공하는지?결론1. MySQL 실행계획이란?실행계획은 MySQL 서버가 쿼리를 처리하는 방법을 설명한다.쿼리를 실행하면 MySQL 옵티마이저가 최적의 실행 계획을 결정하여 데이터를 검색하거나 조작하는 방법을 결정한다. 최적화 과정은 쿼리의 효율성과 성능을 향상시키는 데 도움을 준다.2. 어떤 정보를 제공하는지?인덱스 사용실행 계획이 적절한 인덱스를 사용하는지 여부가 중요하다. 쿼리에서 필요한 조건에 따라 적절한 인덱스를 사용하면 데이터 검색이 빨라지고 성능이 향상되는 반면 인덱스를 사용하지 않거나 비효율적으로 사용하는 경우 데이터베이스가 더 많은 리소스를 사용하고 성능 저하가 발생할 수 있게 된다.조인 방법여러 테이블을 조인해야 하는 경우, 쿼리 옵티마이저는 최적의.. 2023. 11. 20.
공유 락(shared lock) vs 배타 락(exclusive lock) 목차개요공유 락(shared lock)배타 락(exclusive lock)결론1. 개요DBMS에서 데이터에 대한 동시 접근이 발생한 경우, 일관성과 무결성을 지키기 위해 해당 데이터에 잠금을 걸 수 있다. 이 때 select 가능 여부에 따라 크게 공유 락과 배타 락으로 나누게 된다.2. 공유 락(shared lock)공유 락이 걸린 데이터에 대해서는 읽기 연산(SELECT)만 실행 O, 쓰기 연산(WRITE)은 실행 X. 공유 락을 사용하면, 조회한 데이터가 트랜잭션 내내 변경되지 않음을 보장한다.즉, 공유 락이 걸린 데이터는 다른 트랜잭션도 똑같이 공유 락을 획득할 수 있으나, 배타 락은 획득할 수 없다. 공유 락이 걸려도 읽기 작업은 가능하다는 뜻이다.3. 배타 락(exclusive lock)데이터.. 2023. 11. 16.