DB 46

Mysql Trigger

Mysql Trigger 테이블에서 어떤 이벤트가 발생했을 때 자동으로 실행되는 것을 말한다 사용법 변경 전 또는 변경 후의 행은 OLD, NEW라는 가상 줄 변수를 사용하여 읽을 수 있다 old - 예전 데이터 즉, delete 로 삭제 된 데이터 또는 update 로 바뀌기 전의 데이터 new - 새 데이터 즉, insert 로 삽입된 데이터 또는 update 로 바뀐 후의 데이터 -- Trigger 리스트 출력 SHOW TRIGGERS; -- Trigger 삭제 DROP trigger trigger_test; -- Trigger 생성 DELIMITER $$ -- 구분선과 같은것 CREATE TRIGGER trigger_name {BEFORE | AFTER} {INSERT | UPDATE| DELET..

DB 2023.12.06

Redis 기본 명령어

Redis 데이터 타입 및 명령어 요약1. 📄 Strings (문자열)단일 텍스트 또는 숫자 값 저장사용 예시: "username" -> "john_doe"명령어설명예제SET키에 값을 저장SET username john_doe EX 3600GET키의 값을 조회GET usernameDEL키 삭제DEL usernameINCR숫자 값 1 증가INCR counterDECR숫자 값 1 감소DECR counterAPPEND문자열에 데이터 추가APPEND message "Hello, "STRLEN문자열 길이 반환STRLEN message2. 📦 JSON (문자열에 저장된 JSON)복잡한 구조 저장 (문자열 형태)사용 예시: "user:1" -> {"name": "John", "age": 30}명령어설명예제JSON..

DB 2023.08.18

데드락

프로세스나 스레드 간에 발생하는 상호 대기 현상으로, 작업의 완료를 기다리며 시스템이 정체되는 현상입니다. 증상: 작업이 진행되지 않고 시스템이 정체되는 상태가 됩니다. 프로세스 또는 스레드 간의 상호작용이 멈추고, 상호 대기 상태가 되는 것을 확인할 수 있습니다. 원인 데드락은 다음과 같은 네 가지 조건이 동시에 성립할 때 발생합니다: 상호 배제(Mutual Exclusion) 자원은 하나의 프로세스 또는 스레드에 의해 동시에 점유될 수 없습니다. 점유와 대기(Hold and Wait) 이미 점유한 자원을 기다리는 상황이 발생합니다. 비선점(Non-preemption) 다른 프로세스 또는 스레드가 이미 점유한 자원을 강제로 빼앗을 수 없습니다. 순환 대기(Circular Wait) 여러 프로세스 또는 ..

DB 2023.07.05

MySql DB 엔진

InnoDB 엔진 특징: 트랜잭션 지원 및 ACID 속성 데이터 무결성 보장 멀티버전 동시성 제어 (MVCC) 장점: 안정성과 복구 기능이 우수 동시성 처리가 잘 되어 많은 수의 동시 사용자 처리 가능 외래 키 제약 조건 지원 단점: 일부 쓰기 작업에 비해 속도가 느릴 수 있음 일부 디스크 공간을 사용하여 데이터 저장에 용량 관리 필요 사용 예제 온라인 트랜잭션 처리 실시간 애플리케이션 데이터 일관성이 중요한 시스템 MyISAM 엔진: 특징: 단순하고 빠른 읽기 작업에 최적화됨 전체 텍스트 검색(Full-Text Search) 기능 제공 장점: 높은 읽기 성능을 제공 작은 크기의 인덱스를 사용하여 빠른 검색이 가능 단점: 트랜잭션 처리와 ACID 속성을 지원하지 않음 데이터 손실 복구 어려움 사용 예제 ..

DB 2023.07.03

DB 격리 수준(ACID > Isolation)

ACID Atomicity (원자성) 트랜잭션은 원자적(Atomic) 단위로 처리되어야 합니다. 이는 트랜잭션 내의 모든 작업이 전부 성공하거나 전부 실패하는 것을 의미합니다. 트랜잭션은 모두 실행되거나 전혀 실행되지 않아야 하며, 중간 단계의 부분적인 성공 또는 실패가 허용되지 않습니다. Consistency (일관성) 트랜잭션이 실행 전과 실행 후의 데이터베이스 상태를 일관성 있게 유지해야 합니다. 트랜잭션은 미리 정의된 규칙과 제약조건을 준수하여 데이터베이스의 무결성을 유지해야 합니다. Isolation (격리성) 동시에 여러 개의 트랜잭션이 실행될 때, 각각의 트랜잭션은 다른 트랜잭션으로부터 독립되어야 합니다. 격리성은 한 트랜잭션이 다른 트랜잭션에 의해 영향을 받지 않도록 하는 것을 의미합니다...

DB 2023.06.15

Redis란?_Sorted sets

Sorted Sets란? Sorted Sets는 Sets와 Hash의 혼합과 유사한 데이터 유형입니다. 집합과 마찬가지로 정렬된 집합은 고유하고 반복되지 않는 문자열 요소로 구성되므로 어떤 의미에서 정렬된 집합도 집합입니다. 그러나 집합 내부의 요소는 순서가 지정되지 않지만 정렬된 집합의 모든 요소는 score라고 하는 부동 소수점 값과 연결됩니다(모든 요소가 값에 매핑되기 때문에 유형도 해시와 유사한 이유입니다). 또한 정렬된 집합의 요소는 순서대로 가져옵니다(따라서 요청 시 정렬되지 않으며 순서는 정렬된 집합을 나타내는 데 사용되는 데이터 구조의 특성입니다). 다음 규칙에 따라 주문됩니다. 예 해커 목록(출생년도/이름) > zadd hackers 1940 "Alan Kay" (integer) 1 > ..

DB 2023.04.16

Redis란?_Sets

Sets이란? Redis Sets는 정렬되지 않은 문자열 모음입니다. SADD 명령은 집합에 새 요소를 추가합니다. 주어진 요소가 이미 존재하는지 테스트, 여러 Sets 간의 교집합, 합집합 또는 차이점 수행 등과 같은 Sets에 대해 여러 다른 작업을 수행하는 것도 가능합니다. 예제 > sadd myset 1 2 3 (integer) 3 > smembers myset 1. 3 2. 1 3. 2여기에서 세 개의 요소를 Sets에 추가하고 Redis에게 모든 요소를 반환하도록 지시했습니다. 보시다시피 정렬되지 않았습니다. Redis는 요소 순서 지정에 대한 사용자와의 계약이 없기 때문에 모든 호출에서 임의의 순서로 요소를 반환할 수 있습니다. Redis에는 멤버십을 테스트하는 명령 요소가 존재 확인 명령어..

DB 2023.04.16

Redis 란?_Hash

Redis에서 Hash란? Redis 해시는 필드-값 쌍을 사용하여 "해시"가 어떻게 보일지 정확히 예상할 수 있습니다. > hset user:1000 username antirez birthyear 1977 verified 1 (integer) 3 > hget user:1000 username "antirez" > hget user:1000 birthyear "1977" > hgetall user:1000 1) "username" 2) "antirez" 3) "birthyear" 4) "1977" 5) "verified" 6) "1"특징 해시는 객체를 나타내는 데 편리하지만 실제로 해시 안에 넣을 수 있는 필드 수에는 실질적인 제한이 없으므로(사용 가능한 메모리 제외) 애플리케이션 내에서 다양한 방식으..

DB 2023.04.16

Redis 란?_ Automatic creation and removal of keys

개요 지금까지 예제에서 요소를 푸시하기 전에 빈 목록을 만들거나 내부에 더 이상 요소가 없을 때 빈 목록을 제거할 필요가 없었습니다. 목록이 비어 있을 때 키를 삭제하거나 키가 존재하지 않고 예를 들어 LPUSH를 사용하여 요소를 추가하려는 경우 빈 목록을 만드는 것은 Redis의 책임입니다. 이는 목록에만 국한되지 않고 여러 요소(스트림, 세트, 정렬된 세트 및 해시)로 구성된 모든 Redis 데이터 유형에 적용됩니다. 기본적으로 세 가지 규칙으로 동작을 요약할 수 있습니다. 집계 데이터 유형에 요소를 추가할 때 대상 키가 없으면 요소를 추가하기 전에 빈 집계 데이터 유형이 생성됩니다. 집계 데이터 유형에서 요소를 제거할 때 값이 비어 있으면 키가 자동으로 폐기됩니다. 스트림 데이터 유형은 이 규칙의 ..

DB 2023.04.16