본문 바로가기

DBMS

(47)
[SQL Server / MS-SQL] 저장 프로시저(Stored Procedure) 내용 조회 저장 프로시저(Stored Procedure) 에서만 조회하는 경우SELECT OBJECT_NAME(object_id) AS ProcedureName, OBJECT_DEFINITION(object_id) AS ProcedureDefinitionFROM sys.proceduresWHERE OBJECT_DEFINITION(object_id) LIKE '%ORDER BY [0-9]%' 다양한 객체 유형(저장 프로시저, 뷰, 함수 등) 에서 조회하는 경우SELECT B.name AS ProcedureName, A.definition AS ProcedureDefinitionFROM sys.sql_modules AINNER JOIN sys.objects B ON A.object_id = B.object_..
[SQL Server / MS-SQL] 테이블별 용량 및 ROW 수 조회 테이블별 용량 조회SELECT C.name AS [TableName], SUM(A.total_pages)*8.0/1024 AS [TotalSize(MB)]FROM sys.allocation_units AINNER JOIN sys.partitions B ON B.hobt_id = A.container_idINNER JOIN sys.table C ON B.object_id = C.object_idINNER JOIN sys.schemas D ON C.schema_id = D.schema_idGROUP BY C.nameORDER BY 2 DESC 테이블별 ROW 수 조회SELECT B.name AS [TableName], A.row_count AS [RowCount]FROM sys.dm_db_part..
[SQL Server / MS-SQL] Wait Stats (대기 통계) SQL Server 의 Wait Stats(대기 통계) 는 쿼리가 대기하는 시간을 측정하여 성능 병목 현상을 식별하는 데 중요한 역할을 한다. Wait Stats 에는 다양한 유형들이 있는데, 주로 확인해야 할 유형에 대해 살펴보자. Wait Stats (대기 통계) 유형 1. PAGEIOLATCH_디스크에 있는 데이터를 메모리로 로드할 때 발생하는 대기 시간이다. SQL Server는 데이터를 메모리에 로드하여 작업을 수행하는데, 이 과정에서 디스크 I/O가 필요하다. 이 때 디스크에서 데이터를 읽어 메모리로 가져오는 동안 발생하는 대기 시간이다. PAGEIOLATCH 유형PAGEIOLATCH_SH (Shared)읽기 작업을 위해 페이지를 공유 모드로 로드할 때의 대기 시간이다.주로 읽기 작업에서 발생..
[SQL Server / MS-SQL] VLF (가상로그파일 - Virtual Log File) VLF(가상로그파일 - Virtual Log File) 이란?SQL Server 에서 페이지(Page) 는 데이터 파일 내에서 데이터를 저장하는 가장 작은 저장 단위이다.이처럼 VLF(Virtual Log File) 는  물리적인 트랜잭션 로그 파일(LDF) 내에서 로그 데이터를 관리하는 논리적 단위이다.SQL Server는 로그 파일의 크기에 따라 VLF의 수와 크기를 결정하는데, VLF 는 로그 파일 크기가 확장이 되면 VLF 갯수 역시 증가하게 된다.데이터베이스 복구 프로세스의 초기 단계에서 SQL Server 는 모든 트랜잭션 로그 파일의 모든 VLF 를 검색하고, 목록을 작성한다.VLF 가 많으면 이 단계에서 VLF 를 검색하고, 목록을 작성하는 시간이 그만큼 오래걸리게 된다.VLF 수가 많아지..
[SQL Server / MS-SQL] ROW 모드와 BATCH 모드 (SQL 처리 방식) SQL 을 처리하는 방식에는 ROW 모드와 BATCH 모드가 있다.각각 어떤 방식인지 알아보자. ROW모드란? - ROW 모드는 한 번에 하나의 row 씩 데이터를 처리하는 방식으로, 각 로우에 대한 연산을 순차적으로 수행한다. - ROW 모드는 각각의 트랜잭션이나 쿼리가 작고 빈번할 때 적합하다. 작은 트랜잭션이나 빈번한 쿼리는 보통 데이터 조회나 변경을 소량의 데이터를 대상으로 하므로, ROW 모드의 순차적 처리 방식이 이러한 경우에 빠르고 효율적으로 처리를 가능하게 하기 때문이다. - 또, 각 로우에 대한 LOCK 을 개별적으로 관리할 수 있기 때문에, OLTP 환경에서 적합하며, 높은 동시성과 빠른 속도를 제공한다.BATCH 모드란? - BATCH 모드는 한 번에 여러 row 를 묶어서 처리하는 ..
[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의 데이터 파일은 크게 세 가지 유형의 페이지로 구성된다. 파일 헤더 페이지파..
[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 (환경 ..
[MySQL] Grafana + Prometheus + Azure 모니터링 구성 Prometheus 와 Grafana 를 이용하여 Azure 환경의 MySQL 모니터링을 구축하자! 기본적으로 Prometheus 를 이용한 모니터링을 구축하기 위해서는 Grafana, Prometheus, Node Exporter, MySQL Exporter 의 설치가 필요하다. 각각 어떤 역할을 하는지 알아보자. Grafana 란? ㆍ 데이터 시각화 및 대시보드 작성을 위한 오픈소스 도구이다. ㆍ Prometheus, InfluxDB, Azure Monitor, CloudWatch 등 다양한 데이터 소스를 지원하며, 데이터를 가져와 원하는 시각적인 대시보드를 작성할 수 있다. Prometheus 란? ㆍ 시계열 데이터를 저장하고 검색하기 위한 오픈소스 데이터베이스이다. ㆍ 메트릭과 레이블을 사용하여 ..
[MySQL] Grafana + influxDB + telegraf 모니터링 구성 Grafana + influxDB + telegraf 를 구성하여 MySQL 을 모니터링해보려고 한다. 각각의 역할은 아래와 같다. ν Grafana 란? Grafana는 데이터 시각화 및 대시보드 작성을 위한 오픈소스 도구이다. Prometheus, InfluxDB, Azure Monitor, CloudWatch 등 다양한 데이터 소스를 지원하며, 데이터를 가져와 원하는 시각적인 대시보드를 작성할 수 있다. ν InfluxDB 란? InfluxDB는 시계열 데이터를 저장하고 검색하기 위한 오픈소스 데이터베이스이다. InfluxDB는 대규모 데이터를 처리하고 저장할 수 있으며, SQL과 유사한 InfluxQL 쿼리 언어를 사용한다. InfluxDB는 Telegraf와 같은 데이터 수집 도구와 함께 사용되..

반응형