분류 전체보기 54

[MySQL] 윈도우 cmd 창에서 MySQL 접속 안될 때 (환경 변수 설정)

윈도우에서 MySQL 을 설치 한 후, cmd(Command) 창에서 MySQL 을 접속하려고 하니 아래와 같이'mysql' is not recognized as an internal or external command, operable program or batch file. 오류가 발생한다.  이는 MySQL 환경 변수 설정이 제대로 안되어 있어 MySQL 을 찾지 못해서 발생한다.자, 그럼 환경 변수를  설정해보자. 우선 MySQL 설치된 경로를 찾아서 bin 폴더까지 접근해준다.   System > Advanced system settings (고급시스템 설정) 선택해준다.  System Properties > Environment Variables (환경 ..

DBMS/MySQL 2024.04.30

[AWS] DMS 사용하여 데이터베이스 이관하기

DMS (Data Migration Service) 란?AWS DMS(Data Migration Service) 란 AWS 에서 제공하는 클라우드 기반의 데이터 마이그레이션 서비스이다.DMS는 On-Premise 데이터베이스, 다른 Cloud 데이터베이스, 그리고 AWS 내의 다른 데이터베이스 등 다양한 데이터 저장소에서 데이터 마이그레이션이 가능하다.실시간 데이터 복제를 지원하여 데이터베이스를 동기화 상태로 유지할 수 있으며, 전송되는 데이터 양에 대해서만 비용을 지불하므로 비용이 효율적이다.  DMS 프로세스 DMS 프로세스는 소스 및 타겟 데이터베이스 연결을 생성하여 엔드포인트를 각각 생성한다.그리고 복제 인스턴스에서 실행되는 태스크를 예약하여 데이터를 이관한다.  자 그러면 DMS 을 이용하여 데..

Cloud 2024.04.29

가상머신(Virtual Machine) vs 컨테이너(Container)

1. 가상머신(Virtual Machine, VM) 실제 물리적인 컴퓨터(하드웨어) 위에 하이퍼바이저(Hypervisor) 가 존재한다. 이 하이퍼바이저가 여러 개의 독립적인 가상머신(VM) 을 띄우고 실행한다. VM 은 필요한만큼의 자원이 할당된 가상의 컴퓨터로, 각각의 VM은 커널(OS)을 포함하여 독립적으로 실행된다. 즉, VM1 과 VM2 는 OS 는 물론이고, 데이터, 코드 등 전혀 공유하여 사용하지 않는다는 것이다. 클라우드 환경에서 VM 을 사용하는데 필요한 컴퓨팅 자원(서버, 네트워크, 스토리지) 을 가상화하여 제공하는데 가장 많이 사용된다. VM 은 각각 독립적이기 때문에 각 VM 마다 최소 GB 단위의 공간이 필요하며, VM 수에 비례하여 늘게되며, 그로 인한 오버헤드가 상당하다. Az..

Cloud 2024.04.08

[Database] 인덱스 (클러스터드,넌클러스터드,구조,종류,생성)

1. 인덱스란? 책의 목차와 같이 원하는 데이터를 빠르게 찾을 수 있게 해주는 객체(Object) 이다. 목차가 없다면 원하는 정보를 찾기 위해 책의 첫 페이지부터 전체를 뒤져야 하지만 목차가 있다면 원하는 정보가 몇 페이지에 있는지 금방 찾을 수 있다. 이처럼 인덱스도 데이터를 찾을 때 전체를 다 뒤지기보다 목차를 통해 해당 데이터를 바로 찾을 수 있게끔 도와준다. 하지만, 인덱스를 사용한다고 해서 무조건 좋은 것은 아니다. 목차를 만들기 위해 책의 페이지가 필요하고, 책의 정보를 추가,수정,삭제하면 목차를 수정해야하는 리소스가 필요하듯 인덱스를 저장하기 위한 공간이 필요하고 데이터를 변경할때의 리소스가 필요하다. 또, 무분별하게 생성된 인덱스는 용량을 차지하고, 옵티마이저의 최적화를 낮추는 결과를 얻..

Database 2024.03.05

[Database] JOIN 기법의 종류 (Nested Loops Join, Merge Join, Hash Join)

조인에는 세 가지 기법이 존재한다. 1. 중첩 루프 조인 (Nested Loops Join) 2. 병합 조인 (Sort Merge Join) 3. 해시 조인 (Hash Join) 다양한 상황에서 최적의 성능을 내기 위해 적절한 JOIN 계획을 세워 동작을 수행한다. 일반적으로 옵티마이저가 계획을 세워 동작을 수행하지만, 항상 최적화된 계획만을 세우지는 않는다. 그런 경우, 수동적으로 JOIN 계획을 세워 넣어줘야하는 경우가 있다. 각각의 JOIN 계획이 어떻게 동작하며, 어떤 상황에 어떤 기법이 효과적인지 알아보자. 1. 중첩 루프 조인 (Nested Loops Join) NL Join 방식 조인하려는 두 개의 테이블 중 더 작은 테이블을 선행 테이블 (Outer Table) 이라 하고, 더 큰 테이블을..

Database 2024.02.22

[MySQL] Grafana + Prometheus + Azure 모니터링 구성

Prometheus 와 Grafana 를 이용하여 Azure 환경의 MySQL 모니터링을 구축하자! 기본적으로 Prometheus 를 이용한 모니터링을 구축하기 위해서는 Grafana, Prometheus, Node Exporter, MySQL Exporter 의 설치가 필요하다. 각각 어떤 역할을 하는지 알아보자. Grafana 란? ㆍ 데이터 시각화 및 대시보드 작성을 위한 오픈소스 도구이다. ㆍ Prometheus, InfluxDB, Azure Monitor, CloudWatch 등 다양한 데이터 소스를 지원하며, 데이터를 가져와 원하는 시각적인 대시보드를 작성할 수 있다. Prometheus 란? ㆍ 시계열 데이터를 저장하고 검색하기 위한 오픈소스 데이터베이스이다. ㆍ 메트릭과 레이블을 사용하여 ..

DBMS/MySQL 2023.11.17

[MySQL] Grafana + influxDB + telegraf 모니터링 구성

Grafana + influxDB + telegraf 를 구성하여 MySQL 을 모니터링해보려고 한다. 각각의 역할은 아래와 같다. ν Grafana 란? Grafana는 데이터 시각화 및 대시보드 작성을 위한 오픈소스 도구이다. Prometheus, InfluxDB, Azure Monitor, CloudWatch 등 다양한 데이터 소스를 지원하며, 데이터를 가져와 원하는 시각적인 대시보드를 작성할 수 있다. ν InfluxDB 란? InfluxDB는 시계열 데이터를 저장하고 검색하기 위한 오픈소스 데이터베이스이다. InfluxDB는 대규모 데이터를 처리하고 저장할 수 있으며, SQL과 유사한 InfluxQL 쿼리 언어를 사용한다. InfluxDB는 Telegraf와 같은 데이터 수집 도구와 함께 사용되..

DBMS/MySQL 2023.11.07

[Database] 트랜잭션 격리 수준 (Transaction Isolation Level)

트랜잭션 격리 수준 (Transaction Isolation Level) 이란, 동시에 여러 트랜잭션이 처리될 때 트랜잭션끼리 서로 얼마나 고립(isolation) 되어 있는지를 나타낸다. 즉, 하나의 트랜잭션이 다른 트랜잭션에 변경한 데이터를 볼 수 있도록 허용할지 말지를 결정한다. 우선 Isolation Level 에 대해 알기 전에 알아야 할 개념이 있다. 바로 Consistent Read 이다. Consistent Read 란, 말그대로 "일관된 읽기" 로 생각하면 된다. SELECT 문 실행 시 동시에 다른 트랜잭션에서 데이터를 변경하더라도 Undo Log 에 변경 전의 데이터(snapshot) 를 생성하고, 해당 시점의 snapshot 을 가져와 동일한 결과를 반환하여 일관성을 보장하기 위한 ..

Database 2023.10.23

[Database] MVCC - 다중 버전 동시성 제어 (Multi Version Concurrency Control)

데이터베이스에서는 여러 사용자가 동시에 접근하여 데이터를 읽고, 변경할 수 있는 동시성이 중요하다. 또한, 동시성과 함께 데이터의 일관성이 보장되어야한다. 이 동시성을 제어하고 일관성을 보장해주는 방법 중 하나가 MVCC (Multi Version Concurrency Control) 다중 버전 동시성 제어이다. ■ 기존 Locking 방식의 문제점 Locking 방식의 경우, 쓰기 작업이 수행되는동안 해당 데이터를 읽거나 쓸 수 없어 동시성의 문제가 발생한다. MVCC 를 통해 Locking 의 문제점을 해결할 수 있다. ■ MVCC 의 특징 ㆍ MVCC 는 데이터베이스의 snapshot 을 이용하여 구현된다. ㆍ 사용자가 데이터를 변경하면 데이터를 바로 변경하는 것이 아니라 변경 전의 데이터(snap..

Database 2023.10.18