'SQL Server 2005'에 해당되는 글 50건

  1. T-SQL Querying 2
  2. Query Tunning
  3. SQL2005에서 간단한 단축키
  4. DBCC 버퍼 및 실행계획 지우기 명령어
  5. SQL 2000 master db 복구 방법이 뭐란 말인가 ㅠ.ㅠ
  6. SQL Disk 구성
  7. RAID 10 vs. RAID 5 Performance
  8. RAID 0, 1, 5, 0+1 의 이해
  9. RAID 0+1 VS RAID 10
  10. Query Tunning - 3월 12일 Study

T-SQL Querying

실행계획, 실행계획 포함 수치

  쿼리스의 Subtree 비용과 실제 실행시간의 직접적인 척도를 기대하지 말아라. 하드웨어, 검색 알고리즘 기타 여러가지 요소가 존재한다.

*. Hint(index hints, join hints, parallelism, locking, compilation, and others)
1) JOIN HINT
    ex) inner merge join

2) QUERY HINT
    option(optimizer for(@od = '99999991231'))

3) TABLE HINT
    with(index = index_name)

'SQL Server 2005' 카테고리의 다른 글

MSSQL2005 최대 가용 인스턴스 수(컴퓨터당)  (0) 2008.07.07
Tracing and Profiling  (0) 2008.06.01
Query Tunning  (0) 2008.04.17
SQL2005에서 간단한 단축키  (0) 2008.04.17
DBCC 버퍼 및 실행계획 지우기 명령어  (0) 2008.04.16

Query Tunning

*. execute plan(Ctrl+L)
    : 쿼리를 실행하기 전에 실행계획을 생성한다.
      전체 데이타를 가지고 실행계획을 생성하는 것은 아니다.

*. 실행계획 포함(Ctrl+M)
   : 실행 결과로 실행시간에 모아진 정보로 측정한다.
-- 실행계획 옵션
CTRL+L

-- 실행계획 포함 옵션
CTRL+M

'SQL Server 2005' 카테고리의 다른 글

T-SQL Querying  (2) 2008.04.29
Query Tunning  (0) 2008.04.17
DBCC 버퍼 및 실행계획 지우기 명령어  (0) 2008.04.16
SQL 2000 master db 복구 방법이 뭐란 말인가 ㅠ.ㅠ  (0) 2008.04.01
SQL Disk 구성  (0) 2008.03.14
물리적인 SQL OS의 메모리 CLEAR 시키는 명령어...
아래의 명령어는 전체 DB 에 해당한다.

-- 캐쉬에 저장되어 있던 버퍼 정보를 클리어 시키는 명령어
DBCC DROPCLEANBUFFERS;
GO
-- 실행계획 지우는 명령어
DBCC FREEPROCCACHE;
GO


-- 2009.04.08
-- Clear buffers
DBCC FREESESSIONCACHE
DBCC FREEPROCCACHE
DBCC FREESYSTEMCACHE('ALL')

CHECKPOINT
DBCC DROPCLEANBUFFERS
GO

'SQL Server 2005' 카테고리의 다른 글

Query Tunning  (0) 2008.04.17
SQL2005에서 간단한 단축키  (0) 2008.04.17
SQL 2000 master db 복구 방법이 뭐란 말인가 ㅠ.ㅠ  (0) 2008.04.01
SQL Disk 구성  (0) 2008.03.14
RAID 10 vs. RAID 5 Performance  (0) 2008.03.14

설명 방법과 같이 master db의 백업 버젼의 빌드 버젼과 현재 서버의 빌드 버젼 호환되게 설치를 했다.
아웅... 복구를 하여도,,,,,,,, 서버가 시작이 안된다. 내 방법에 뭐가 문제가 있다는 말인가?
도대체 무슨 문제양 ㅠ.ㅠ..................... 미치겠군.. 내일까지 완료해야 할것 같은데..
나도 내일 일정이 바쁜데 에효..ㅠ.ㅠ
하나를 알아두 제대로 알아야 하겠다.
얼마전에 복원햇는데 뭐가 문제란 말인가???

앗.. 해결했다...
히히히히히히.. 이것을 SQL 7.0에서 햇던 것 같은데 흑흑흑흑....

'SQL Server 2005' 카테고리의 다른 글

SQL2005에서 간단한 단축키  (0) 2008.04.17
DBCC 버퍼 및 실행계획 지우기 명령어  (0) 2008.04.16
SQL Disk 구성  (0) 2008.03.14
RAID 10 vs. RAID 5 Performance  (0) 2008.03.14
RAID 0, 1, 5, 0+1 의 이해  (0) 2008.03.14

SQL Disk 구성

RAID 구성

    데이타 파일 : RAID 0(패리티 없는 디스크 스트라이핑은 읽기 /쓰기 성능 좋음) + 1(디스크 미러링)
       디스크 볼륨 4장 필요

      OS System, 로그 파일 : RAID 1
         디스크 볼륨 2장 필요
      RAID 0(디스크 스트라이핑)
         두개의 볼륨에다가 나눠서 쓰기 한다. 쓰기 속도가 빠르다.

      RAID 1(디스크 미러링)
         모든 데이타는 양쪽 드라이브에 모두 쓰여져야 한다, 그래서 쓰기는 느리지만, 읽기 성능은 빠르다. 왜냐하면  데이터 검색이 양쪽 디스크로 나눠 지기 때문이다. 
          OS System이용(드라이브를 완벽하게 이중화하기 때문)
          트랜잭션 로그는 순차적으로 쓰기 작업을 하고 롤백을 하는 경우만 읽기 동작을 하므로 트랜잭션 로그를 담는 드라이브 역시 권장


      RAID 5(패리티 있는 디스크 스트라이핑)
         다중 디스크 스트라이핑과 쓰여지는 데이터의 패리티 정보를 저장함으로써 내결합성을 제공


      • SQL 2005 에디션
      Edition Level  Database 파일 크기  CPU  RAM 지원 서비스
       Work Group 초급 수준  무제한  3G  제한된 복제, 전체 텍스트 검색 
      Standard  중간 규모  무제한 무제한  미러링, 데이터 마이닝, 데이터 통합 서비스 등을 포함  
      Enterprise  대규묘  무제한     

      테이블을 수평적으로 파티션 할 수 있다.  

      미러링, 데이터 마이닝, OLAP 분석 도구

      장애극복 클러스터링 

      • 메모리 사용 형태

        • 대 부분 권장 사항 최소 용량에 2배 정도되는 메모리 요구
        • SQL 2005와 기본적으로 시작되는 Windows 서비스 모두 약 256MB의 메모리 사용 
        • Analysis Service, Reporting Services, Notification Services와 같은 추가적인 데이타베이스 기능을 사용하게 되면 기본 메모리는 더 높이 올라가게 된다.  
        • Management Studio 을 사용하기 위해서 약 50MB ~ 60MB 추가 요구 
        • 하나의 사용자 연결을 위해서는 24KB의 메모리 소모  

       

        이 글은 스프링노트에서 작성되었습니다.

        RAID 10 vs. RAID 5 Performance

         

        RAID 10 vs. RAID 5 Performance

        One of my clients is in the process of standardizing all their servers on RAID 10.  We discovered one of their smaller servers had been delivered with RAID 5 already configured.  I took the opportunity to run some tests on the drives prior to reconfiguring them into RAID 10.  My tests weren't very scientific.  I just used SQLIO.EXE to generate random 8KB reads and writes.

         

        image

         

        Reads were just a little bit better but writes were almost twice as fast.  This makes sense as the array isn't spending time computing the parity information.  Some notes on my setup:

        • There are FOUR drives in the array.
        • Each drive was a 146GB 15K SAS drive with 8MB of cache.
        • The test was performed with a 5GB file.  I'd prefer a larger file but my time was limited and the RAID 5 tests were already completed.
        • The controller was one of the low-end PERC controllers from Dell.
        • 64KB random writes showed a similar doubling of IOPS.  I didn't test sequential writes.

        Print | posted on Monday, June 18, 2007 10:45 AM

         

        이 글은 스프링노트에서 작성되었습니다.

        'SQL Server 2005' 카테고리의 다른 글

        SQL 2000 master db 복구 방법이 뭐란 말인가 ㅠ.ㅠ  (0) 2008.04.01
        SQL Disk 구성  (0) 2008.03.14
        RAID 0, 1, 5, 0+1 의 이해  (0) 2008.03.14
        RAID 0+1 VS RAID 10  (0) 2008.03.14
        Query Tunning - 3월 12일 Study  (0) 2008.03.12

        RAID 0, 1, 5, 0+1 의 이해

        RAID 0
        RAID-0는 전형적인 Parity가 없는 striped disk drive들의 non-redundant group으로 정의된다. RAID-0 array는 보통 I/O intensive application을 위한 large stripes로 구성되는데, 종종 data intensive application의 single-user를 위한 synchronized spindle drive들을 이용한 sector-stripe으로 구성할 수도있다.
        RAID-0는 redundancy를 지원하지 않기 때문에 만일 Array내의 하나의 drive가 장애를 일으키면, Array 전체가 장애를 일으키게 된다. 그러나 RAID-0는 모든 Array type중 가장 빠르고 data저장 효율이 높다.
        RAID 1
        Disk Mirroring이라 불리는 RAID-1은 data를 중복 저장하도록 디스크드라이브들을 쌍로 구성한 것으로 서버쪽으로는 하나의 드라이브로 인식된다. RAID-1은 striping은 사용되지 않는 반면, 여러개의 RAID-1 array들이 서로 striped되어 mirrored drives pair들로 구성된 하나의 대용량 array로 구성 시킬 수 있으며, 이를 "Dual-level array" 또는 RAID-10이라 부른다.
        Write는 Mirrored Pair인 두개의 Drive에 동시에 저장되어 각 Drive가 동일한 정보를 저장하게 된다. 그러나 각 Drive는 Simultaneous Read Operation을 수행할 수 있다. 따라서, 각 Drive의 Read Performance는 두배로 되고 Write Performance는 변화가 없게 된다. RAID-1은 Redundant를 가진 Array중에서는 최고의 Performance를 보이며, 특히 Multi-user Environment에서 유용하다.
        RAID 3
        RAID-3는 RAID-2처럼 Sector-striped data를 Drive Group에 걸쳐 저장하지만, Group내의 하나의 Drive는 Parity Information만을 저장하도록 지정된다. RAID-3는 Error Detection을 위해서는 각 sector에 embbed된 ECC에 의존한다.
        Hard Drive가 장애를 일으킬 경우, Data 복구는 남아있는 Drive상에 기록된Information의 Exclusive OR(XOR)연산을 통하여 이루어진다.
        Records는 전형적으로 모든 Drive에 걸쳐 있기때문에, Data Intensive 환경에 적합하다. 각 I/O은 Array내의 모든 Drive들을 액세스하기 때문에, RAID-3 Array는 I/O을 Overlap시킬 수가 없고 따라서, RAID-3는 long record의 Single-user, Single-tasking 환경에 적합하다. 그러므로 Short record에서의 성능 저하를 피하기 위해서는, RAID-3는 Synchronized-spindle drives가 필요하다.
        RAID 5
        종종 Rotating Parity Array라 불리는 RAID-5는 RAID-4에서 하나의 전용Parity Drive를 설정함으로써, Parity Update가 한 Drive에서 이루어지므로 생기는 Write Bottleneck을 피하기 위하여 만들어진 RAID Array이다.
        RAID-5는 RAID-4처럼 large-stripe이 사용되어 multiple I/O operation이 overlap되도록 하고 있다. 그러나, RAID-4와는 다르게, 각 Drive들이 일련의 서로다른 stripes들에 대한 parity를 돌아가면서 저장하게 된다.
        따라서, 전용 parity Drive가 없기 때문에 모든 drive들이 데이타를 저장할 수 있고, Read operation이 모든 drive에 걸쳐 overlap될 수 있다.Write Operation은 전형적으로 single data drive를 액세스하며 그 record에 대한 parity drive를 액세스한다.
        따라서, RAID-4와는 달리 서로 다른 records들이 해당 parity들을 서로 다른 drive들에 저장하기 때문에, Write Operation도 overlap이 가능하다. RAID-5는 RAID-1이 모든 데이타를 redundant copy하는 것과는 달리, parity information만을 저장하기 때문에 RAID-1에 비하여 Storage Efficiency를 높일 수 있다. 결과적으로 RAID-5 Array는 어떤 수의 Drive도 연결이 가능하고, 각 Drive들은 Parity information 저장 부분만을 제외하고는 모두 data storage로 활용될 수 있다. 즉, RAID-5는 RAID-1보다 저장 장치를 효율적으로 극대화 시킬 수 있다. 그러나 performance에서는 손실을 감수 하여야 한다.
        Data가 RAID-5 Array에 쓰여질 때, Parity information 또한 Update되어야 하는데, 이는 Write Operation에 의하여 어떤 data bit들이 바뀌었는지를 찾아내어 이에 해당하는 parity bits들을 바꾸므로서 Update된다.
        이는 overwritten될 old data를 먼저 읽고, 이 것이 새로 overwrite될 새로운 데이타와 XOR 연산을 하므로써 수행된다. 이 것은 바뀐 모든 bit의 position에서 1이 되는 bit mask를 만들게 되고, 이 bit mask가 parity drive로 부터읽어 들인 old parity information과 XOR연산을 수행한다. 이 결과, Parity information내에 있는 해당 bit를 변화 시킨다. 이렇게 하여 Update된 Parity는 Parity Drive에 write back된다.
        그러므로, write-request하는 모든 Application에 대하여 RAID-5 Array는 두개 의 Read, 두개의 Write와 두개의 XOR operation을 수행하여야 만이 원래의 write가 완료된다.
        RAID-1에서의 redundant data에 비하여, Parity를 저장하는 RAID-5는 위와 같이 보다 많은 연산을 행하게 되며, write operation 중에 parity information을 재생하는데 추가적으로 시간이 소요된다. 이러한 이유 때문에 RAID-5는 RAID-1에 비하여 write performance가 약 3/5~1/3 수준밖에 되지 않는다. 이때문에, RAID-5 Array는 결코 Software적으로 사용되지 않으며, 아울러 디지탈 비디오 캡쳐와 같이 write performance가 중요한 Application에는 사용되지 않는다.
         
        Level 0
        Level 1
        Level 5
        Level 0 + 1
        장점
        - DISK I/O가 분산이 된다.
        - RAID level중 가장 빠르다.
        - DATA 저장 효율이 높다.
        - 안정적이다.
        - redundant해서 Fault Tolerance를 보장한다.
        - simultaneous-read가 되기 때문에 기존의 방법에 2배정도 읽기 효과를 준다.
        - Write-bottleneck 현상을 줄일 수 있다.
        - 안정적이다.
        - disk I/O를 줄일 수 있다.
        - hot-swap, hot-fix, hot-spare, hot-plug등이 가능하다.
        - Level 0과 Level 1의 장점을 가진다.
         
        단점
        - Fault Tolerance가 보장되지 않는다.
        - 안정적이?못하다.
        - redundant가 없다.
        - 비용이 비싸다.
        - Striping이 되지를 않기 때문에 disk I/O bottleneck 현상에 대해 효율적이지 못하다.
        - level 1에 비해서 읽기 성능이 떨어진다.
        - level 0에 비해 저장효율이 떨어진다.
        - 비용이 비싸다.
        - disk 저장 효율성이 그리 높지 않다.

        'SQL Server 2005' 카테고리의 다른 글

        SQL 2000 master db 복구 방법이 뭐란 말인가 ㅠ.ㅠ  (0) 2008.04.01
        SQL Disk 구성  (0) 2008.03.14
        RAID 10 vs. RAID 5 Performance  (0) 2008.03.14
        RAID 0+1 VS RAID 10  (0) 2008.03.14
        Query Tunning - 3월 12일 Study  (0) 2008.03.12

        RAID 0+1 VS RAID 10

        RAID 0+1 VS RAID 10 new Copy url

                         

         

                   RAID 0+1                                                   RAID 10

                      4개를 스트라이프 친 후                                     4개로 미러링을 한후

                     두 개로 미러링으로 묶는다.                                그룹에 대해 스트라이프를 친다.

                     단점: 디스크 하나가 fail이 나면                          장점: 디스크 하나가 fail이 나면

                     전체를 리빌드 하여야 한다.                               하나만 리빌드 한다.

        -------------------------------------------------------------------

        *아래 내용은 인터넷에서 긁어 온 겁니다.. 출처가 생각이 안 나요 ㅠㅠ;;

          내용이 좋아서 붙여 넣기 한거 죄송 합니다 ^^;;

         

        RAID10과 0+1은 비슷하면서도 다릅니다. 비슷한 면으로는

        1. 용량이 같다.

        2. 속도가 같다.

        정도 입니다.

         

        다른 면으로는

        1. 기술적으로 RAID10이 복잡한 반면 RAID0+1은 단순하다.

        2. RAID10은 안정성이 높으나 RAID0+1은 상대적으로 낮다.

        입니다. 지금부터 그 구조를 알려드리겠습니다.

         

        두 레이드는 기본적으로 RAID0 과 RAID1의 조합으로 이루어진다는 것에는 차이가 없습니다. 즉, 속도의 향상과 안정성의 향상이라는 두 가지를 합쳐둔 것 입니다. 그러나 그 사소한 차이가 큰 결과를 만들어내는 것이 어느것이 먼저냐는 것 입니다.

         

        먼저 RAID0+1에 대해서 설명드리면,

        RAID0으로 구성한 다음 RAID1으로 미러링을 하는 구조입니다. 말로 설명하면 이해가 잘 안가니 그림 비슷한것을 그려서 설명 드리겠습니다.

        RAID0+1로 10개의 HDD를 묶는다고 하면,

        1) RAID0으로 5개씩 묶습니다.

        RAID0[1,2,3,4,5], RAID0[6,7,8,9,10] 이렇게 2개의 묶음을 R0, R1이라고 이름짓습니다.

        2) RAID1으로 2개를 묶습니다.

        RAID1[R0,R1]

        이것을 풀어서 보시면

        RAID1[RAID0[1,2,3,4,5],RAID0[6,7,8,9,10]] 이렇게 들어가는것을 알수 있습니다.

        일단 여기까지만 설명드리고 다음으로 넘어가겠습니다. 눈치 빠른 분들은 제가 무슨 이야기르할지 알고 계실겁니다.

         

        그다음 RAID10에 대해서 말씀드리겠습니다.

        RAID1로 구성한것을 RAID0로 묶는 구조입니다.

        RAID10으로 10개의 HDD를 묶는다고 하면,

        1) RAID1으로 2개씩 묶어서 5개의 RAID1볼륨을 만듭니다.

        RAID1[1,2], RAID1[3,4], RAID1[5,6], RAID1[7,8], RAID1[9,10] 이렇게 5개가 나옵니다. 각각 R0, R1, R2, R3, R4라고 이름짓습니다.

        2) RAID0로 5개를 묶습니다.

        RAID0[R0,R1,R2,R3,R4]

        이것을 풀어서 보면

        RAID0[RAID1[1,2],RAID1[3,4],RAID1[5,6],RAID1[7,8],RAID1[9,10]] 이렇게 됩니다. 지금부터 본격적인 차이점을 설명드리겠습니다.

         

        <첫번째 차이점. 안정성의 차이>

        RAID0+1에서 RAID1[RAID0[1,2,3,4,5],RAID0[6,7,8,9,10]]가 있는데, 1번 하드가 고장 나버렸습니다.

        그러면 RAID0[1,2,3,4,5]는 깨지겠죠? RAID0는 하나라도 문제가 생기면 전체가 중지되어버립니다.

        반면에 RAID10은 RAID0[RAID1[1,2],RAID1[3,4],RAID1[5,6],RAID1[7,8],RAID1[9,10]]에서 1번하드가 고장나면, RAID1[1,2]가 RAID1이기 때문에 1,2가 동시에 문제가 생기지 않는 한은 RAID1은 중지되지 않습니다.

        이런 질문을 하실 수 있습니다. 1,2가 같이 깨지는 경우는 RAID0+1이 낫겠네요...라고요.

        그러나 확률을 보시면 아시겠지만, RAID0+1의 경우는 R0에 하나 R1에 하나만 문제가 생기면 완전히 끝입니다. 그러나 RAID10의 경우는 1,3,5,7,9 5개의 하드가 동시에 깨져도 문제 없이 동작합니다. 확률적으로 더 나은 안정성을 보장하죠.

         

        <두번째 차이점. 복구의 차이>

        RAID0+1의 경우 1번 하드가 깨진 경우, 1번 하드를 교체후에 REBUILD를 하게 되면 R1에서 R0을 통채로 복사하게 됩니다.

        반면 RAID10의 경우 1번 하드가 깨진 경우, 1번 하드를 교체후 REBUILD를 하면 2번 하드에서 1번 하드로 복사를 하게 됩니다.

        RAID10의 경우 시간이 엄청나게 단축된다.

        'SQL Server 2005' 카테고리의 다른 글

        SQL 2000 master db 복구 방법이 뭐란 말인가 ㅠ.ㅠ  (0) 2008.04.01
        SQL Disk 구성  (0) 2008.03.14
        RAID 10 vs. RAID 5 Performance  (0) 2008.03.14
        RAID 0, 1, 5, 0+1 의 이해  (0) 2008.03.14
        Query Tunning - 3월 12일 Study  (0) 2008.03.12

        튜닝을 위해서는 아래와 같은 Drill Down 분석

        1. Instance Level waits 분석
        2. 대기 큐를 연관?
        3. 행동 지침을 설정
        4. 데이타베이스/파일 레벨 drill down 분석
        5. 프로세스 레벨 drill down 분석
        6. Tuneindex/queries

        1. Instance level waits 분석

        SQL 2005 DMV called sys.dm_os_waits_stat
        SQL 2000 DBCC SQLPERF(WAITSTATS)
        위의 두가지 정보는 SQL instantce가 시작 시점부터 기록한 정보이다.

        SQL 2005 RETURN
        SELECT
          wait_type,
          waiting_tasks_count,
          wait_time_ms,
          max_wait_time_ms,
          signal_wait_time_ms
        FROM sys.dm_os_wait_stats
        ORDER BY wait_type;
        194개의 레코드 정보를 반환한다......

        위의 정보를 클리어 하기 위해서는
        -- SQL 2005
        DBCC SQLPERF('sys.dm_os_wait_stats', CLEAR);
        GO

        -- SQL 2000
        DBCC SQLPERF(WAITSTATS, CLEAR);
        GO


        ----------------------------------------------------------------------------
        -- 대기 상태 정보 추출
        ----------------------------------------------------------------------------
        USE Performance;
        GO
        IF OBJECT_ID('dbo.WaitStats') IS NOT NULL
          DROP TABLE dbo.WaitStats;
        GO

        -- 빈 테이블을 생성하라
        SELECT GETDATE() AS dt,
          wait_type, waiting_tasks_count, wait_time_ms,
          max_wait_time_ms, signal_wait_time_ms
        INTO dbo.WaitStats
        FROM sys.dm_os_wait_stats
        WHERE 1 = 2;
        go

        -- 인덱스 생성
        ALTER TABLE dbo.WaitStats
          ADD CONSTRAINT PK_WaitStats PRIMARY KEY(dt, wait_type);
        go
        CREATE INDEX idx_type_dt ON dbo.WaitStats(wait_type, dt);
        go





         

        'SQL Server 2005' 카테고리의 다른 글

        SQL 2000 master db 복구 방법이 뭐란 말인가 ㅠ.ㅠ  (0) 2008.04.01
        SQL Disk 구성  (0) 2008.03.14
        RAID 10 vs. RAID 5 Performance  (0) 2008.03.14
        RAID 0, 1, 5, 0+1 의 이해  (0) 2008.03.14
        RAID 0+1 VS RAID 10  (0) 2008.03.14