공부하기/데이터베이스
-
Redis Data Types 요약공부하기/데이터베이스 2023. 3. 3. 21:00
Keys 레디스 key는 binary safe하며 "tscalm" 같은 문자열에서 JPEG 파일까지 모든 바이너리 시퀀스를 키로 사용할 수 있고 빈 문자열도 유효한 키이다. 키에 대한 몇 가지 다른 규칙: 긴 키 네임은 조회 비용이 많이 들기 때문에 권장되지 않는다. 키 네임이 짧은 것 또한 무조건 좋은게 아니다. 예를 들어 (1)user:1000, (2)u1000 두개의 키가 존재할 때 (1번)이 더 가독성이 좋고 키를 저장하거나 조회하는데 사용되는 메모리의 차이는 신경쓸 정도가 아니다. object-type:id 같은 스키마를 정의해서 사용하며 여러 단어로 이뤄진 필드는 . 또는 - 로 구분한다. 예를 들어 "comment:4321:reply.to" or "comment:4321:reply-to". ..
-
Mac m1 Redis 설치 기록공부하기/데이터베이스 2023. 3. 3. 19:56
1. 홈브루 버전 체크 명령으로 홈브루가 컴퓨터에 설치되어 있는지 체크한다. brew --version // 응답 Homebrew 4.0.4 Homebrew/homebrew-core (~~~어쩌구저쩌구) 2. 홈브루를 통해 레디스를 설치한다. brew install redis 3. 포그라운드 실행 명령으로 레디스가 정상적으로 동작하는지 확인한다. redis-server -> 정상적으로 실행될 경우 종료 명령은 ctrl + c 입니다. 4. 백그라운드로 레디스를 시작합니다. brew services start redis // 응답 ==> Successfully started `redis` (label: homebrew.mxcl.redis) 5. 백그라운드 레디스를 상태를 확인합니다. brew service..
-
MySql 오브젝트 스캔 유형공부하기/데이터베이스 2023. 2. 28. 07:02
오브젝트 스캔 유형 1.테이블 스캔 (Table Scan) : 인덱스를 거치지 않고 바로 디스크에 위치한 테이블 데이터에 접근 (1) 테이블 풀 스캔 (Table Full Scan) 테이블의 처음부터 끝까지 데이터를 훑어보는 방식으로 인덱스를 사용하지 않는 유일한 방식 사용 where 접의 조건문을 기준으로 활용할 인덱스가 없는 경우 전체 데이터 대비 대량의 데이터가 필요할 경우 (보통 20%~25%) 2.인덱스 스캔 : 인덱스로 테이블 데이터를 찾아가는 유형 (1) 인덱스 범위 스캔 (Index Range Scan) 인덱스를 범위 기준으로 스캔한 뒤 스캔 결과를 토대로 테이블 데이터를 찾는 방식 사용 BETWEEN ~ AND 구문이나 , LIKE 구문 등 비교 연산 및 구문에 포함될 경우 특징 좁은 범..
-
[용어] MySql 드라이빙 테이블, 드리븐 테이블공부하기/데이터베이스 2023. 2. 28. 06:23
예제 코드 select 유저.등록번호, 유저.이름, 유저상세.전화번호, 유저상세.주소 from 유저 join 유저상세 on 유저.등록번호 = 유저상세.등록번호 where 유저.등록번호 IN (1,100); 위 예제 코드를 보면 두개의 테이블을 조인하여 쿼리를 수행하고 있습니다. 두 테이블에 동시에 접근할 수 없기 때문에 선후 관계를 갖고 먼저 접근하는 테이블을 드라이빙 테이블(유저), 후에 접근하는 테이블을 드리븐 테이블(유저상세)이라고 합니다. 드라이빙 테이블에서 많은 건수가 반환되면 해당 결과를 가지고 드리븐 테이블에 접근하기 때문에 드라이빙 테이블을 선정하는 과정은 매우 중요합니다. 가능하면 적은 결과가 반환되는 테이블을 드라이빙 테이블로 선정하고 조인 조건절의 컬럼이 인덱스로 설정되도록 구성해야합..
-
mysql 쿼리 실행 절차공부하기/데이터베이스 2023. 2. 19. 18:12
mysql 엔진 오브젝트 사전 지식 파서 사용자가 요청한 SQL 문을 쪼개 최소 단위로 분리하고 트리를 만듬, 트리를 만들면서 문법 검사 수행 전처리기 파서에서 생성한 트리를 토대로 SQL 문에 구조적인 문제가 없는지 파악 옵티마이저 핵심 엔진 중 하나로 두뇌라고 불러도 과언이 아니다 전달된 파서 트리를 토대로 필요하지 않은 조건은 제거하거나 연산 과정을 단순화한다. 어떤 순서로 테이블에 접근할지, 인덱스를 사용할지, 어떤 인덱스를 사용할지, 임시 테이블을 사용할지와 같은 실행계획을 수립한다. 옵티마이저가 선택한 최적의 실행 계획이 최상의 실행 계획이 아닐 가능성도 있다 엔진 실행기 옵티마이저에서 수립한 실행 계획을 참고하여 스토리지 엔진에서 데이터를 가져온다 그 후 Mysql 엔진에서는 읽어온 데이터를..
-
MySql Isolation Level(격리수준)공부하기/데이터베이스 2023. 2. 19. 17:27
여러 트랜잭션이 동시에 처리될 때 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있게 허용할지 말지를 결정하는 것 READ UNCOMMITTED DIRTY READ : 어떤 트랜잭션에에서 처리한 작업이 완료되지 않았는데도 다른 트랜잭션에서 볼 수 있는 현상 트랜잭션이 아직 커밋되지 않은 다른 트랜잭션의 변경 사항을 읽을 수 있도록 한다. 높은 처리량을 보장하지만 데이터 일관성이 보장되지 않는다. 거의 사용되지 않는다. READ COMMITTED 트랜잭션이 다른 트랜잭션이 커밋한 변경 사항을 읽을 수 있도록 하지만, 아직 커밋되지 않은 변경 사항은 읽을 수 없다. NON-REPEATABLE READ라는 부정합의 문제가 있음 ( 아래는 예시 ) a 트랜잭션에서 사원의 이름을 a -> ..
-
MySql Database Lock공부하기/데이터베이스 2023. 2. 19. 02:04
기능 여러 클라이언트가 동시에 데이터를 접근(*동시성)하는 상황에서 데이터 일관성을 유지 역할 동시에 여러 개의 쿼리가 실행될 때, 쿼리 실행에 필요한 데이터에 대한 접근 권한을 부여하고, 다른 쿼리가 해당 데이터에 접근하지 못하도록 잠금 주의 사항 락이 걸려있는 동안 다른 쿼리는 대기해야 하므로, 락이 걸리는 시간이 길어질수록 시스템 전체의 처리 속도가 느려질 수 있다. 또한, 락이 걸리는 범위가 크면 큰만큼 다른 쿼리가 접근할 수 있는 데이터의 범위가 줄어들게 된다. mysql 엔진 잠금 종류 글로벌락 ( GLOBAL LOCK ) mysql에서 제공하는 잠금 가운데 가장 범위가 크다. 특정 세션에서 글로벌 락을 얻으면 다른 세션에서는 select문을 제외한 대부분의 ddl문, dml 문장은 대기 상태..
-
다양한 데이터베이스 특징공부하기/데이터베이스 2023. 2. 18. 21:01
데이터베이스의 원칙 data integrity(무결성) : 정확성, 일관성, 유지성이 유지되는 것 개체 무결성 : 모든 테이블은 기본키(pk)를 가져야하며 null값과 중복을 허용하지 않는다. 참조 무결성 참조 관계에 있는 두 테이블의 데이터가 항상 일관된 값을 유지해야 한다. 외래키 값은 null이거나 참조하고 있는 테이블의 기본키 값과 같아야 한다. 도메인 무결성 : 테이블에 존재하는 컬럼의 데이터 타입이 알맞게 저장되어야 한다. 고유 무결성 : 테이블 컬럼의 값은 고유해야 한다. 키 무결성 : 하나의 테이블에는 적어도 하나의 키가 존재해야 한다. data reliability (안전성) : row, column 구조 변경 시 최소화해야 한다. scalability (확장성) : 요구사항의 변경등으로..