본문 바로가기

DB56

MySQL, PostgreSQL 비교 잘 모르겠음그래도 일단 조금이라도 끄적여 본다 PostgreSQL는 ORDBMS( 객체 관계형 데이터베이스 관리 시스템 ) MySQL은 PostgreSQL보다 기능이 적지만, 덕분에 특히 읽기 전용 쿼리에서 더 가볍고 안정적이며 빠른 처리 속도를 유지 PostgreSQL는 읽기-쓰기 작업, 대규모 데이터 세트 및 복잡한 쿼리를 관리하는 경우에 선호됨효율적인 백업 및 복구 기능으로 정평쓰기 작업과 복잡한 트랜잭션 처리에 더 강점MySQL은 멀티 스레드 기반으로 동작하며, 이는 동시에 많은 연결을 처리할 수 있다는 장점을 가지고 있다.PostgreSQL은 멀티 프로세스로 동작하며, 이는 각 연결이 독립된 메모리 공간을 가지고 동작하기 때문에 보다 안정적인 데이터 처리가 가능 2025. 5. 10.
FK 사용하지 않는 이유( 단점 ? ) 1. 문제가 생겨 빠르게 직접DB에서 데이터를 처리 해야 되는 경우에 외래키로 인해서 처리가 늦어질 수도 있고, 큰 실수로 이어질수도 있다. 테이블의 관계상 데이터 생성, 수정에 순서가 필요, 어쩔 수 없이 데이터(자식 테이블)를 삭제 하는 경우 CASCADE 옵션이 걸려 있다면 부모 테이블 데이터가 삭제가 되는 참사가 발생하기도 합니다. 2. DB설계를 초기에 잘 해놓았더라도, 시간이 지나면서 추가 개발과 설계 수정이 될 수 있다. 3. insert/update에 대한 성능 저하외래키를 사용하게 되면 데이터 생성 및 수정시 항상 무결성 검사를 하게 된다. 예를 들어 자식 테이블에 데이터를 추가할 때 부모 테이블에 pk가 존재하는지를 확인하는 것이다. 이러한 무결성 검사의 선행은 insert/upda.. 2025. 5. 1.
key와 index 목차 : 1. Index 2. PK 3. FKkey테이블에 있는 tuple을 유일하게 식별하는 attributes집합을 의미index테이블에 있는 tuple을 빠르게 찾기 위해 테이블에 적용되는 추가적인 자료 구조 Index테이블의 특정 컬럼에 인덱스를 생성한다는 것은, 해당 컬럼의 데이터를 정렬한 후 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장한다는 것을 의미한다. 컬럼의 값과 물리적 주소를 (key, value)의 한 쌍으로 저장하는 것이다. 인덱스 생성 및 유지에는 추가적인 저장공간이 필요하며, 데이터 삽입, 수정, 삭제 작업 시 성능 저하가 발생할 수 있다. 따라서 신중한 사용이 필요하다. 쿼리 분석을 기반으로 어떤 인덱스가 필요한지 결정 자주 사용되는 쿼리와.. 2025. 4. 30.
미니 쇼핑몰 ddl, 상품 주문까지 sql -- 회원 insert into member (name) values ("길동"),("재석"),("호동");select * from member;-- 아이템 등록 insert into Item (name, price) values ("쌀밥", 1500),("육개장", 8000),("계란후라이", 800);select * from Item;-- 길동이 장바구니에 담음insert into cart (memberId, itemId, count) values (1, 1, 2), (1, 2, 1), (1,3,3);select * from cart;---- 주문하기-- 입력한 배송정보insert into delivery (status, address) values ("준비", "신대방역");select * from.. 2025. 4. 26.
sql Join 튜닝( 순서 , 방법 ) 조인 순서row갯수 적은것 먼저 스캔하는게 빠름 드라이빙 테이블(Driving Table): 먼저 읽는 테이블로, 작은 테이블을 선택하는 것이 일반적으로 유리 조인 방법( 알고리즘 )join을 수행하는 방식이 다르고, 그에따라 성능이 다르다.상황에 따라 적절한 join방법 선택해서 수행하면 됨Nested Loop JoinHash JoinMerge Join이중 for문을 생각하면 됨하나씩 반복하며 찾음해시 테이블로 매칭정렬 후 병합 소규모 - 소규모 뭘써도 성능 차이가 크지 않음소규모 - 대규모소규모 테이블을 구동 테이블로 하는 Nested Loops를 사용, Hash 사용 검토대규모 - 대규모일단 Hash 사용하고, 정렬된 상태라면 Sort Merge 고려 2025. 4. 22.
index, 테이블 엑세스, 인덱스 손익분기점 인덱스를 사용하는 이유는 조건에 맞는 소량의 데이터를 빨리 찾고 , 얻은 ROWID를 이용해서 테이블 레코드를 찾아가기 위해서입니다. ( ROWID : 테이블 레코드를 찾아가기 위한 주소값 ) 인덱스에서는 메모리 주소 정보가 아닌 디스크 주소 정보를 이용해 해시 알고리즘을 통해 버퍼 블록을 찾는다. 인덱스 ROWID로 테이블을 액세스하는 과정은 생각보다 고비용 구조읽어야 할 데이터가 일정량을 넘어가는 순간, 테이블 전체 스캔하는 것보다 오히려 느려지게 된다. Index Range Scan의한 테이블 액세스가Table Full Scan보다 느려지는 지점을 '인덱스 손익분기점' 이라고 함 테이블 액세스를 최소화하기 위한 튜닝 기법 인덱스에 컬럼을 추가하는 것, include 인덱스 ...잘 모르겠.. 2025. 4. 22.