MDP
Table vs Record 본문
오늘은 프로젝트 ERD 설계를 하면서 지속적으로 고민했던 문제인 Table, Record 중 서버의 영향을 가장 많이 끼치는 부분이 어떤것인지에 대해서 조사후 정리해보려고 한다.
우선 DB에게 많은 연산을 시키면 부담이 매우 크다.
그 이유는 DB랑 서버랑 요금을 비교할 때 서버 비용이 훨씬 저렴하다.
그래서 서버가 연산을 해서 간단한 쿼리문을 통해 DB에게 요청하는 방식을 사용하고 있다.
테이블 수
정규화로 인한 테이블 수 증가
- 데이터베이스 정규화 과정에서 데이터 중복을 최소화하고 데이터 무결성을 유지하기 위해 테이블이 분할될 때 많은 테이블이 생성될 수 있다.
- 잘 설계된 정규화는 쿼리 성능과 데이터 무결성을 유지하는데 도움이 된다.
영향
- 많은 테이블을 가지고 있을 때, 관리 및 유지보수의 복잡성이 증가할 수 있다.
- 여러 테이블 간의 JOIN 연산이 빈번하게 발생할 경우, 쿼리 성능에 부정적인 영향을 미칠 수 있다.
- 대규모 JOIN 연산은 쿼리 처리 시간을 증가시킨다.
레코드 수
정규화로 인한 레코드 수 연관 없음
영향
- 검색 속도
- 레코드 수가 많을수록 데이터 검색 속도가 느려질 수 있다.
- 메모리 사용
- 많은 레코드가 존재할 경우, 데이터베이스 서버는 더 많은 메모리를 필요로 한다.
- 캐싱과 버퍼풀이 효율적으로 작동하지 않을 수 있다.
- 디스크 I/O
- 디스크 읽기/쓰기 작업이 빈번하게 발생할 때 성능 저하로 이어질 수 있다.
- 백업 및 복구시간
- 데이터베이스 백업 및 복구 시간이 길어질 수 있다
- 서비스 가용성에 영향을 미칠 수 있다.
결론
테이블 수와 레코드 수 모두 데이터베이스 성능에 중요한 영향을 미치지만, 일반적으로 레코드 수가 더 큰 영향을 미치고 있다.
이와 같은 문제를 해결하기 위헤서 적절한 인덱스를 사용하여 해결할 수 있는 방법들도 많은 것 같아서 적절한 인덱싱, 쿼리 최적화, 파티셔닝, 캐싱 등의 기술을 통해 데이터베이스 성능을 최적화 하는 방법도 탐구할 예정이다.
참고 자료
https://m.blog.naver.com/kkson50/221887731894
https://chung-develop.tistory.com/149
https://www.cockroachlabs.com/blog/sql-performance-database-best-practices/
'SQL' 카테고리의 다른 글
SQL(Group by) (0) | 2023.09.25 |
---|---|
SQL (쿼리, Select, Where, limit , distinct, count) (0) | 2023.09.24 |