DB(25)
-
SQL IN과 OR의 비교
OR 어떠한 논리합 관계도 표현이 가능합니다. IN 하나의 컬럼이 여러개의 =조건을 가지는 경우에만 가능합니다. IN -> OR(가능) IN SELECT * FROM TAB1 WHERE COL IN (1, 5, 7)OR SELECT * FROM TAB1 WHERE (COL = 1 OR COL = 5 OR COL = 7)OR -> IN(불가능) OR SELECT * FROM TAB1 WHERE (COL1 = 1 OR COL = 2 OR NAME LIKE '3%')IN을 사용할 수 있는 경우라면 OR보다 IN을 사용하는 것이 좋습니다. IN은 경우에 따라서 서브쿼리를 이용하여 보다 유연한 확장이 가능합니다. IN은 반드시 하나의 컬럼이 비교되어야 하지만 OR는 여러 개의 컬럼이 올 수 있으므로..
2020.09.11 -
MVCC
동시성 제어 동시성 제어란 DBMS가 다수의 사용자 사이에서 동시에 작용하는 다중 트랜잭션의 상호간섭 작용에서 Database를 보호하는 것을 의미합니다. 일반적으로 동시성을 허용하면 일관성이 낮아지게 되며 이를 그래프로 나타내면 아래와 같습니다. 다수 사용자의 동시 접속을 위해 DBMS는 동시성 제어를 할 수 있도록 Lock 기능과 SET TRANSACTION 명령어를 이용해 트랜잭션의 격리성 수준을 조정할 수 있는 기능도 제공합니다. 이렇게 동시성을 제어하는 방법에는 비관적 동시성 제어와 낙관적 동시성 제어가 있습니다. 비관적 동시성 제어 사용자들이 같은 데이터를 동시에 수정할 것이라고 가정 데이터를 읽는 시점에 Lock을 걸고, 트랜잭션이 완료될 때까지 이를 유지 SELECT 시점에 Lock을 거는..
2020.06.26 -
DB Index
DB Index란 DB Index는 데이터베이스 분야에 있어서 테이블에 대한 동작 속도를 높여주는 자료 구조를 말합니다. 인덱스는 테이블 내 1개 이상의 컬럼을 이용하여 생성할 수 있습니다. 인덱스는 주로 특정 값을 가지고 있는 컬럼 혹은 값을 빠르게 찾기 위해서 사용됩니다. 인덱스가 이용되지 않은 데이터베이스는 데이터를 검색할 때 전체 테이블에 걸쳐서 검색하기 때문에 테이블이 크면 클 수록 비용이 엄청나게 늘어납니다. 만약 테이블이 특정 컬럼에 대한 인덱스를 가지고 있다면, 모든 데이터를 조사하지 않고도 데이터 파일의 중간에서 검색 위치를 빠르게 잡아낼 수 있습니다. 이러한 Index는 Tree 구조로 이루어져 있습니다. 일반적으로 RDBMS에서 사용하는 Index는 B+ Tree라는 구조를 사용하고 ..
2020.06.19 -
Trigger
Trigger는 데이터베이스 내부의 특정 테이블에 INSERT, DELETE, UPDATE와 같은 DML 문이 수행되었을 때, 데이터베이스에서 자동으로 수행되는 저장프로시져입니다. 즉, 사용자가 직접 호출하는 것이 아니라, 데이터베이스에서 자동적으로 호출하는 것이 가장 큰 특징입니다. 예를 들어, [사원]테이블에 새로운 데이터가 들어오면 [급여]테이블에 새로운 데이터를 자동으로 생성하고 싶을 경우, [사원] 테이블에 트리거를 설정하여 구현할 수 있습니다. Trigger의 성능 오버헤드가 적음 Trigger를 실행하는데 걸리는 대부분의 시간은 다른 테이블을 참조하는데 사용 Trigger에 의해 참조되는 다른 테이블의 위치가 작업 시간을 결정 지음 Trigger의 제한 Trigger는 트래잭션 제어문을 사용..
2020.06.18 -
Sharding
1. Sharding이란 Sharding이란 단일의 데이터를 다수의 데이터베이스로 분산시키는 것을 말합니다. 이렇게 데이터를 분산시킴으로써 인덱스의 크기를 줄이고 작업 동시성을 늘릴 수 있습니다. Sharding은 Application Level에서도 가능하지만 Database Level에서도 가능합니다. 데이터베이스를 Sharding하게 되면 기존에 하나로 구성될 스키마를 다수의 복제본으로 구성하고 각각의 Shard에 어떤 데이터가 저장될지를 Shard Key를 기준으로 분리합니다. 2. Sharding 방법 Algorithm Sharding 데이터베이스 ID를 단순하게 나누어 샤딩하는 방식입니다. Sharding Key는 hash(key) % NUM_DB 같은 방식입니다. 장점 같은 값을 가지는 ke..
2020.05.08 -
Scala Subquery vs Left Outer Join
Subquery란 Subquery란 다른 하나의 SQL문장의 절에 중첩된 select 문장입니다. Select, update, delete, insert와 같은 DML 문과 create table 또는 view에서 이용 가능합니다. Subquery는 알려지지 않은 조건에 근거한 값들을 검색하는 select 문장을 작성하는데 유용합니다. Subquery는 Main Query가 실행되기 이전에 한번 실행되고 SubQuery의 결과는 Main Query에 의해 사용됩니다. Outer Join이란 Outer Join이란 Join하는 여러 테이블에서 한 쪽에는 데이터가 있고, 한 쪽에는 데이터가 없는 경우, 데이터가 있는 쪽 테이블의 내용을 모두 출력하는 것입니다. 즉, 조건에 맞지 않아도 해당하는 행을 출력하고..
2020.03.30