본문 바로가기

전체 글

(68)
[SQL Server / MS-SQL] 특정 테이블의 페이지 확인하기 (DBCC IND, DBCC PAGE) DBCC PAGE([DB명],[FileID],[PageID],조회옵션) DBCC PAGE 를 통해 특정 테이블의 페이지가 어떻게 되어있는지 확인해보자.DBCC PAGE 를 실행하기 위해서는 먼저 인덱스의 ID 를 알아야한다.  1. 인덱스ID 확인 인덱스ID 는 아래 쿼리를 통해 확인이 가능하다.SELECT name, index_id, type_descFROM sys.indexesWHERE object_id = OBJECT_ID('테이블명')  위 쿼리를 조회하면 인덱스명, 인덱스ID, 인덱스종류를 확인할 수 있다.인덱스에는 클러스터드 인덱스가 없는 경우와 있는 경우가 있다. 각각의 경우를 조회해보자. 테이블에 클러스터드 인덱스가 없는 경우type_desc 가 HEAP 으로 조회되며, index_id 는..
[SQL Server / MS-SQL] 페이지 및 익스텐트 아키텍처 (FPS, GAM, SGAM, IAM, BCM, DCM) 페이지(Page)SQL Server 의 페이지는 데이터 저장의 기본 단위이며, 하나의 페이지는 8KB 크기를 가진다. (페이지 크기 변경 불가)   *타 DBMS 와 비교!   - Oracle 의 데이터 저장 기본 단위는 '블록(Block)' 이며, 기본 크기는 8KB 이다. (2~32KB 사이로 변경 가능)   - MySQL 의 데이터 저장 기본 단위는 '페이지(Page)' 이며, 기본 크기는 16KB 이다. (4,8,16KB 로 변경 가능)SQL Server 의 데이터 파일(.mdf, .ndf) 은 연속적인 페이지의 집합으로 구성되어 있으며, 디스크 I/O 작업을 수행할 때 이러한 페이지들을 읽고 쓴다.  SQL Server의 데이터 파일은 크게 세 가지 유형의 페이지로 구성된다. 파일 헤더 페이지파..
[Azure] SQL Managed Instance Audit 설정 및 Azure blob 에 저장하기 1. Azure SQL Managed Instance Audit - MI Audit 은 데이터베이스 이벤트를 추적하여 감사 로그를 기록한다. - Audit 수행 시 아래와 같은 이벤트에 대한 감사가 가능하다.  ㄴ 서버의 로그인 성공/실패  ㄴ 서버의 쿼리 정보  ㄴ 데이터베이스 DML/DDL/EXECUTE 정보 (단, 특정 유저로는 필터링 불가능하며, xEvent 로 보완 가능) - 아래 문헌에서 감사 가능한 유형을 확인할 수 있다.https://learn.microsoft.com/ko-kr/sql/relational-databases/security/auditing/sql-server-audit-action-groups-and-actions?view=sql-server-ver15 SQL Server ..
[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 (환경 ..
[AWS] DMS 사용하여 데이터베이스 이관하기 DMS (Data Migration Service) 란?AWS DMS(Data Migration Service) 란 AWS 에서 제공하는 클라우드 기반의 데이터 마이그레이션 서비스이다.DMS는 On-Premise 데이터베이스, 다른 Cloud 데이터베이스, 그리고 AWS 내의 다른 데이터베이스 등 다양한 데이터 저장소에서 데이터 마이그레이션이 가능하다.실시간 데이터 복제를 지원하여 데이터베이스를 동기화 상태로 유지할 수 있으며, 전송되는 데이터 양에 대해서만 비용을 지불하므로 비용이 효율적이다.  DMS 프로세스 DMS 프로세스는 소스 및 타겟 데이터베이스 연결을 생성하여 엔드포인트를 각각 생성한다.그리고 복제 인스턴스에서 실행되는 태스크를 예약하여 데이터를 이관한다.  자 그러면 DMS 을 이용하여 데..
[Cloud] 가상머신(Virtual Machine) vs 컨테이너(Container) 1. 가상머신(Virtual Machine, VM)실제 물리적인 컴퓨터(하드웨어) 위에 하이퍼바이저(Hypervisor) 가 존재한다.이 하이퍼바이저가 여러 개의 독립적인 가상머신(VM) 을 띄우고 실행한다.VM 은 필요한만큼의 자원이 할당된 가상의 컴퓨터로, 각각의 VM은 커널(OS)을 포함하여 독립적으로 실행된다.즉, VM1 과 VM2 는 OS 는 물론이고, 데이터, 코드 등 전혀 공유하여 사용하지 않는다는 것이다. 클라우드 환경에서 VM 을 사용하는데 필요한 컴퓨팅 자원(서버, 네트워크, 스토리지) 을 가상화하여 제공하는데 가장 많이 사용된다.VM 은 각각 독립적이기 때문에 각 VM 마다 최소 GB 단위의 공간이 필요하며, VM 수에 비례하여 늘게되며, 그로 인한 오버헤드가 상당하다. Azure 에..
[MongoDB] CentOS7 에서 MongoDB 설치하기 1. MongoDB 저장소(리포지토리) 추가MongoDB 를 저장할 별도의 저장소를 추가해야 한다.sudo vi /etc/yum.repos.d/mongodb-org-5.0.repo[mongodb-org-5.0]name=MongoDB Repositorybaseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/5.0/x86_64/gpgcheck=1enabled=1gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc   2. MongoDB 저장소(리포지토리) 확인아래 명령어를 통해 MongoDB 저장소가 정상 추가되었는지 확인한다.yum repolist 정상적으로 추가되면 아래와 같이 MongoDB..
[Database] 인덱스 (클러스터드,넌클러스터드,구조,종류,생성) 인덱스란?책의 목차와 같이 원하는 데이터를 빠르게 찾을 수 있게 해주는 객체(Object) 이다.목차가 없다면 원하는 정보를 찾기 위해 책의 첫 페이지부터 전체를 뒤져야 하지만 목차가 있다면 원하는 정보가 몇 페이지에 있는지 금방 찾을 수 있다.이처럼 인덱스도 데이터를 찾을 때 전체를 다 뒤지기보다 목차를 통해 해당 데이터를 바로 찾을 수 있게끔 도와준다.하지만, 인덱스를 사용한다고 해서 무조건 좋은 것은 아니다. 목차를 만들기 위해 책의 페이지가 필요하고, 책의 정보를 추가,수정,삭제하면 목차를 수정해야하는 리소스가 필요하듯 인덱스를 저장하기 위한 공간이 필요하고 데이터를 변경할때의 리소스가 필요하다. 또, 무분별하게 생성된 인덱스는 용량을 차지하고, 옵티마이저의 최적화를 낮추는 결과를 얻게 된다.  ..
[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) 이라 하고, 더 큰 테이블을..
[MySQL] Grafana + Prometheus + Azure 모니터링 구성 Prometheus 와 Grafana 를 이용하여 Azure 환경의 MySQL 모니터링을 구축하자! 기본적으로 Prometheus 를 이용한 모니터링을 구축하기 위해서는 Grafana, Prometheus, Node Exporter, MySQL Exporter 의 설치가 필요하다. 각각 어떤 역할을 하는지 알아보자. Grafana 란? ㆍ 데이터 시각화 및 대시보드 작성을 위한 오픈소스 도구이다. ㆍ Prometheus, InfluxDB, Azure Monitor, CloudWatch 등 다양한 데이터 소스를 지원하며, 데이터를 가져와 원하는 시각적인 대시보드를 작성할 수 있다. Prometheus 란? ㆍ 시계열 데이터를 저장하고 검색하기 위한 오픈소스 데이터베이스이다. ㆍ 메트릭과 레이블을 사용하여 ..

반응형