Computer Science/DB
-
CS :: DB :: 효율적인 SQL 쿼리 작성 방법Computer Science/DB 2021. 6. 23. 09:43
1. WHERE 조건의 이해 1) 묵시적 형변환 묵시적 형변환이란, 조건절의 데이터 타입이 다를 때, 우선순위가 높은 타입으로 형이 내부적으로 변환되는 것을 말한다. 예 : 정수 타입의 우선순위가 문자열 타입의 우선순위보다 높다. 이로 인해, 의도치 않은 결과가 나올 수 있다. 2) 잘못 사용된 함수 대부분의 DBMS에서는 함수 기능을 제공하고, 이는 복잡한 연산을 알아보기 쉽고 사용하기 편리하게 하지만, 잘못 사용하면, 불필여한 시스템 부하를 일으킬 수 있다. 위와 같이 쿼리를 작성한다면, 알아보기는 쉽지만 DB 내부적으로 'table fullscan'이 발생한다. [reg_date] 컬럼의 검색 시, DATE_FORMAT 함수로 인해 옵티마이저는 [reg_date]와 연관된 데이터의 분포도를 알 수 ..
-
CS : DB : RDBMS vs NoSQLComputer Science/DB 2021. 4. 20. 16:57
RDBMS VS NoSQL 관계형 DB는 테이블로 이루어져 있고, 데이터의 종속성을 관계(relationship)로 표현하는 것을 말한다. 비 관계형 DB는 테이블 형식 스키마를 사용하지 않는다. 데이터의 형식을 특정 요구 사항에 맞게 최적화된 모델을 사용한다. NoSQL이 기존의 RDBMS와 다른 점 스키마가 없다. 즉, 데이터 관계와 정해진 규격이 없다. 관계의 정의가 없기 때문에 join이 불가능하다. 단, (reference 기능 등으로 비슷하게 구현 가능) 트랜잭션을 지원하지 않는다. scale-out을 지원한다. NoSQL의 장점 join 처리가 없기 때문에, scale-out을 통한 노드 확장이 용이하다. 가변적 데이터 구조로 데이터를 저장할 수 있기 때문에 유연성이 높다. NoSQL의 단점..
-
CS : DB : Block vs Non-Block, Sync vs AsyncComputer Science/DB 2021. 4. 13. 19:04
Block vs Non-Block vs Sync vs Async ** 이해를 돕기 위해 다음과 같이 의미를 정의한다. >> 제어권 : 행동할 수 있는 권한 >> 결과값 : 함수의 리턴값 1. Block vs Non-Block '제어권'에 대해 통제하는 방법의 차이라고 할 수 있다. function A가 function B를 호출하는 상황이라고 할 때, Block : A가 가지고 있던 제어권을 B에게 넘겨주고, B가 모든 작업을 마무리 한 후 A에게 제어권을 넘겨준다. Non-Block : A가 가지고 있던 제어권을 B에게 넘겨주고, B는 작업을 계속 이어가지만 제어권은 A에게 넘겨준다. 2. Sync vs Async '결과값'에 대해 반환 여부의 차이라고 할 수 있다. 즉 system call이 즉시 r..
-
CS : DB : paging, no offset, covering indexComputer Science/DB 2021. 4. 13. 18:47
Paging 1. DB에서 데이터를 읽어와 화면에 출력할 때, 한꺼번에 모든 데이터를 가져오는 것보다, 출력될 페이지의 데이터만 나눠서 가져오는 것을 말한다. 2. 기초적인 페이징 구현 방식은 대용량 데이터를 다룰 때에 효과적이지 못할 수 있다. 3. 이 때 사용할 수 있는 방법으로, no offset 방식을 사용하는 것과, 커버링 인덱스를 사용하는 것에 대해 설명하겠다. No Offset 방식 1. 기존의 페이징 쿼리는 다음과 같은 형태이다. 이와 같은 형태의 페이징 쿼리가 뒤로 갈수록 느린 이유는, 앞에서 읽었던 행을 다시 읽어야 하기 때문이다. 2. 이러한 문제를 해결하는 no offset 방식은, 조회 시작 부분을 인덱스로 빠르게 찾아 매번 첫 페이지만 읽도록 하는 방식이다. 3. no offse..