성장과정(dev)/DB(mysql)
-
샤드란? 데이터베이스 수평 확장의 핵심 개념!성장과정(dev)/DB(mysql) 2024. 12. 21. 20:57
1. 샤드란?큰 데이터베이스를 다수의 독립적인 작은 데이터베이스(샤드)로 나누어 저장하는 방식각 샤드는 전체 데이터의 일부를 담당하며, 샤드 간에는 데이터가 중복되지 않음.MongoDB, Cassandra, Elasticsearch 등과 같은 데이터베이스는 샤딩을 기본적으로 지원함."왜 사용하나요?"수평적 확장성(Horizontal Scaling): 데이터베이스 용량이나 성능을 높이기 위해 여러 노드를 추가하여 분산 처리.단일 서버의 처리 용량에는 한계가 있기 때문에, 수직적 확장(Vertical Scaling)(서버 업그레이드) 대신 수평적 확장이 선호됨."샤딩을 적용하면 어떤 효과를 누리나요?"읽기/쓰기 부하 분산.저장 용량 분산.단일 장애점(Single Point of Failure) 방지. 2. ..
-
DB 시스템에서의 동시성 제어 방법성장과정(dev)/DB(mysql) 2024. 12. 20. 16:54
데이터베이스 시스템에서는 동시성 제어를 위해서 주로 사용하는 두가지 방법 MVCC, Lock-Based Concurrency Control 이 있습니다. 1. MVCC (다중버전 동시성 제어)데이터의 여러 버전을 유지하여 트랜잭션이 동시에 데이터를 읽고 쓸 수 있도록 하는 방식입니다.특징각 트랜잭션은 자신만의 일관된 스냅샷을 기반으로 데이터를 읽어, 다른 트랜잭션의 변경 사항에 영향을 받지 않습니다.데이터의 각 버전을 유지하여 읽기 작업이 쓰기 작업과 독립적으로 이루어질 수 있습니다. 트랜잭션은 시작 시점의 스냅샷을 기반으로 데이터를 읽어, 다른 트랜잭션의 변경 사항을 보지 못합니다.트랜잭션이 시작된 시점의 데이터 상태를 기반으로 읽기 작업을 수행하여 일관성을 유지합니다. 또 갭락과 넥스트키 락을 통해 ..
-
mysql) BIGINT 와 BIGINT UN 의 차이점성장과정(dev)/DB(mysql) 2023. 4. 14. 14:07
bigint 는 알다시피 매우 큰 정수를 저장하기 위한 데이터 형식이다. mysql 에서 column 정보를 보면 bigint 라고 되어있는 것이 있고 bigint UN 이라고 되어있는 것이 있다. BIGINT UN 은 BIGINT UNSIGNED 를 나타낸다. 차이점) BIGINT 는 양의 정수와 음의 정수를 모두 저장할 수 있지만, BIGINT UN 은 음이 아닌 정수만 저장이 가능하다. 손익 기록 등 음의 정수의 기록이 필요하다면 BIGINT 로 정의해야한다. column 생성방법 - BIGINT CREATE TABLE mytable ( mycolumn BIGINT ); - BIGINT UN CREATE TABLE mytable ( mycolumn BIGINT UNSIGNED );
-
mssql sum에 연산값들이 모두 null값일 때성장과정(dev)/DB(mysql) 2020. 9. 29. 10:46
sum ( isnull( column1, 0 ) ) isnull ( sum( column1 ), 0 ) 위의 두줄은 데이터 양이 많을 때 꽤나 차이가 있다. 연산값이 null인 경우 sum에서 제외하고 계산하기 때문에 첫번째 줄처럼 굳이 isnull을 사용할 필요가 없다. 다만, 여기서 궁금해진것은 더하는 모든값이 null일 때는 어떻게 나올까? sum이라는 함수를 썼기에 모든 값이 null이면 0으로 나올 것을 예상했지만 null값은 아예 제외하고 계산하기 때문에 null이 나오더라. 한마디로 SELECT SUM( AGE) FROM TEST GROUP BY NM_KOR; 여기서 계산하려는 AGE값이 모두 NULL인 경우 쿼리 결과값이 NULL로 나온다.