Database 30

[Redis] Usecase: Rate Limiter

1. Rate Limiter란?특정 사용자나 IP 등이 일정 시간 동안 보낼 수 있는 요청 수를 제한하는 기능 역할역할설명과도한 트래픽 방지요청량을 제한하여 서버에 과도한 부하가 발생하는 것을 방지악의적인 요청 방어비정상적인 반복 요청이나 API 남용으로부터 시스템 보호특정 사용자의 자원 독점 방지사용자별 요청량을 제한하여 일부 사용자가 시스템 자원을 과도하게 사용하는 것을 방지DB 및 외부 API 보호요청 폭증이 DB, Redis, 외부 API 등 Downstream 시스템으로 전파되는 것을 방지트래픽 급증 시 시스템 안정성 확보순간적인 요청 증가를 제어하여 전체 서비스의 안정적인 운영 지원 제한 기준Redis에는 Rate Limit의 기준이 되는 Key가 만들어짐✅ 누구를 제한할 것인지를 Key로 표..

Database/Redis 2026.08.12

[MySQL][SQL] 8. TCL

1. TCL데이터베이스에서 트랜잭션의 실행 흐름을 제어하는 SQL 명령어 2. 명령어명령어설명특징START TRANSACTION트랜잭션 시작 COMMIT변경 사항을 확정트랜잭션 종료 (Rollback 불가)ROLLBACK변경 사항 취소- 트랜잭션에서 수행한 내용 모두 취소됨- 트랜잭션이 비정상 종료되면 자동 롤백됨SAVEPOINT트랜잭션 내 특정 지점 지정이 지점을 기준으로 부분 롤백이 가능함ROLLBACK TO SAVEPOINT지정된 지점으로 되돌림트랜잭션 실행 중 오류로 인해 재실행 시, 전체 롤백이 아닌 부분롤백으로 계산량을 줄일 수 있음 예시더보기START TRANSACTION;INSERT INTO tc_test VALUES('a');INSERT INTO tc_test VALUES('b');INS..

Database/Mysql 2026.03.08

[MySQL][SQL] 7. DCL

1. DCL사용자 계정과 권한을 제어하는 SQL 명령어mysql 시스템 스키마의 권한 테이블에 반영됨 2. 명령어Grant사용자 또는 역할에 데이터베이스 객체에 대해 권한을 부여하는 명령어✅ Grant Option: 자신이 가진 권한을 다른 사용자에게 다시 부여할 수 있음 표) Scope더보기Scope예시GlobalGRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost';DatabaseGRANT SELECT ON sales_db.* TO 'user1'@'localhost';TableGRANT SELECT, INSERT ON sales_db.orders TO 'user1'@'localhost';ColumnGRANT SELECT(name, price) ON sales_db...

Database/Mysql 2026.03.08

[MySQL][SQL] 5. Set Operation

1. 합집합UNION두 개 이상의 Select 결과를 합쳐서 하나의 결과 집합으로 만드는 연산자 (중복 제거)✅ 위 → 아래 순서로 합침✅ 컬럼 개수, 컬럼 타입, 컬럼 순서가 맞아야 함 코드) Union더보기(SELECT column1, column2FROM table1)UNION(SELECT column1, column2FROM table2;) UNION ALL두 개 이상의 Select 결과를 합쳐서 하나의 결과 집합으로 만드는 연산자 (중복 포함)✅ 성능이 Union보다 빠름✅ 컬럼 개수, 컬럼 타입, 컬럼 순서가 맞아야 함 코드) Union All더보기(SELECT column1, column2FROM table1)UNION ALL(SELECT column1, column2FROM table2;)..

Database/Mysql 2026.03.07

[MySQL][SQL] 4. Subquery

1. SubquerySQL 문 안에 포함된 또 다른 SELECT 문✅ 결과 기반 처리 (다른 쿼리 결과를 조건으로 사용)✅ 중첩 가능 종류구분정의특징Nested SubqueryWHERE 절 내부에 작성되는 서브쿼리조건 필터링에 사용, 여러 행 반환 가능Scalar Subquery하나의 값만 반환하는 서브쿼리반환값 1행 1열, 여러 값 반환 시 오류FROM SubqueryFROM 절에 작성되는 서브쿼리가상 테이블 생성, alias 필수, JOIN 가능Correlated Subquery외부 쿼리의 값을 사용하는 서브쿼리외부값 참조, 행마다 실행, 성능이 JOIN보다 느릴 수 있음 코드) Nested Subquery더보기SELECT *FROM employeesWHERE department_id IN ( ..

Database/Mysql 2026.03.05

[MySQL][SQL] 3-2. Inner Function: Multi Row

1. Aggregation여러 행의 데이터를 하나로 요약하여 집계값을 반환하는 연산 Group By특정 컬럼 기준으로 행을 그룹화✅ Null 값도 하나의 그룹으로 포함됨✅ True/False 값은 1/0으로 처리됨 Having그룹의 결과를 필터링함✅ Group By 이후 집계 결과에서 포함될지 결정됨 2. Column Functions✅ 함수 값이 없을 경우 Null로 표기됨 기본 집계 함수함수설명예시COUNT()행 개수COUNT(*)SUM()합계SUM(price)AVG()평균AVG(score)MAX()최대값MAX(salary)MIN()최소값MIN(age) 비트 집계 함수함수설명BIT_AND()비트 AND 집계BIT_OR()비트 OR 집계BIT_XOR()비트 XOR 집계 문자열 집계 함수함수설명GROUP..

Database/Mysql 2026.03.05

[MySQL][SQL] 6. Join

1. Join여러 테이블의 데이터를 조인 조건에 따라 결합하여 하나의 결과 집합을 생성하는 연산✅ 정규화로 나뉜 테이블의 데이터를 함께 조회하기 위해 사용 성능DB는 조인 순서에 따라 테이블을 읽고 결과를 결합하며 조인을 수행➡️ 작은 테이블부터 읽는것이 성능상 유리함 (반복 탐색 횟수가 줄어듬) 2. 종류구분설명조인 조건특징INNER JOIN두 테이블에 공통으로 존재하는 데이터만 조회✅가장 일반적인 JOINLEFT JOIN왼쪽 테이블 기준으로 모든 데이터 조회✅오른쪽 테이블에 매칭 없으면 NULLRIGHT JOIN오른쪽 테이블 기준으로 모든 데이터 조회✅왼쪽 테이블에 매칭 없으면 NULLCROSS JOIN두 테이블의 모든 조합 생성 (Cartesian Product)❌결과 행 수 = A×BSELF JO..

Database/Mysql 2026.03.04

[MySQL][SQL] 3-1. Inner Function: Single Row

1. Number함수설명예시결과ABS(n)절대값 반환ABS(-5)5CEILING(n)올림CEILING(3.2)4FLOOR(n)내림FLOOR(3.9)3ROUND(n,i)반올림 (소수 i자리)ROUND(3.456,2)3.46TRUNCATE(n,i)버림 (소수 i자리)TRUNCATE(3.456,2)3.45GREATEST(n1,n2,…)가장 큰 값GREATEST(3,7,5)7LEAST(n1,n2,…)가장 작은 값LEAST(3,7,5)3POW(x,y)x의 y제곱POW(2,3)8MOD(n,m)나머지MOD(10,3)1 2. String함수설명예시결과ASCII(s)첫 글자의 ASCII 코드 반환ASCII('A')65CONCAT(s1,s2,…)문자열 연결CONCAT('Hello',' ','World')Hello Worl..

Database/Mysql 2026.03.04

[MySQL][SQL] 2. DML

0. Null값이 없음 (0, 빈 문자열 ❌)✅ Null과 연산하면 결과도 Null 임 표) Null 표현더보기종류표현결과동등 연산자NULL = 1NULL사칙 연산10 / NULLNULL비교 연산자NULL > 5NULL논리 연산자 (AND)NULL AND TRUENULL논리 연산자 (OR)NULL OR TRUETRUE부정NOT NULLNULL 표) Null 함수더보기SELECT IFNULL(salary, 0) FROM emp; SELECT COALESCE(col1, col2, 0) FROM table1;SELECT salary / NULLIF(bonus, 0);SELECT * FROM emp WHERE salary IS NULL; # ⚠️ = NULL 사용불가SELECT * FROM emp WHERE s..

Database/Mysql 2026.03.04

[MySQL][SQL] 1. DDL

1. DDL데이터베이스 객체의 구조를 정의하거나 변경하는 명령어 특징자동 커밋TCL 불가 (ROLLBACK ❌)구조 변경 명령 2. 종류구분명령어설명생성CREATEDB / 테이블 생성변경ALTER컬럼 추가/수정/삭제삭제DROP객체 자체 삭제전체삭제TRUNCATE테이블 데이터 전체 삭제이름변경RENAME객체 이름 변경 create) character set더보기CREATE DATABASE mydbCHARACTER SET utf8mb4COLLATE utf8mb4_general_ci;문자를 어떤 인코딩 체계로 저장할지 정의 create) collation더보기CREATE DATABASE mydbCHARACTER SET utf8mb4COLLATE utf8mb4_general_ci;문자열을 비교/정렬하는 규칙 정..

Database/Mysql 2026.03.03