✅ 인덱스의 키값 변형 지양 인덱스의 키값을 함수 등으로 변형하여 사용할 경우 인덱스에 저장된 키값과 달라지므로 인덱스 사용이 어려워질 수 있다. 이러한 이유로 인덱스 키값을 변형하는 쿼리문은 지양해야 한다. > [인덱스 키값 변형으로 인덱스를 못 사용하는 쿼리문]
테이블 조인(JOIN) 시 가장 먼저 접근되는 테이블을 드라이빙(Driving) 테이블, 이후에 접근하는 테이블을 드리븐(Driven) 테이블이라 부른다.드라이빙 테이블은 데이터의 선택 범위를 좁혀 주는 테이블을 의미한다.즉, 조건절(WHERE) 등을 통해 크기를 최소
데이터에서 검색 키워드 중심으로 조회하는 방식을 역 인덱스(Inverted Index) 구조라고 부른다.MySQL의 일반 인덱스는 B-Tree 기반으로, 등가(=) 조건이나 범위(>, <, BETWEEN) 조건에서는 효율적이지만, LIKE '%검색어%'와 같이 문
동적 쿼리 INSERT는 클라이언트 레벨에서 사용하는 것을 추천1만 건 이상의 대용량 데이터의 경우 동적 쿼리 INSERT보다 BULK INSERT가 더 효율적일 수 있다.기존 테이블 또는 INSERT 구분에 중복된 데이터가 있으면 에러 반환 없이 해당 중복 데이터 R
인덱스는 DB에서 대용량의 데이터(수만 건 이상의 데이터)를 빠르게 읽기(SELECT) 위해 사용되는 기술이다.인덱스를 사용하면 테이블의 Full Scan을 막아 읽기(SELECT) 성능을 높여주지만, 그 외 쓰기(INSERT, UPDATE, DELETE) 성능이 낮아

MySQL 서버의 상태를 진단하는 도구는 정말 많다. 이러한 도구는 높은 지식을 요구하는 경우가 많다. 하지만 로그 파일을 이용한 방법은 높은 지식 없이도 MySQL의 상태나 부하의 원인을 쉽게 찾을 수 있다.‼️ MySQL 서버에 문제가 발생하면 아래 로그 파일을 확
MySQL에서는 기본적으로 InnoDB 스토리지 엔진을 사용한다.MySQL의 다양한 스토리지 엔진 중 거의 유일하게 InnoDB 스토리지 엔진만 레코드 기반의 잠금 기능을 제공한다. 이러한 이유로 높은 동시성 처리가 가능하며, 안정적인 성능을 자랑한다.InnoDB는 기
MySQL 서버의 아키텍처는 크게 MySQL 엔진과 MySQL 스토리지 엔진으로 구분된다.각 엔진에는 다양한 주제가 존재하지만, 그중 제일 중요한 주제는 아래와 같다고 생각한다.MySQL 엔진의 "SQL 옵티마이저"MySQL 스토리지 엔진의 "InnoDB"클라이언트로부
MySQL에서 권한은 정적 권한과 동적 권한으로 나뉘며, 정적 권한에는 글로벌 권한과 객체 단위 권한으로 나뉜다.정적 권한 : MySQL 서버 어딘가에 고정적으로 명시된 권한글로벌 권한 : 파일, 서버 단위 권한 설정객체 권한 : 데이터베이스, 테이블, 인덱스 등 객체
MySQL에서 사용자는 단순 ID뿐만 아니라 사용자의 IP 접속 정보도 확인할 수 있다.MySQL 8.0 이후부터는 역할(Role) 이라는 개념이 등장했다.역할(Role) : 권한의 집합으로 특정 상황에 맞는 권한들의 집합을 의미MySQL에서는 사용자의 계정은 ID와

Main PC : macOS (Apple Silicon)Virtual PC : Oracle VirtualBox 기반 Linux OS(CentOS 9)Architecture : ARM64(aarch64)Apple Silicon 기반의 macOS에서 VirtualBox로
Main PC : macOS (Apple Silicon)Virtual PC : Oracle VirtualBox 기반 Linux OS(CentOS 9)Architecture : ARM64(aarch64)Apple Silicon 기반의 macOS에서 VirtualBox로

리눅스 환경에서 MySQL을 설치하는 방법은 크게 두 가지가 있다.제가 CLI 기반으로 설치 하는 방법을 아래 두 방법만 알고 있습니다...MySQL 리포지토리를 직접 설치하여 MySQL을 설치하는 방법Linux OS에서 기본으로 제공하는 MySQL 패키지를 사용하여

데이터베이스를 사용하면서 예상치 못한 장애 발생 및 비정상적인 쿼리문과 자원 소모 등 이슈가 발생할 수 있다.이러한 이슈는 서비스를 운영하는 데 있어 치명적인 문제로 이어질 수 있다.때문에 실시간 모니터링을 통해 장애 예방, 성능 최적화, 운영 효율성 확보 등의 모니터
조직에서 사용하는 데이터베이스는 사용 목적과 규모에 따라 데이터의 양과 객체 종류는 다양하다. 또한 서비스 운영에 있어 중요도가 높은 데이터베이스 객체와 민감한 정보(개인정보 및 금융 정보 등)가 저장되어 있을 수 있다.내가 속한 조직만 봐도 200개 이상의 테이블과
서비스 중인 DB의 데이터를 유실했을 때 해당 유실 때문에 전체 서비스에 문제가 발생할 수 있으며, 빠른 데이터 복원 과정이 필요하다.유실된 데이터 복원은 다양한 방법이 있지만, 이번 글에는 Binary log 파일을 활용하여 복구를 해볼 예정이다.해당 방법은 Bina
MySQL에서 사용되는 기본적인 백업 명령어는 mysqldump이다. 하지만 mysqldump는 대용량 데이터 백업/복원에 있어 느린 속도가 발목을 잡는다.이러한 mysqldump의 단점을 보완한 기능이XtraBackup이다.XtraBackup은 Percona에서 개발
데이터를 주기적으로 백업하는 일은 DBA에게 있어 중요한 업무 루틴 중 하나라고 생각한다.(언제, 어떤 데이터의 복원 작업이 필요할지 알 수 없으므로 주기적으로 데이터를 백업할 필요가 있다)이처럼 주기적인 데이터 백업을 수행할 때마다 DB 서버에 접속하여 백업 명령어를
user_id는 이 테이블의 기본 키(고유 값을 갖는 열)입니다.이 테이블에는 웹사이트에 가입한 사용자 정보가 포함되어 있습니다. 일부 이메일이 유효하지 않습니다.유효한 이메일을 가진 사용자를 찾는 솔루션을 작성하세요.유효한 이메일에는 접두사 이름과 도메인 where가
product_id는 이 테이블의 기본 키(고유 값을 갖는 열)입니다.이 테이블에는 회사의 제품에 대한 데이터가 포함되어 있습니다.이 테이블에는 중복 행이 있을 수 있습니다.product_id는 Products 테이블의 외래 키(참조 열)입니다.unit은 order_d