SQL Server/SQL Server 자주보는

플랜캐시 & 실행계획SQL Server는 한번 실행된 쿼리는 처음 만들어진 실행계획을 플랜캐시에 등록하여 이후에 재사용합니다.특정 조건을 만족하여 쿼리의 실행계획이 재 컴파일 되기 전까지는 말이죠. 실행계획이 재 컴파일 되어 새로운 실행계획이 만들어지는경우 기존의 실행계획은 삭제되어 확인할 수 없습니다. 그럼 현재 플랜캐시에 있는 실행계획을 확인해 보도록 하겠습니다.플랜캐시에서는 아래와 같은 정보를 확인할 수 있습니다.- 쿼리 구문- 수행 횟수- CPU 시간- 수행 시간- 논리적 읽기- 논리적 쓰기- 쿼리 플랜 현재 플랜캐시에 있는 실행계획을 확인하는 쿼리21, 22 라인의 조건을 기호에 맞게 수정하여 특정 데이터베이스에서 특정 시간에 생성된 실행 계획을 확인할 수 있습니다.주석처리를 하여 전체 실행계획..
병렬처리 기법단일 쿼리에서 다수의 CPU 를 사용할 수 있는 병렬처리 기법을 지원하고 있습니다.( Enterprise 버전에서 지원되고 있습니다. ) 병렬처리를 하게 되는 경우 CPU 사용률은 높아지지만 응답속도는 더 빨라질 수 있습니다.그렇다면 어떤 SP 가 병렬처리 되고 있는지 확인해 봅니다. SP 가 병렬처리되는지 확인하는 쿼리라이브에서 운영중인 쿼리는 대부분 SP 를 통해서 수행되고 있으며,어떤 SP 가 CPU 를 몇 개를 사용하는지 알 수 있는 DMV 를 제공하고 있습니다. 아래 쿼리는 플랜캐시를 통해 병렬처리되는 실행계획을 가지고 있는 DB 명, SP 명, CPU 사용 수를 반환합니다.실행계획에서만 확인할 수 있기 때문에 실행계획이 플랜캐시에 없는 경우 병렬처리 되는지 확인할 수 없습니다. 1..
TempDB 를 사용하는 경우1. 임시 테이블, 테이블 변수와 같은 임시 사용자 객체2. 커서3. 스풀이나 정렬을 위한 작업 테이블4. 스냅샷에서 isolation 을 위한 행 버전 관리5. 온라인 인덱스 재 구축 작업6. MARS ( Multiple Active ResultSets, 다수의 활성 결과 집합 )7. 트리거 등 TempDB 와 연관된 DMV 뷰dm_db_file_space_usage : tempdb 의 각 파일에 대한 공간 사용량 정보를 반환합니다.dm_db_session_space_usage : 각 세션에 의해 할당 및 할당 해제 된 페이지 수를 반환합니다.dm_db_task_space_usage : 작업 별 페이지 할당 및 할당 해제를 반환합니다. 이러한 뷰를 dm_exec_sessio..
오라클의 DESC오라클에서 DESC 를 하게 되면 해당 테이블의 컬럼, 컬럼크기, NullAble 등의 정보를 확인할 수 있습니다.DESC TABLE_NAME SQL Server 의 DESCSQL Server 는 DESC 를 지원하지 않습니다.대신 sp_columns 의 프로시저와 INFORMATION_SCHEMA.COLUMNS 테이블로 정보를 조회할 수 있습니다. EXEC SP_COLUMNS TABLE_NAME SELECT * FROM INFORMATION_SCHEMA WHERE TABLE_NAME = 'TABLE_NAME'
MSSQL 서버 확인하기@@SERVERNAME 으로 확인할 수 있습니다.현재 접속해있는 서버를 반환합니다.SELECT @@SERVERNAME MSSQL 인스턴스 확인하기@@SERVICENAME 으로 확인할 수 있습니다.현재 접속해 있는 인스턴스를 반환합니다.SELECT @@SERVICENAME MSSQL 데이터베이스 확인하기DB_NAME() 으로 확인할 수 있습니다.현재 접속해 있는 데이터베이스를 반환합니다.SELECT DB_NAME() 현재 접속한 서버 / 인스턴스 / 데이터베이스 확인SELECT @@SERVERNAME, @@SERVICENAME, DB_NAME()
USE [?] 를 사용하자USE [?] 는 모든 데이터베이스에 접속하겠다는 의미를 나타냅니다.USE [?] 는 SQL Server 에서 지원하는 SP_MSFOREACHDB 프로시저와 함께 사용해야 합니다. USE [?] 의 사용법SELECT DB_NAME() 란에 원하는 쿼리를 넣어서 사용하시면 됩니다.참고로 쿼리에서 ' 를 쓰기를 원하는 경우 ' 를 하나 더 붙여서 '' 로 사용해야 합니다.EXEC MASTER..SP_MSFOREACHDB 'USE [?]BEGIN SELECT DB_NAME()END' USE [?] 에서 특정 데이터베이스 제외하기USE [?] 하단에 IF ''?' 로 제외할 수 있습니다.EXEC MASTER..SP_MSFOREACHDB 'USE [?]IF ''?'' ''master'' ..
SQL Server 는 sp_readerrorlog 라는 시스템 프로시저를 지원합니다.이 프로시저는 SQL Server 로그를 읽어오는 역할을 수행합니다. xp_readerrorlog 역시 지원하는데, 이는 sp_readerrorlog 보다 좀더 많은 기능을 지원합니다.단지 기능만을 지원하는 것 뿐이지 출력 형식이 달라진다거나 그러지는 않습니다.xp_readerrorlog 와 sp_readerrorlog 의 차이점은 아래 포스팅을 참고해 주세요.https://mozi.tistory.com/296 구동 시점 이후의 오류만 출력하는 쿼리 그럼 먼저 구동 시점 이후의 오류만 뽑아오는 쿼리를 보여드리고 아래서 설명을 진행하겠습니다.CREATE TABLE dbo.TEMP_logcnt (LogNumber INT, ..
MS-SQL 에서 테이블의 존재 유무는 information_schema 의 tables 테이블에서 확인할 수 있습니다. 예를들어 dbo 스키마, mozi 테이블을 확인하는 방법입니다. 1234 SELECT * FROM INFORMATION_SCHEMA.tables WITH(NOLOCK) WHERE TABLE_SCHEMA = 'dbo' AND TABLE_NAME = 'mozi'cs 그럼 이제 테이블의 존재 유무를 확인해서 있는경우 DROP & CREATE 하는 방법을 해보겠습니다. 12345678910IF EXISTS ( SELECT * FROM INFORMATION_SCHEMA.tables WITH(NOLOCK) WHERE TABLE_SCHEMA = 'dbo' AND TABLE_NAME = 'mozi'..
꽁담
'SQL Server/SQL Server 자주보는' 카테고리의 글 목록 (2 Page)