'정보, 통신, 기술/BI와 DB'에 해당되는 글 19건

정보, 통신, 기술/BI와 DB

MSSQL 성능 고려 사항

이 정보는 최근에 기술지원을 받으면서 속성으로 몇 가지 들은 이야기입니다.

참고 정도만^^

 

1. 전원 관리를 고성능으로 한다.

 

2. 바이러스 검사 프로그램에서 db 파일들을 예외 처리한다.

 

3. 서버의 메모리 설정을 OS 전체 메모리에서 4기가를 뺀 것으로 한다.

- OS 메모리 사용량, SQL OS 메모리 사용량, SQL 운영 메모리 사용량을 고려해서, 물리 메모리가 8기가 이상이여야 한다.

* 참고 : http://superad.tistory.com/entry/%EC%84%9C%EB%B2%84%EC%97%B0%EA%B2%B0-%EB%81%8A%EA%B9%80-%ED%98%84%EC%83%81

* 참고2 : https://msdn.microsoft.com/ko-kr/library/ms178067.aspx

 

4. CPU를 많이 사용하는 DW, OLAP, Report 성 작업이 많지 않다면, 서버의 병렬 처리 속성을 지정해서 대기 시간을 줄입니다.

* 참고 : http://sqlmvp.tistory.com/387

* 참고2 : https://msdn.microsoft.com/ko-kr/library/ms189357.aspx

* 참고3 : https://msdn.microsoft.com/ko-kr/library/ms189094.aspx

 

5. Temp DB의 물리 파일을 여러개로 하고, 증가 설정을 퍼센트가 아닌 100메가와 같이 설정한다.

 

* 참고 : https://www.mssqltips.com/sqlservertip/2833/sql-server-2012-best-practices-analyzer-tempdb-recommendations/

 

6. MS 서비스 실행 계정에 사용자 권한을 추가한다.

MS에서 추천하는 로컬 정책중에서 자동으로 등록 되지 않은 항목(MSSQL Users 그룹이 없는 항목)들을 추가하자

로컬 보안 정책 - 로컬 정책 - 사용자 권한 할당에서 다음 항목에 대해 1,2에서 등록한 OS계정을 추가한다.

  • 메모리에 페이지 잠금(64Bit의 경우)
  • 볼륨 유지 관리 작업 수행
  • 운영 체제의 일부로 작동

* 참고 : http://brog.tistory.com/4

 

7. 실행 계획 이상으로 USP기 이상할때는 USP 실행 계획을 모두 삭제하자.

DBCC FREEPROCCACHE

* 참고 : https://www.mssqltips.com/sqlservertip/3257/different-approaches-to-correct-sql-server-parameter-sniffing/

 

정보, 통신, 기술/BI와 DB

ExpressProfiler

ExpressProfiler는 간단하고 빠른 SQL Server Profiler입니다.

 

https://expressprofiler.codeplex.com/

 

 

아주 간단한 화면으로 사용하기 간편하면서도, 기본적인 Profiler 기능은 충실해서 사용하기 매우 좋습니다.

 

더욱이 설치도 필요없는 버전을 제공해서 매우 좋네요.

 

설명에는 LocalDB도 지원한다고 하니, 개발 하는 동안에도 매우 유용하게 사용할 수 있을 것 같습니다.

 

정보, 통신, 기술/BI와 DB

[링크] Gartner’s Analytics Ascendency Model

"진화하는 BI, 차세대 BI가 뜬다"는 BI 관련 칼럼에 들어 있는 가트너의 분석 흥기 모델이다.

http://www.dator.co.kr/391210

 

원하는 것이 발생하도록 지원하는 BI 시스템은 꿈의 시스템이다.

 

 

정보, 통신, 기술/BI와 DB

오라클 스키마 조회 쿼리

오라클 데이터베이스 리뷰에 유용한 스키마 조회 쿼리입니다.

 

오라클.스키마조회.쿼리.txt

-----------------------------------------------------------
-- TABLE 조회
-----------------------------------------------------------
SELECT OWNER, TABLE_NAME, TABLESPACE_NAME
  FROM ALL_TABLES
 WHERE OWNER = 'MYNAME';

SELECT *
  FROM ALL_OBJECTS
 WHERE OWNER = 'MYNAME';

SELECT SUBSTR(TABLE_NAME, 1, 2) AS AREA1
     , SUBSTR(TABLE_NAME, 4, 1) AS AREA2
     , SUBSTR(TABLE_NAME, 4, 3) AS AREA3
     , TABLE_NAME
     , COMMENTS
  FROM ALL_TAB_COMMENTS
 WHERE OWNER = 'MYNAME'
   AND TABLE_NAME LIKE 'D%';

-----------------------------------------------------------
-- COLUMN 조회
-----------------------------------------------------------
SELECT OWNER, TABLE_NAME, COLUMN_ID, COLUMN_NAME, DATA_TYPE, DATA_LENGTH, NULLABLE
  FROM ALL_TAB_COLUMNS
 WHERE OWNER = 'MYNAME'
   AND TABLE_NAME LIKE 'D%';

SELECT *
  FROM ALL_COL_COMMENTS
 WHERE OWNER = 'MYNAME'
   AND TABLE_NAME LIKE 'D%';

SELECT A.OWNER, A.TABLE_NAME, A.COLUMN_NAME, B.COMMENTS, A.DATA_TYPE, A.DATA_LENGTH
  FROM ALL_TAB_COLUMNS A,
       ALL_COL_COMMENTS B
 WHERE A.OWNER = 'MYNAME'
   AND A.TABLE_NAME LIKE 'D%'
   AND A.TABLE_NAME = B.TABLE_NAME
   AND A.COLUMN_NAME = B.COLUMN_NAME;

-----------------------------------------------------------
-- COLUMN NAME 기준 COMMENTS 중복 조회
-----------------------------------------------------------
SELECT *
  FROM ALL_COL_COMMENTS
 WHERE OWNER = 'MYNAME'
   AND TABLE_NAME LIKE 'D%'
   AND COLUMN_NAME IN (SELECT COLUMN_NAME
                         FROM (SELECT COLUMN_NAME, SUM(CNT) AS CNT
                                 FROM (SELECT DISTINCT A.COLUMN_NAME, B.COMMENTS, 1 AS CNT
                                         FROM ALL_TAB_COLUMNS A,
                                              ALL_COL_COMMENTS B
                                        WHERE A.OWNER = 'MYNAME'
                                          AND A.TABLE_NAME LIKE 'D%'
                                          AND A.TABLE_NAME = B.TABLE_NAME
                                          AND A.COLUMN_NAME = B.COLUMN_NAME
                                          AND B.COMMENTS IS NOT NULL
                                      )
                                GROUP BY COLUMN_NAME
                              ) WHERE CNT > 1
                      );

-----------------------------------------------------------
-- COLUMN COMMENTS 기준 NAME 중복 조회
-----------------------------------------------------------
SELECT DISTINCT COLUMN_NAME, COMMENTS
  FROM ALL_COL_COMMENTS
 WHERE OWNER = 'MYNAME'
   AND TABLE_NAME LIKE 'D%'
   AND COMMENTS IN (SELECT COMMENTS
                      FROM (SELECT COMMENTS, SUM(CNT) AS CNT
                              FROM (SELECT DISTINCT A.COLUMN_NAME, B.COMMENTS, 1 AS CNT
                                      FROM ALL_TAB_COLUMNS A,
                                           ALL_COL_COMMENTS B
                                     WHERE A.OWNER = 'BIS_MGR'
                                       AND A.TABLE_NAME LIKE 'D%'
                                       AND A.TABLE_NAME = B.TABLE_NAME
                                       AND A.COLUMN_NAME = B.COLUMN_NAME
                                       AND B.COMMENTS IS NOT NULL
                                   )
                             GROUP BY COMMENTS
                           ) WHERE CNT > 1
                      );

-----------------------------------------------------------
-- COLUMN 계획 데이터 필드 조회
-----------------------------------------------------------
SELECT A.OWNER, A.TABLE_NAME, B.COMMENTS, A.COMMENTS
  FROM ALL_COL_COMMENTS A, ALL_TAB_COMMENTS B
 WHERE A.OWNER = 'MYNAME'
   AND A.TABLE_NAME LIKE 'D%'
   AND A.TABLE_NAME = B.TABLE_NAME
   AND (A.COLUMN_NAME LIKE '%PLAN%' OR A.COLUMN_NAME LIKE '%PLN%');

정보, 통신, 기술/BI와 DB

SSIS에서 오류가 발생한 데이터 로그에 쌓기

업무에서 SSIS를 사용하다보니 하나, 둘 생각해야 할 것들이 생깁니다. 역시 그냥 데이터 추출해서, 간단히 꽂는 것만 알아서는 "제대로" 업무에 적용하기가 쉽지 않습니다.
상당히 직관적인 이름과, 말풍선 도움말이 있어 전체적으로 이용하기 어렵지 않음에도 오류가 발생한 데이터가 무엇인지 확인하는 작업은 쉽게 구상이 되지 않네요. 다행히 MS가 제공하는 친절한 자료가 있습니다.

SSIS 자습서: 간단한 ETL 패키지 만들기 > 5단원: 오류 흐름 리디렉션 추가
http://msdn.microsoft.com/ko-kr/library/ms169917.aspx
http://msdn.microsoft.com/ko-kr/library/ms166569.aspx

1) 스크립트 구성 요소를 추가해서 오류 발생을 의미하는 붉은 선을 연결하고, 각각의 원본과 대상에서 오류 발생시 행 리디렉션을 선택합니다.
2) 그리고 스크립트 구성 요소 안에서는 ErrorDescription의 출력 열을 추가하고, 스크립트 편집기를 열어 Input0_ProcessInputRow 메서드에 다음의 명령을 추가합니다.

 

[VB] Row.ErrorDescription = Me.ComponentMetaData.GetErrorDescription(Row.ErrorCode)
[C#] Row.ErrorDescription = this.ComponentMetaData.GetErrorDescription(Row.ErrorCode);

3) 마지막으로 오류가 발생한 행을 저장할 플랫 파일 대상을 연결해서 적절한 이름과 파일 경로를 설정하면 됩니다.

그럼 다음과 같은 결과를 보실 수 있습니다. 화면은 Number 타입에 문자열이 들어 있는 원본 오류과, PK 중복 오류가 발생하는 대상 오류를 샘플링한 결과입니다.

 

추가 URL>
Capturing and Logging Data Load Errors for an SSIS Package
http://www.mssqltips.com/sqlservertip/2149/capturing-and-logging-data-load-errors-for-an-ssis-package/
좀 더 복잡하지만, DB를 이용해 오류가 발생한 데이터를 ErrorLog 테이블에 저장하는 방법입니다.

SSIS 오류 및 이벤트 참조
http://msdn.microsoft.com/ko-kr/library/ms345164.aspx

정보, 통신, 기술/BI와 DB

SSAS DB 접속 interface 관련 자료

Analysis Services Data Access Interfaces (Analysis Services - Multidimensional Data)
http://msdn.microsoft.com/en-us/library/ms126037.aspx

OLE DB for OLAP Schema Rowsets
http://msdn.microsoft.com/en-us/library/ms126079.aspx

ADOMD.NET Client Programming
http://msdn.microsoft.com/en-us/library/ms123477.aspx

Establishing Connections in ADOMD.NET
http://msdn.microsoft.com/en-us/library/ms123468.aspx

Retrieving Metadata from an Analytical Data Source
http://msdn.microsoft.com/en-us/library/ms123485.aspx

Retrieving Data from an Analytical Data Source
http://msdn.microsoft.com/en-us/library/ms123479.aspx

Retrieving Data Using the XmlReader
http://msdn.microsoft.com/en-us/library/ms123462.aspx

MDX: Except
http://dwbi1.wordpress.com/category/mdx/

정보, 통신, 기술/BI와 DB

SSIS Numeric 컬럼에 Null 넣기

Sybase ASE에서 만든 SAM 파일을 SSIS를 이용해 MSSQL 서버로 이관시 데이터 타입 맞취기가 쉽지 않네요.
데이터 공백의 경우 STR 타입에선 문제 없이 처리되지만, Numeric 타입에선 처리가 안되고 에러가 발생합니다.
Numeric엔 공백이 들어갈 수 없기 때문이죠. NULL 혹은 0 아니면 모를까, 공백은 안 됩니다.

그래서 데이터 Import 시에, 저는 플랫파일로 연결을 했는데, RetainNulls 옵션이 있습니다.
이 부분을 체크(True)로 해 주셔야 정상적으로 데이터 로드가 됩니다.
기본 옵션으로 체크가 되어있으면 더 좋았을 텐데 괜한 걸로 시간 좀 썼네요.

 

** http://stackoverflow.com/questions/2328649/retaining-nulls-in-numerical-columns-using-ssis-import-export-wizard

정보, 통신, 기술/BI와 DB

[링크] SSAS Custom Rollup

Measure의 계산 멤버를 추가하는 자료를 찾다가 우연히 발견한 자료입니다.
하~~ 정말 이런 쿼리를 어떻게 만들 수 있을지... 더 공부해야겠다는 생각 뿐이네요.

질문. 아래처럼 자신의 부하 직원들의 임금을 합산해 보고 싶은 경우는 어떻게 해야 하나요??
즉, Self-hierarchy 상황에서 자신의 값을 제외한 계층 합계를 구하고 싶습니다.
also, if the employee table looked liked this ----

EmployeeID     EmployeeName      ManagerID
1                     Worker1                3
2                     Worker2                3
3                     Boss                     4
4                     CEO                      4

and the fact table was ----

EmployeeID      Wages
1                      100
2                     150
3                     600
4                     1,000,000

I'd like to see the roll up for this as :
CEO                           850
         Boss                 250
               Worker1      100
               Worker2      150

. MDX Script를 이용해서 값을 재작성overwrite 하면 됩니다.
SCOPE([Measures].[Reseller Sales Amount]); 
    THIS=IIF(IsLeaf([Employee].[Employees].CurrentMember)
        ,[Measures].[Reseller Sales Amount]
        ,Sum([Employee].[Employees].CurrentMember.Children,[Measures].[Reseller Sales Amount])
    ) ;
END SCOPE;

실제로 돌려보진 않았지만, 스크립트를 보니 팍!! 이해되네요.

** http://social.msdn.microsoft.com/Forums/en-US/sqlanalysisservices/thread/b58c86b4-7b33-4845-993a-fe7f50e33fd8/

'정보, 통신, 기술 > BI와 DB' 카테고리의 다른 글

SSAS DB 접속 interface 관련 자료  (0) 2011.06.22
SSIS Numeric 컬럼에 Null 넣기  (0) 2011.06.22
[링크] SSAS Custom Rollup  (0) 2011.04.21
DMV를 이용해 SSAS 조회하기  (0) 2011.04.07
오라클 스키마 조회 퀴리  (0) 2011.03.28
OPEN BI  (0) 2011.02.25

정보, 통신, 기술/BI와 DB

DMV를 이용해 SSAS 조회하기

MSSQL에서 SSAS를 링크드 서버로 연결하고, DMV, MDX 조회를 하는 샘플입니다.
링크드 서버를 통해 OLAP 데이터베이스 스키마와 데이터를 모두 조회할 수 있습니다.

SSAS.DMV.sql


잘 정리해서 리버스 분석 툴 하나 만들려고 합니다. 잘 되야 할 텐데~~

참고 자료 :: Using SSRS to report SSAS 2008 database structure using DMVs
http://www.ssas-info.com/VidasMatelisBlog/144_using-ssrs-to-report-ssas-2008-database-structure-using-dmvs

'정보, 통신, 기술 > BI와 DB' 카테고리의 다른 글

SSIS Numeric 컬럼에 Null 넣기  (0) 2011.06.22
[링크] SSAS Custom Rollup  (0) 2011.04.21
DMV를 이용해 SSAS 조회하기  (0) 2011.04.07
오라클 스키마 조회 퀴리  (0) 2011.03.28
OPEN BI  (0) 2011.02.25
[불펌] MSSQL 2005 AS Data Mining  (0) 2010.10.08

정보, 통신, 기술/BI와 DB

오라클 스키마 조회 퀴리

-- TABLE
SELECT A.NAME, B.COMMENT$
  FROM OBJ$ A, COM$ B
 WHERE A.NAME LIKE 'BEMO%' AND TYPE# = 2
   AND B.COL#(+) IS NULL
   AND A.OBJ# = B.OBJ#(+);

-- VIEW
SELECT A.NAME, B.COMMENT$
  FROM OBJ$ A, COM$ B
 WHERE A.NAME LIKE 'BEMO%' AND TYPE# = 4
   AND B.COL#(+) IS NULL
   AND A.OBJ# = B.OBJ#(+);

-- COLUMN
SELECT O.NAME, C.NAME, CO.COMMENT$
  FROM SYS.OBJ$ O, SYS.COL$ C, SYS.COM$ CO
 WHERE O.NAME LIKE 'BEMO%'
   AND O.TYPE# IN (2, 4)
   AND O.OBJ# = C.OBJ#
   AND C.OBJ# = CO.OBJ#(+)
   AND C.INTCOL# = CO.COL#(+)
   AND BITAND(C.PROPERTY, 32) = 0;
 

'정보, 통신, 기술 > BI와 DB' 카테고리의 다른 글

[링크] SSAS Custom Rollup  (0) 2011.04.21
DMV를 이용해 SSAS 조회하기  (0) 2011.04.07
오라클 스키마 조회 퀴리  (0) 2011.03.28
OPEN BI  (0) 2011.02.25
[불펌] MSSQL 2005 AS Data Mining  (0) 2010.10.08
MSSQL 테이블, 뷰 스키마 정보 조회  (0) 2010.09.16

카운터

Today : 57
Yesterday : 44
Total : 347,604

Site

Copyright (c) 2016 최윤호. All Rights Reserved.
Powered by Tistory. Skin by wallel.
Subscribe Rss Feed