SQL Server
-
안녕하세요. 이 글은 제가 예전에 작성하였던 네이버 블로그의 글을 다시 올린 글입니다. 다소 기존의 글보다 내용의 퀄리티가 떨어질 수 있으니 이점 유의해주시기 바랍니다. 이 글을 작성하였을 당시의 연차가 2년 차여서 글 쓰는 실력도 없었고 배우면서 정리던 단계라서 많이 부족합니다. 들어가며... NULL은 RDB에서 개념을 정확하게 알고 있어야 합니다. NULL은 공백이 아닙니다. 그래서 NULL을 포함하냐? 하지 않냐? 는 굉장히 중요합니다. 데이터엔지니어, 데이터분석가 두 직업을 하면서도 분명히 알고 있어야 합니다. 그래서 꼭 RDB의 NULL이 아니더라도 BigQuery , Redshift 등의 모든 데이터를 SQL을 사용하는 곳에서 NULL은 알고 있어야 합니다. 또한 NULL의 경우 취급 방식이..
[MSSQL] NULL 비교안녕하세요. 이 글은 제가 예전에 작성하였던 네이버 블로그의 글을 다시 올린 글입니다. 다소 기존의 글보다 내용의 퀄리티가 떨어질 수 있으니 이점 유의해주시기 바랍니다. 이 글을 작성하였을 당시의 연차가 2년 차여서 글 쓰는 실력도 없었고 배우면서 정리던 단계라서 많이 부족합니다. 들어가며... NULL은 RDB에서 개념을 정확하게 알고 있어야 합니다. NULL은 공백이 아닙니다. 그래서 NULL을 포함하냐? 하지 않냐? 는 굉장히 중요합니다. 데이터엔지니어, 데이터분석가 두 직업을 하면서도 분명히 알고 있어야 합니다. 그래서 꼭 RDB의 NULL이 아니더라도 BigQuery , Redshift 등의 모든 데이터를 SQL을 사용하는 곳에서 NULL은 알고 있어야 합니다. 또한 NULL의 경우 취급 방식이..
2023.12.12 -
안녕하세요. 이 글은 제가 예전에 작성하였던 네이버 블로그의 글을 다시 올린 글입니다. 다소 기존의 글보다 내용의 퀄리티가 떨어질 수 있으니 이점 유의해주시기 바랍니다. 이 글을 작성 하였을 당시의 연차가 1년 차여서 글 쓰는 실력도 없었고 배우면서 정리던 단계라서 많이 부족합니다. 이 글을 읽기 전에 트랜잭션의 개념을 알아두면 정말 좋습니다. RDB에서 트랜잭션이란 작업의 단위를 뜻 합니다. RDB에서는 트랜잭션을 통해서 작업이 묶이고 해당 트랜잭션의 작업은 모두 성공 또는 모두 실패해야 합니다. 그렇기에 Begin End 구문을 통해서 작업을 묶어줘야 합니다. 관련하여 잘 정리된 블로그를 한번 읽어보시고 이 글을 읽으면 많은 도움이 됩니다. https://csj000714.tistory.com/623..
[MSSQL] BEGIN ... END안녕하세요. 이 글은 제가 예전에 작성하였던 네이버 블로그의 글을 다시 올린 글입니다. 다소 기존의 글보다 내용의 퀄리티가 떨어질 수 있으니 이점 유의해주시기 바랍니다. 이 글을 작성 하였을 당시의 연차가 1년 차여서 글 쓰는 실력도 없었고 배우면서 정리던 단계라서 많이 부족합니다. 이 글을 읽기 전에 트랜잭션의 개념을 알아두면 정말 좋습니다. RDB에서 트랜잭션이란 작업의 단위를 뜻 합니다. RDB에서는 트랜잭션을 통해서 작업이 묶이고 해당 트랜잭션의 작업은 모두 성공 또는 모두 실패해야 합니다. 그렇기에 Begin End 구문을 통해서 작업을 묶어줘야 합니다. 관련하여 잘 정리된 블로그를 한번 읽어보시고 이 글을 읽으면 많은 도움이 됩니다. https://csj000714.tistory.com/623..
2023.12.12 -
새로운 서버를 받아서, SQL Server를 설치하고, 운영하는 도중에 기술지원을 받는 중에 CPU의 64 Core 중에 40 Core만 사용하고 있는 것을 발견하였습니다.인터넷에 찾아보았는데, 영문자료밖에 있지 않아서, 내용을 가져와 씁니다. 원문 : https://blogs.msdn.microsoft.com/sql_shep/2012/06/21/sql-server-2012-license-core-limitaion/ 이 에디션은 2012부터 나왔으며, 엔터프라이즈에서는 코어를 40개까지 밖에 지원하지 않는다고 합니다. 다음의 내용에 써 있습니다. 왜 이렇게 나눠서, 사용자를 불편하게 한지는 잘모르겠습니다. (아무래도... 라이센스 때문인가?) 확실한 방법으로 코어가 몇개인지 확인해 보고, 실제로 SQL ..
SQL Server - License Core Limitaion (40코어 이상 인식)새로운 서버를 받아서, SQL Server를 설치하고, 운영하는 도중에 기술지원을 받는 중에 CPU의 64 Core 중에 40 Core만 사용하고 있는 것을 발견하였습니다.인터넷에 찾아보았는데, 영문자료밖에 있지 않아서, 내용을 가져와 씁니다. 원문 : https://blogs.msdn.microsoft.com/sql_shep/2012/06/21/sql-server-2012-license-core-limitaion/ 이 에디션은 2012부터 나왔으며, 엔터프라이즈에서는 코어를 40개까지 밖에 지원하지 않는다고 합니다. 다음의 내용에 써 있습니다. 왜 이렇게 나눠서, 사용자를 불편하게 한지는 잘모르겠습니다. (아무래도... 라이센스 때문인가?) 확실한 방법으로 코어가 몇개인지 확인해 보고, 실제로 SQL ..
2016.08.09 -
게임회사에서 근무하다가 교육업체로 업종을 변경하면서, 쿼리에 대해서 많은 차이점이 보입니다.물론 이곳(?)의 스타일 일수도 있지만, UDF를 상당히 많이 사용합니다. 게임회사에서는 UDF를 그렇게 많이는 사용하지 않았는데, 이곳에서는 아주 많은 쿼리에 UDF를 사용하는 경우를 보았습니다. UDF가 무조건 안좋은 것은 아니지만 모르고 쓸 경우 성능에 치명적인 영향을 미칠 수 있다는 것을 테스트 하였습니다. 이 테스트는 샘플 데이터베이스인 AdventureWorks2012 에서 테스트 하였으며, SQL MVP 61인 Chapter 20의 사용자 정의 함수(UDF)를 참조하였습니다.책의 내용이 2가지가 언급되어 있어, 2개로 나누어서 글을 정리 합니다. 이 테스트 쿼리는 책에서 제공하는 쿼리와 약간 다릅니다...
UDF(사용자 정의 함수)로 인한 성능저하 ①게임회사에서 근무하다가 교육업체로 업종을 변경하면서, 쿼리에 대해서 많은 차이점이 보입니다.물론 이곳(?)의 스타일 일수도 있지만, UDF를 상당히 많이 사용합니다. 게임회사에서는 UDF를 그렇게 많이는 사용하지 않았는데, 이곳에서는 아주 많은 쿼리에 UDF를 사용하는 경우를 보았습니다. UDF가 무조건 안좋은 것은 아니지만 모르고 쓸 경우 성능에 치명적인 영향을 미칠 수 있다는 것을 테스트 하였습니다. 이 테스트는 샘플 데이터베이스인 AdventureWorks2012 에서 테스트 하였으며, SQL MVP 61인 Chapter 20의 사용자 정의 함수(UDF)를 참조하였습니다.책의 내용이 2가지가 언급되어 있어, 2개로 나누어서 글을 정리 합니다. 이 테스트 쿼리는 책에서 제공하는 쿼리와 약간 다릅니다...
2016.06.13 -
SQL Server 2016에서 Temporal Table이라는 기능이 있어서, 소개하고자 합니다.Temporal은 다음과 같은 뜻을 가집니다.- 1. 현세적인, 속세의 2. 시간의; 시간의 제약을 받는 3. 관자놀이께의 Temporal 테이블은 제가 볼때 엄청난 기능은 아니고, Table의 내용이 변경(UPDATE, DELETE)이 될 경우 그 내용을 기록하는 History (?)성 테이블이라고 생각하면 됩니다.글로 표현하는 것보다 그림으로 보는 것이 더욱 이해가 될 것 입니다.제가 생각 할때 이 그림이 가장 맞는거 같습니다. 크게 별다른 기능이 아니고, 단순히 유저가 DELETE , UPDATE 라는 조작을 가하면 테이블에 기록을 남기는 것 입니다.음... 일종에 트리거 같은 기능을 종속하여, 추가한..
SQL Server 2016 - Temporal TableSQL Server 2016에서 Temporal Table이라는 기능이 있어서, 소개하고자 합니다.Temporal은 다음과 같은 뜻을 가집니다.- 1. 현세적인, 속세의 2. 시간의; 시간의 제약을 받는 3. 관자놀이께의 Temporal 테이블은 제가 볼때 엄청난 기능은 아니고, Table의 내용이 변경(UPDATE, DELETE)이 될 경우 그 내용을 기록하는 History (?)성 테이블이라고 생각하면 됩니다.글로 표현하는 것보다 그림으로 보는 것이 더욱 이해가 될 것 입니다.제가 생각 할때 이 그림이 가장 맞는거 같습니다. 크게 별다른 기능이 아니고, 단순히 유저가 DELETE , UPDATE 라는 조작을 가하면 테이블에 기록을 남기는 것 입니다.음... 일종에 트리거 같은 기능을 종속하여, 추가한..
2016.04.12 -
이번에 모니터링 시스템을 만들면서 이것 저것 수집하다 보니, 쿼리를 이용한 Job 스케줄러의 상세정보를 보기 힘들다는 사실을 알았습니다. 그래서, 영문자료를 토대로 한글화하여, 쿼리를 만들었습니다. 결과는 다음과 같은 형태로 나타납니다. 제가 필요한 정보만 약간 변형하여, 하였으므로, 필요에 따라서 바뀌시면 좋을 것 같습니다. SELECT [jobs].name as [jobname] , description , CASE convert(nvarchar(3),[sSCH].[enabled]) WHEN 1 THEN 'Y' WHEN 0 THEN 'N' END AS [IsEnabled] , CASE WHEN convert(nvarchar(3),[freq_type],3) = 64 THEN 'SQL Server 시작 ..
쿼리를 이용한 JOB 스케줄러 상세보기이번에 모니터링 시스템을 만들면서 이것 저것 수집하다 보니, 쿼리를 이용한 Job 스케줄러의 상세정보를 보기 힘들다는 사실을 알았습니다. 그래서, 영문자료를 토대로 한글화하여, 쿼리를 만들었습니다. 결과는 다음과 같은 형태로 나타납니다. 제가 필요한 정보만 약간 변형하여, 하였으므로, 필요에 따라서 바뀌시면 좋을 것 같습니다. SELECT [jobs].name as [jobname] , description , CASE convert(nvarchar(3),[sSCH].[enabled]) WHEN 1 THEN 'Y' WHEN 0 THEN 'N' END AS [IsEnabled] , CASE WHEN convert(nvarchar(3),[freq_type],3) = 64 THEN 'SQL Server 시작 ..
2016.03.14 -
보통 TempDB를 만들고 나면 성능을 위해서 TempDB를 여러개로 쪼개고 위치를 변경하고 여러가지 작업을 합니다. TempDB는 성능에 많은 영향을 미치는 DB로써 SQL Server에서 매우 민감하게 작용됩니다. Latch를 유발할 수도 있으며, 다양한 이슈가 발생 합니다. 이번에 작업 시 TempDB 경로를 잘못 설정하여, SQL Server가 올라오지 않는 문제가 있어서 해결과정을 포스트 하였습니다. 문제 - TempDB의 ldf 파일의 경로를 잘못 변경하였는데, 잘못 변경한지 인지하지 못하고 올라오지 못하는 원인을 찾지 못하였음 - Eventvwr에 내용이 있지만, 엑세스가 거부되었다는 메시지가 나와서 권한 문제로 인식하여 권한을 추가하였으나 정상적으로 올라오지 않음 Windows Event ..
TempDB 경로 문제로 인한 SQL Server 시작 불가능보통 TempDB를 만들고 나면 성능을 위해서 TempDB를 여러개로 쪼개고 위치를 변경하고 여러가지 작업을 합니다. TempDB는 성능에 많은 영향을 미치는 DB로써 SQL Server에서 매우 민감하게 작용됩니다. Latch를 유발할 수도 있으며, 다양한 이슈가 발생 합니다. 이번에 작업 시 TempDB 경로를 잘못 설정하여, SQL Server가 올라오지 않는 문제가 있어서 해결과정을 포스트 하였습니다. 문제 - TempDB의 ldf 파일의 경로를 잘못 변경하였는데, 잘못 변경한지 인지하지 못하고 올라오지 못하는 원인을 찾지 못하였음 - Eventvwr에 내용이 있지만, 엑세스가 거부되었다는 메시지가 나와서 권한 문제로 인식하여 권한을 추가하였으나 정상적으로 올라오지 않음 Windows Event ..
2016.01.21 -
가끔 SQL Server 로그에 특정한 IP를 이용하여, 접속을 시도하였으나 실패한 메시지나 특정 IP에서 어떠한 공격이 들어옵니다. IP를 통해서 Profiler를 통해서 뭐가 실행되었는지 확인하고자 하였으나, IP로 추적은 없는 듯 하여, 구글링을 하여 찾았는데 좋은 정보가 있어서 공유하고자 합니다. 해당 내용은 http://mani4u.tistory.com/41 블로그를 참조하였으며 약간의 변형만 줘봤습니다. 우선 쿼리는 다음과 같습니다.123456789SELECT P.spid,E.name as DBname,P.login_time, P.last_batch, P.status,P.program_name,P.cmd,P.loginame,C.client_net_address,D.textFROM sys.sys..
특정 IP로 실행한 쿼리 추적가끔 SQL Server 로그에 특정한 IP를 이용하여, 접속을 시도하였으나 실패한 메시지나 특정 IP에서 어떠한 공격이 들어옵니다. IP를 통해서 Profiler를 통해서 뭐가 실행되었는지 확인하고자 하였으나, IP로 추적은 없는 듯 하여, 구글링을 하여 찾았는데 좋은 정보가 있어서 공유하고자 합니다. 해당 내용은 http://mani4u.tistory.com/41 블로그를 참조하였으며 약간의 변형만 줘봤습니다. 우선 쿼리는 다음과 같습니다.123456789SELECT P.spid,E.name as DBname,P.login_time, P.last_batch, P.status,P.program_name,P.cmd,P.loginame,C.client_net_address,D.textFROM sys.sys..
2016.01.19 -
가끔 튜닝을 하고자 할때 인덱스를 생성해서 미리 어떻게 동작하는지 알고 싶을 때가 있습니다. 보통은 테스트서버 or 로컬(개인PC)에서 데이터를 마이그레이션 하거나 일부러 더미 데이터를 넣어두고, 인덱스를 생성하여, 어떻게 실행계획이 동작하는지 테스트를 합니다. 하지만 이 방법은 대단히 귀찮(?)습니다. 그래서 실제 서버에서 가상으로 인덱스를 만들어서, 실 데이터를 가지고 테스트를 진행 할 수 있는 방법을 소개하고자 합니다. 하지만 이 방법은 통계를 이용하기 때문에 100% 정확하지는 않습니다. 하지만 실제 서비스에서 바로 결과를 확인 가능하며, 빠르게 할 수 있다는 이점이 있습니다. 이 인덱스는 Hypothetical Indexes 라고 부르며, Hypothetical는 가상의라는 뜻으로 나타납니다. ..
가상 인덱스 (Hypothetical Indexes)가끔 튜닝을 하고자 할때 인덱스를 생성해서 미리 어떻게 동작하는지 알고 싶을 때가 있습니다. 보통은 테스트서버 or 로컬(개인PC)에서 데이터를 마이그레이션 하거나 일부러 더미 데이터를 넣어두고, 인덱스를 생성하여, 어떻게 실행계획이 동작하는지 테스트를 합니다. 하지만 이 방법은 대단히 귀찮(?)습니다. 그래서 실제 서버에서 가상으로 인덱스를 만들어서, 실 데이터를 가지고 테스트를 진행 할 수 있는 방법을 소개하고자 합니다. 하지만 이 방법은 통계를 이용하기 때문에 100% 정확하지는 않습니다. 하지만 실제 서비스에서 바로 결과를 확인 가능하며, 빠르게 할 수 있다는 이점이 있습니다. 이 인덱스는 Hypothetical Indexes 라고 부르며, Hypothetical는 가상의라는 뜻으로 나타납니다. ..
2015.12.30 -
클러스터링 구축 작업에서 발생한 NetFx3 라는 오류 메시지를 기반으로 문제를 해결 한 과정 및 원인에 대해서 포스팅 하였습니다.본 과정은 SQL Server 2012에서 클러스터링 구축시 발생하는 오류에 관련된 내용이며, 이 내용은 SQL Server 2012 에서만 발생하는 것으로 보여집니다. (개인적 생각임)해당 작업은 다수의 시스템 재부팅이 있으므로, Live 서버에서 진행이 불가능 할 수 있습니다. 물론 클러스터링을 구축하지 않은 상태에서 하고 있지 않으시겠지만 혹시나하는 마음에 미리 언급 드립니다. 작업 환경- OS : Windows Server 2012 R2 - DB : SQL Server 2012 작업 사항 - 2대의 서버를 클러터링으로 묶어서 구축 하는 작업 진행 작업 시 발생 한 문제..
SQL Server Clustering 설치 시 NetFx3 오류클러스터링 구축 작업에서 발생한 NetFx3 라는 오류 메시지를 기반으로 문제를 해결 한 과정 및 원인에 대해서 포스팅 하였습니다.본 과정은 SQL Server 2012에서 클러스터링 구축시 발생하는 오류에 관련된 내용이며, 이 내용은 SQL Server 2012 에서만 발생하는 것으로 보여집니다. (개인적 생각임)해당 작업은 다수의 시스템 재부팅이 있으므로, Live 서버에서 진행이 불가능 할 수 있습니다. 물론 클러스터링을 구축하지 않은 상태에서 하고 있지 않으시겠지만 혹시나하는 마음에 미리 언급 드립니다. 작업 환경- OS : Windows Server 2012 R2 - DB : SQL Server 2012 작업 사항 - 2대의 서버를 클러터링으로 묶어서 구축 하는 작업 진행 작업 시 발생 한 문제..
2015.12.29 -
성능을 수집하기 위해서 사용되는 일반적인 도구인 SQL Server Profiler는 흔히 사용하는 도구입니다.하지만, Profiler 사용 시 예기치 못한 오류로 갑자기 종료되는 경우 Trace를 중지,종료 할 수 없어 당황하는 경우가 있습니다. 그래서 SSMS에서 쿼리를 이용하여 Trace를 조작하는 방법을 살펴 보겠습니다. 우선 Trace의 상태를 살펴보기 위해서 sys.trace를 이용 합니다. select * from sys.traces아래와 같은 결과가 sys.traces에 의해서 출력되며, 각각의 항목은 MSDN에 자세히 나와 있습니다. 항목 별 설명 (https://msdn.microsoft.com/ko-kr/library/ms178579(v=sql.120).aspx)열 이름데이터 형식설명..
Query를 이용한 Trace 조작성능을 수집하기 위해서 사용되는 일반적인 도구인 SQL Server Profiler는 흔히 사용하는 도구입니다.하지만, Profiler 사용 시 예기치 못한 오류로 갑자기 종료되는 경우 Trace를 중지,종료 할 수 없어 당황하는 경우가 있습니다. 그래서 SSMS에서 쿼리를 이용하여 Trace를 조작하는 방법을 살펴 보겠습니다. 우선 Trace의 상태를 살펴보기 위해서 sys.trace를 이용 합니다. select * from sys.traces아래와 같은 결과가 sys.traces에 의해서 출력되며, 각각의 항목은 MSDN에 자세히 나와 있습니다. 항목 별 설명 (https://msdn.microsoft.com/ko-kr/library/ms178579(v=sql.120).aspx)열 이름데이터 형식설명..
2015.12.07 -
Parameter Sniffing(파라미터 스니핑)은 기존에 제가 알기론 성능에 나쁜 영향을 미치는 것으로 알고 있었습니다. 하지만 파라미터 스니핑은 SQL Server에서 대부분의 프로세스에서 성능을 향상 시킵니다. 이것은 단순한 용어이며, 파라미터 스니핑이 성능에 나쁜 영향을 주는 것은 아닙니다. 하지만 파라미터 스니핑에 의한 성능 문제 발생 시 엄청난 장애로 이어질 수 있습니다. (실제 30분 작업이 7시간이 걸려서 장애가 발생 한 적이 있습니다.) 파라미터 스니핑은 옵티마이저와 관련이 있습니다. 옵티마이저는 실행계획(Execution Plan)을 작성하기 위해서 통계 정보의 내용을 이용합니다. 그러므로 옵티마이저에 의해 생성된 실행 계획의 정확도는 통계 정보의 정확도와 통계를 생성하는데 사용된 데..
Parameter Sniffing에 관하여...Parameter Sniffing(파라미터 스니핑)은 기존에 제가 알기론 성능에 나쁜 영향을 미치는 것으로 알고 있었습니다. 하지만 파라미터 스니핑은 SQL Server에서 대부분의 프로세스에서 성능을 향상 시킵니다. 이것은 단순한 용어이며, 파라미터 스니핑이 성능에 나쁜 영향을 주는 것은 아닙니다. 하지만 파라미터 스니핑에 의한 성능 문제 발생 시 엄청난 장애로 이어질 수 있습니다. (실제 30분 작업이 7시간이 걸려서 장애가 발생 한 적이 있습니다.) 파라미터 스니핑은 옵티마이저와 관련이 있습니다. 옵티마이저는 실행계획(Execution Plan)을 작성하기 위해서 통계 정보의 내용을 이용합니다. 그러므로 옵티마이저에 의해 생성된 실행 계획의 정확도는 통계 정보의 정확도와 통계를 생성하는데 사용된 데..
2015.11.17 -
MSSQL Server 2014 의 In-Memory OLPT관련하여 정리한 내용입니다.PPT 와 스크립트가 첨부되어 있습니다. 혹시 수정사항 및 잘못된 부분 또는 궁금한 사항은 waws01@naver.com로 메일 주세요 ^.,^해당 내용은 http://blog.naver.com/gun0626 김영건님의 블로그를 대부분 참조하였으며, MSDN과 영문 블로그를 참조하였습니다.
IN-Memory OLPT (MSSQL 2014)MSSQL Server 2014 의 In-Memory OLPT관련하여 정리한 내용입니다.PPT 와 스크립트가 첨부되어 있습니다. 혹시 수정사항 및 잘못된 부분 또는 궁금한 사항은 waws01@naver.com로 메일 주세요 ^.,^해당 내용은 http://blog.naver.com/gun0626 김영건님의 블로그를 대부분 참조하였으며, MSDN과 영문 블로그를 참조하였습니다.
2015.10.28 -
안녕하세요. 금일 발생하였던 문제에 대해서 공부를 할겸해서 포스트를 작성합니다.본 내용은 이스트럭(강동운님)님의 SQLER 글에서 대부분 내용을 참고하였으며, 몇가지 설명과 그림을 붙였습니다. 오늘 모니터링 중에 데드락이 발생 한 SQL Server Error 로그가 있어서, 데드락 그랩을 잡아두고, 확인을 하였습니다. 상황을 들어보니 개발자분이 실서버에 데이터를 확인하기 위해 많은 수의 Row를 SELECT하면서 with(nolock)을 빼고 계속해서 반복적으로 수행하였고, 이때 UPDATE문이 있는 프로시저가 발동하면서 데드락이 발생하였습니다. 다행히 UPDATE되는 프로시저가 살고, SELECT가 죽어서 데이터를 이상이 없었습니다.그런데, 저의 지금까지의 경험으로는 보통 데드락은 UPDATE UPD..
SELECT 에 의한 DeadLock 발생안녕하세요. 금일 발생하였던 문제에 대해서 공부를 할겸해서 포스트를 작성합니다.본 내용은 이스트럭(강동운님)님의 SQLER 글에서 대부분 내용을 참고하였으며, 몇가지 설명과 그림을 붙였습니다. 오늘 모니터링 중에 데드락이 발생 한 SQL Server Error 로그가 있어서, 데드락 그랩을 잡아두고, 확인을 하였습니다. 상황을 들어보니 개발자분이 실서버에 데이터를 확인하기 위해 많은 수의 Row를 SELECT하면서 with(nolock)을 빼고 계속해서 반복적으로 수행하였고, 이때 UPDATE문이 있는 프로시저가 발동하면서 데드락이 발생하였습니다. 다행히 UPDATE되는 프로시저가 살고, SELECT가 죽어서 데이터를 이상이 없었습니다.그런데, 저의 지금까지의 경험으로는 보통 데드락은 UPDATE UPD..
2015.10.28 -
안녕하세요. 성능카운터 공부하면서 정리한 내용을 공유합니다. 아마 보시다보면 여기저기서 봤던 내용이 있을 수 있습니다. 나름데로, 정리한 내용이라 혹시 잘못 된 부분은 말씀해주세요.또한 포스트를 보면서 꼭 알야할 상황은 시스템의 설정과 스팩에 따라서 수치는 다를수 있습니다. 예를 들어서 ad-hoc이 엄청나게 많은 서버에서 compile은 당연히 많을 수 밖에 없습니다. 그 기준은 시스템의 환경에 따라서 다르게 보시면 좋을 듯 합니다. 아직 미완성 부분이라서 전부 내용이 있지는 않습니다. 문서 보는 방법을 우선 보시고 포스트를 보시면 편할 것 입니다. 문서 보는 방법 1. - 으로 시작하는 부분은 항목에 대한 설명입니다. 2. > 으로 시작 하는 부분은 임계치와 해결 방법을 나타냅니다. 3. * 으로 시..
MSSQL_성능 카운터(미완성)안녕하세요. 성능카운터 공부하면서 정리한 내용을 공유합니다. 아마 보시다보면 여기저기서 봤던 내용이 있을 수 있습니다. 나름데로, 정리한 내용이라 혹시 잘못 된 부분은 말씀해주세요.또한 포스트를 보면서 꼭 알야할 상황은 시스템의 설정과 스팩에 따라서 수치는 다를수 있습니다. 예를 들어서 ad-hoc이 엄청나게 많은 서버에서 compile은 당연히 많을 수 밖에 없습니다. 그 기준은 시스템의 환경에 따라서 다르게 보시면 좋을 듯 합니다. 아직 미완성 부분이라서 전부 내용이 있지는 않습니다. 문서 보는 방법을 우선 보시고 포스트를 보시면 편할 것 입니다. 문서 보는 방법 1. - 으로 시작하는 부분은 항목에 대한 설명입니다. 2. > 으로 시작 하는 부분은 임계치와 해결 방법을 나타냅니다. 3. * 으로 시..
2015.10.27 -
제가 알고 있기로 통계정보는 업데이트 하는 동안 테이블에 Lock이 걸려서 부하가 있으므로, 통계의 업데이트는 점검시간에 하는 것으로 알고 있었습니다. 하지만 비동기 옵션을 통해서 이러한 현상을 극복 할 수 있습니다. 위의 글이 잘 보이지 않는 다면 아래의 링크를 클릭하면 됩니다.http://technet.microsoft.com/ko-kr/library/bb522682(v=sql.105).aspx 비동기 업데이트 옵션을 이용한다면, 성능이 영향을 주지 않는지 테스트 하기 위해서 간단한 테스트를 진행 했습니다. 비동기 옵션을 OFF로 해두고 테스트를 진행하고, ON으로 한 뒤 진행 해보았습니다. 위의 통계옵션은 알고 있을 것이라고 생각 됩니다. 통계 정보가 업데이트를 되고 있는지 확인 하기 위해서는 다음..
MSSQL_AUTO_UPDATE_STATISTICS_ASYNC(비동기업데이트)제가 알고 있기로 통계정보는 업데이트 하는 동안 테이블에 Lock이 걸려서 부하가 있으므로, 통계의 업데이트는 점검시간에 하는 것으로 알고 있었습니다. 하지만 비동기 옵션을 통해서 이러한 현상을 극복 할 수 있습니다. 위의 글이 잘 보이지 않는 다면 아래의 링크를 클릭하면 됩니다.http://technet.microsoft.com/ko-kr/library/bb522682(v=sql.105).aspx 비동기 업데이트 옵션을 이용한다면, 성능이 영향을 주지 않는지 테스트 하기 위해서 간단한 테스트를 진행 했습니다. 비동기 옵션을 OFF로 해두고 테스트를 진행하고, ON으로 한 뒤 진행 해보았습니다. 위의 통계옵션은 알고 있을 것이라고 생각 됩니다. 통계 정보가 업데이트를 되고 있는지 확인 하기 위해서는 다음..
2015.07.01 -
DB를 관리하다 보면 로그 파일이 불필요하게 늘어나거나 디스크의 용량이 부족하여 공간을 확보해야 할 필요가 있다. 이럴때 사용 가능한 것이 Shrink이다. 필자가 생각하기에 Shrink는 방청소의 개념이라고 생각하면 될 것 같다. 사전적의미로 줄어들다, 줄어들게 하다라고 씌여있다. 확실히 맞는 말이다. 불필요하게 남은 공간을 축소해서 확 줄여주니깐.. 이번 포스트에서는 SHRINKDATABASE 기능을 알아 보도록하자. 차후 2번째 포스트에서는 SHRINKFILE을 알아 보도록 하겠다. 테스트를 위해서 데이터베이스를 한개 생성해 보도록하자. USE master GO CREATE DATABASE SHRINKDB ON PRIMARY(NAME = SHRINKDB,FILENAME = N'C:\SHRINK\SH..
MsSQL Server_Shrink(쉬링크) / ①SHRINKDATABASEDB를 관리하다 보면 로그 파일이 불필요하게 늘어나거나 디스크의 용량이 부족하여 공간을 확보해야 할 필요가 있다. 이럴때 사용 가능한 것이 Shrink이다. 필자가 생각하기에 Shrink는 방청소의 개념이라고 생각하면 될 것 같다. 사전적의미로 줄어들다, 줄어들게 하다라고 씌여있다. 확실히 맞는 말이다. 불필요하게 남은 공간을 축소해서 확 줄여주니깐.. 이번 포스트에서는 SHRINKDATABASE 기능을 알아 보도록하자. 차후 2번째 포스트에서는 SHRINKFILE을 알아 보도록 하겠다. 테스트를 위해서 데이터베이스를 한개 생성해 보도록하자. USE master GO CREATE DATABASE SHRINKDB ON PRIMARY(NAME = SHRINKDB,FILENAME = N'C:\SHRINK\SH..
2015.07.01 -
리소스 매니저를 스터디하면서 의문점이 생겨서 이번 Post를 작성합니다.리소스 매니져는 책이나 인터넷에 많이 있으니 참고하시기 바랍니다. 이번 질문은 다음과 같습니다. 만약에 리소스 매니져를 통해서 CPU의 사용량을 30% 30% 50% 걸면 110% 인대 과연 CPU를 어떻게 사용할까?이것이 질문이였습니다. 테스트 결과는 다음과 같습니다.우선 Joo Hyoung Kwon 의 3가지 유저를 만들었습니다. 3가지 유저는 각각Joo - 30% 제한Hyoung - 30% 제한Kwon - 50% 제한 이렇게 줬습니다. 또한 제가 3명의 유저가 100%를 못치고 90%정도밖에 CPU가 올라가지 않아서 제가 sa계정으로 똑같은 쿼리를 돌렸습니다. 일부러 CPU가 100%를 치도록 만든것이죠 처음에 sa를 돌렸습니다..
MsSQL_리소스 매니져(Resoure Manager) 테스트리소스 매니저를 스터디하면서 의문점이 생겨서 이번 Post를 작성합니다.리소스 매니져는 책이나 인터넷에 많이 있으니 참고하시기 바랍니다. 이번 질문은 다음과 같습니다. 만약에 리소스 매니져를 통해서 CPU의 사용량을 30% 30% 50% 걸면 110% 인대 과연 CPU를 어떻게 사용할까?이것이 질문이였습니다. 테스트 결과는 다음과 같습니다.우선 Joo Hyoung Kwon 의 3가지 유저를 만들었습니다. 3가지 유저는 각각Joo - 30% 제한Hyoung - 30% 제한Kwon - 50% 제한 이렇게 줬습니다. 또한 제가 3명의 유저가 100%를 못치고 90%정도밖에 CPU가 올라가지 않아서 제가 sa계정으로 똑같은 쿼리를 돌렸습니다. 일부러 CPU가 100%를 치도록 만든것이죠 처음에 sa를 돌렸습니다..
2015.07.01 -
작업을 하거나 어떠한 프로세스에 무엇을 추가 할때 문자를 자르거나 공백을 제거 하는 경우가 있다.특히 코드의 경우 DB상에서 잘라서 줘야 하거나 하는 경우가 있다. 이럴 때 공백을 제거하는 방법을 알아보자. 1. 왼쪽 공백 제거 LTRIMDECLARE @string_to_trim varchar(60)SET @string_to_trim = ' Five spaces are at the beginning of this string.'SELECT 'Here is the string without the leading spaces: ' + LTRIM(@string_to_trim)SELECT 'Here is the string without the leading spaces: ' + @string_to_trimGO..
MsSQL Replace작업을 하거나 어떠한 프로세스에 무엇을 추가 할때 문자를 자르거나 공백을 제거 하는 경우가 있다.특히 코드의 경우 DB상에서 잘라서 줘야 하거나 하는 경우가 있다. 이럴 때 공백을 제거하는 방법을 알아보자. 1. 왼쪽 공백 제거 LTRIMDECLARE @string_to_trim varchar(60)SET @string_to_trim = ' Five spaces are at the beginning of this string.'SELECT 'Here is the string without the leading spaces: ' + LTRIM(@string_to_trim)SELECT 'Here is the string without the leading spaces: ' + @string_to_trimGO..
2015.07.01 -
이번 세미나를 준비하면서 커서에 대해서 발표를 맡게되면서 커서를 공부하게 되었습니다.필자는 커서를 잘 사용하지 않다보니 별로 신경도 써본적이 없고 또한 인터넷에도 많은 자료가 있지는 않았습니다. 커서의 경우 당연히 느리다고 생각하고 잘 쓰지 않으므로 Post에서 커서의 옵션을 비중있게 다루거나 자세하게 설명한 부분은 없었습니다. 그래서 제가 직접 공부한 내용을 바탕으로 Post를 작성합니다. 우선 이번 Post에서 커서의 기본적인 개념에 대해서 살펴보겠습니다.자세한 옵션은 다음 Post에서 설명하겠습니다. 커서는 우선 2가지 종류로 나뉩니다. ⓐ 클라이언트 커서 : Cusor의 결과 집합이 MSSQL Server로 부터 Network를 통해서 Client로 전달되어 Client의 Memory , 임시파일..
MsSQL_커서(Cusor)이번 세미나를 준비하면서 커서에 대해서 발표를 맡게되면서 커서를 공부하게 되었습니다.필자는 커서를 잘 사용하지 않다보니 별로 신경도 써본적이 없고 또한 인터넷에도 많은 자료가 있지는 않았습니다. 커서의 경우 당연히 느리다고 생각하고 잘 쓰지 않으므로 Post에서 커서의 옵션을 비중있게 다루거나 자세하게 설명한 부분은 없었습니다. 그래서 제가 직접 공부한 내용을 바탕으로 Post를 작성합니다. 우선 이번 Post에서 커서의 기본적인 개념에 대해서 살펴보겠습니다.자세한 옵션은 다음 Post에서 설명하겠습니다. 커서는 우선 2가지 종류로 나뉩니다. ⓐ 클라이언트 커서 : Cusor의 결과 집합이 MSSQL Server로 부터 Network를 통해서 Client로 전달되어 Client의 Memory , 임시파일..
2015.07.01 -
SQL Server에서 MDF 파일의 용량이 모두 찾으면 자동증가 옵션에 따라서, 그 크기데로 증가합니다. 하지만 어떠한 DB가 증가하였는지 알고 싶은경우가 있는데, 이것을 확인하기 위해서 SQL Server에서 걸려있는 Trace 파일을 이용해서 확인 할 수 있습니다. 1. 우선 쿼리 실행창을 켠후 다음의 쿼리를 실행한다. 2. 해당 TRC 파일위치 찾기 실행 SELECT * FROM fn_trace_getinfo(DEFAULT) 위의 쿼리를 실행하면 다음과 같은 항목이 출력된다. 2번 열에 보면 위치가 나오는데 그곳이 바로 TRC파일의 위치와명칭이다. 복사해서 폴더를 열고 붙여넣기를 하면 열린다. 3. 자동증가 확인법 프로파일러를 실행하고 아래 그림의 점선으로 표시된 '속성'을 클릭한다. 이벤트 선택..
MSSQL_DB 자동증가확인SQL Server에서 MDF 파일의 용량이 모두 찾으면 자동증가 옵션에 따라서, 그 크기데로 증가합니다. 하지만 어떠한 DB가 증가하였는지 알고 싶은경우가 있는데, 이것을 확인하기 위해서 SQL Server에서 걸려있는 Trace 파일을 이용해서 확인 할 수 있습니다. 1. 우선 쿼리 실행창을 켠후 다음의 쿼리를 실행한다. 2. 해당 TRC 파일위치 찾기 실행 SELECT * FROM fn_trace_getinfo(DEFAULT) 위의 쿼리를 실행하면 다음과 같은 항목이 출력된다. 2번 열에 보면 위치가 나오는데 그곳이 바로 TRC파일의 위치와명칭이다. 복사해서 폴더를 열고 붙여넣기를 하면 열린다. 3. 자동증가 확인법 프로파일러를 실행하고 아래 그림의 점선으로 표시된 '속성'을 클릭한다. 이벤트 선택..
2015.07.01 -
MS SQL Server 2008 R2 버전 옵티마이저에 대한 포스트 입니다.이전에 쓴글을 네이버 블로그에서 T스토리로 옮겼습니다. MS SQL Server는 사용자가 쿼리를 입력하면 내부적으로 어떤 일이 일어날까? 이번 포스트의 주요 관점은 옵티마이저이므로 간단하게 전체적으로 어떠한 일이 일어나는지 알아 보도록 하자.우선 파싱을 살펴보자 사용자가 쿼리를 실행하면 파싱을 한다. 파싱은 사용자가 정확한 쿼리를 입력했는지 구문을 검사한다. 예를 들어 사용자가 다음과 같은 쿼리를 입력했다고 생각해보자
MSSQL 옵티마이저(optimizer)MS SQL Server 2008 R2 버전 옵티마이저에 대한 포스트 입니다.이전에 쓴글을 네이버 블로그에서 T스토리로 옮겼습니다. MS SQL Server는 사용자가 쿼리를 입력하면 내부적으로 어떤 일이 일어날까? 이번 포스트의 주요 관점은 옵티마이저이므로 간단하게 전체적으로 어떠한 일이 일어나는지 알아 보도록 하자.우선 파싱을 살펴보자 사용자가 쿼리를 실행하면 파싱을 한다. 파싱은 사용자가 정확한 쿼리를 입력했는지 구문을 검사한다. 예를 들어 사용자가 다음과 같은 쿼리를 입력했다고 생각해보자
2015.06.27 -
처음에 SQL Server를 설치 한 후에 설정해야 하는 값들을 정리해봤습니다.설정 이외에 왜 설정을 하는지 간단한 이유를 기입하였습니다. 버전은 SQL Server STD 2008R2 위주로 작성되었으며,(제가 가장 많이써서...) 혹시 문제가 있거나 틀린 부분은 댓글을 남겨주세요. (_ _) 설정하는 방법이 아닌 왜 설정해야 하는가를 위주로 포스트를 작성 하였습니다. 목차 Ⅰ. SYSTEM 설정 1. 하이퍼스레딩 2. 전원 계획 사용옵션 3. 프로세서 사용계획 4. Lock Pages In Memory 5. RAID 구성 6. 바이러스 백신 프로그램 관리 Ⅱ. SQL Server 설정 1. 포트설정 2. 시작 계정 관리 3. Flag 설정 4. 구성관리자 설정 5. Memory 설정 6. 계정 설정 ..
MSSQL Server 설정처음에 SQL Server를 설치 한 후에 설정해야 하는 값들을 정리해봤습니다.설정 이외에 왜 설정을 하는지 간단한 이유를 기입하였습니다. 버전은 SQL Server STD 2008R2 위주로 작성되었으며,(제가 가장 많이써서...) 혹시 문제가 있거나 틀린 부분은 댓글을 남겨주세요. (_ _) 설정하는 방법이 아닌 왜 설정해야 하는가를 위주로 포스트를 작성 하였습니다. 목차 Ⅰ. SYSTEM 설정 1. 하이퍼스레딩 2. 전원 계획 사용옵션 3. 프로세서 사용계획 4. Lock Pages In Memory 5. RAID 구성 6. 바이러스 백신 프로그램 관리 Ⅱ. SQL Server 설정 1. 포트설정 2. 시작 계정 관리 3. Flag 설정 4. 구성관리자 설정 5. Memory 설정 6. 계정 설정 ..
2015.06.25 -
작업을 하다보면 , 백업을 위해서 테이블 전체를 복사하거나 몇가지 통계 정보 또는 샘플 데이터 추출을 위해서 몇건의 데이터를 복사하는 경우가 많습니다.이러한 복사 방법과 복사시 어떻게 되는지 자세히 정리하고자 포스트를 작성 하였습니다. 여기서 중요한 것은 테이블을 복사하면, 컬럼,데이터만 복사 됩니다. 즉 인덱스 제약조건 등은 복사되지 않습니다.이점을 유의해서 테이블 복사를 사용 하셔야 합니다. 예제를 위해서 테이블을 생성하고, 값을 입력 하였습니다. USE workDB GO CREATE TABLE Copy_Tbl ( Col1 INT ,Col2 VARCHAR(10) ) GO INSERT INTO Copy_Tbl VALUES (1,'주형권1') INSERT INTO Copy_Tbl VALUES (2,'주형..
MSSQL_테이블 복사,데이터 복사작업을 하다보면 , 백업을 위해서 테이블 전체를 복사하거나 몇가지 통계 정보 또는 샘플 데이터 추출을 위해서 몇건의 데이터를 복사하는 경우가 많습니다.이러한 복사 방법과 복사시 어떻게 되는지 자세히 정리하고자 포스트를 작성 하였습니다. 여기서 중요한 것은 테이블을 복사하면, 컬럼,데이터만 복사 됩니다. 즉 인덱스 제약조건 등은 복사되지 않습니다.이점을 유의해서 테이블 복사를 사용 하셔야 합니다. 예제를 위해서 테이블을 생성하고, 값을 입력 하였습니다. USE workDB GO CREATE TABLE Copy_Tbl ( Col1 INT ,Col2 VARCHAR(10) ) GO INSERT INTO Copy_Tbl VALUES (1,'주형권1') INSERT INTO Copy_Tbl VALUES (2,'주형..
2015.06.09