mssql
-
DB백업로그 안남기기Database 2020. 11. 4. 17:28
Error로그는 남는다. USE DBName; GO DBCC TRACEON(3226,-1) DBCC TRACESTATUS /* TraceFlag Status Global Session --------- ------ ------ ------- 3226 1 1 0 */ BACKUP DATABASE DBName TO DISK ='D:\BACKUP2.BAK' /* 파일3에서데이터베이스'BACKUPLOGTEST', 파일'BACKUPLOGTEST'에대해176개의페이지를처리했습니다. 파일3에서데이터베이스'BACKUPLOGTEST', 파일'BACKUPLOGTEST_log'에대해5개의페이지를처리했습니다. BACKUP DATABASE이(가) 181개의페이지를0.419초동안처리했습니다(3.364MB/초). */ exec s..
-
SORT 영역을 적게 사용하도록 SQL 작성Database 2020. 11. 4. 10:53
소트 연산이 불가피하다면 메모리 내에서 처리되게 하려고 노력해야 한다. 소트 영역 크기를 늘리는 방법도 있지만 그전에 소트 영역을 적게 사용할 방법부터 찾는 것이 순서다. 가. 소트 완료 후 데이터 가공 특정 기간에 발생한 주문상품 목록을 파일로 내리고자 한다. 아래 두 SQL 중 어느 쪽이 소트 영역을 더 적게 사용할까? [ 1번 ] select lpad(상품번호, 30) || lpad(상품명, 30) || lpad(고객ID, 10) || lpad(고객명, 20) || to_char(주문일시, 'yyyymmdd hh24:mi:ss') from 주문상품 where 주문일시 between :start and :end order by 상품번호 [ 2번 ] select lpad(상품번호, 30) || lpad..
-
파티션 확인하고 파티션테이블별로 조회하기Database 2020. 11. 4. 10:36
SELECT pf.*, prf.* FROM sys.partition_functions pf JOIN sys.partition_range_values prf ON pf.function_id = prf.function_id --WHERE pf.name = '파티션네임'; --group by name select * from tBM where $partition.위쿼리에서 확인한 파티션 name(value index키값) = boundary값 테이블 파티셔닝은 다양한 디자인과 성능 문제에 도움을 줄 수 있는 훌륭한 기능이지만, 또한 문제 집합을 만들 수도 있다. clustered index에 파티션 열을 추가하면 저장공간 및 인덱스 유지 보수 비용이 증가한다. 다른 물리적 데이터 레이아웃 변경이 될 경우 실행..
-
오라클 vs MS SQL 함수 비교Database 2020. 10. 30. 15:43
수식/수치 연산 함수 다음은 Oracle에서 지원하는 수식/수치 연산 함수와 그에 상응하는 Microsoft SQL Server의 함수를 정리한 표입니다. 함수 설명 Oracle Microsoft SQL Server 절대 값 ABS ABS 아크 코사인 ACOS ACOS 아크 사인 ASIN ASIN n의 아크 탄젠트 ATAN ATAN n과 m의 아크 탄젠트 ATAN2 ATN2 최소 정수 >= 값 CEIL CEILING 코사인 COS COS 쌍곡선 코사인 COSH COT 지수 값 EXP EXP 최대 정수
-
MSSQL 튜닝 기초Database 2020. 10. 30. 14:13
1 SELECT는 필요한 결과값만을 요구 하는가? 2 적절한 WHERE 조건을 사용하는가? 3 COUNT(컬럼명) 대신 COUNT()을 사용하는가? 4 커서 및 임시 테이블의 내용을 최대한 자제하는가? 커서보다는 임시 테이블이 임시 테이블보다는 테이블 변 수를 사용하는 것이 성능이 나아진다. 5 VIEW의 총 사용을 줄였는가? 6 저장 프로시저를 사용하는가? 저장 프로시저의 역할 7가지 1. 데이터 무결성의 시행 2. 복잡한 비즈니스 규칙과 제약의 강화 3. 캡슐형 설계 4. 유지 보수 5. 네트워크 트래픽 감소(오고 가는 긴 SQL 구문을 축소) 6. 보다 빠른 실행(컴파일을 하지 않습니다) 7. 보안 강화 쿼리는 한번만 실행할 때는 일반 SQL이 훨씬 간단하다. 그러나 반복적으로 실행 되면 저장 프로..
-
MSSQL 특정문자열을 사용하는 SP,VIEW,Function,Trigger 찾기Database 2020. 10. 29. 17:06
아래 쿼리로 특정문자열이 포함된 프로시저, 뷰테이블, 함수, 트리거를 찾을 수 있다. select distinct a.name from sysobjects a with (nolock) join syscomments b with (nolock) on a.id = b.id where a.xtype = 'P' and b.text like '%' + '찾을 문자열' + '%' order by a.name /* xtype = 'P' : SP xtype = 'TR' : 트리거 xtype = 'V' : 뷰 xtype = 'FN' : 함수 */ 하나하나 열어보는 고생을 좀 덜어준다. 다만 주석처리된 부분까지도 찾아버리는.....
-
MSSQL 세션 정보 확인Database 2020. 10. 26. 16:56
db가 갑자기 느려지는 경우 sp_lock 명령어로 세션을 확인한다. 실행 후 나오는 값에 대하여 아래와 같이 정리되어 있다. spid smallint 잠금을 요청하는 프로세스의 데이터베이스 엔진 세션 ID입니다. dbid smallint 잠금이 설정된 데이터베이스의 ID입니다. DB_NAME() 함수를 사용하여 데이터베이스를 식별할 수 있습니다. ObjId int 잠금이 설정된 개체의 ID입니다. 관련 데이터베이스에서 OBJECT_NAME() 함수를 사용하여 개체를 식별할 수 있습니다. 값 99는 특별한 경우로서 데이터베이스에서 페이지 할당을 기록하는 데 사용되는 시스템 페이지 중 하나에 대한 잠금을 나타냅니다. IndId smallint 잠금이 설정된 인덱스의 ID입니다. Type nchar (4) ..
-
인덱스 조각 상태 쿼리 MS-SQLDatabase 2020. 10. 22. 16:29
아래 함수로 테이블의 인덱스 조각 상태를 알 수 있다. --조회 DBCC SHOWCONTIG (tableName) 익스텐드 검색 조각화 상태가 30%를 넘어가면 인덱스의 재구성이 필요하다. 다음 쿼리를 이용하면 해당 테이블의 인덱스별 인덱스 상태를 알수 있다. SELECT a.object_id, object_name(a.object_id) AS TableName, a.index_id, name AS IndedxName, avg_fragmentation_in_percent FROM sys.dm_db_index_physical_stats (DB_ID (N'dbName') , OBJECT_ID(N'tableName') , NULL , NULL , NULL) AS a INNER JOIN sys.indexes A..