1

Sql Server 2005에서 읽기/쓰기 비율을 쿼리하려면 어떻게해야합니까? 내가 알아야 할주의 사항이 있습니까?SQL Server에서 읽기/쓰기 비율을 계산하는 방법은 무엇입니까?

DMV 쿼리, 표준 보고서, 사용자 지정 보고서 (즉, 성능 대시 보드) 또는 SQL 프로필러 추적 검사에서 찾을 수 있습니다. 나는 정확하게 모르겠다.

왜 신경 써야하나요?

웹 응용 프로그램의 데이터 레이어 성능을 향상시키는 데 시간이 걸립니다. 수백만 개의 레코드와 수천 명의 사용자를 처리합니다.

필자가 조사한 포인트 중 하나는 데이터베이스 동시성입니다. SQL Server는 기본적으로 비관적 동시성을 사용합니다. 쓰기가 많은 앱에 좋습니다. 내 앱이 무겁다면 Jeff Atwood did with StackOverflow과 같은 낙관적 동시성 (격리 수준 : read committed snapshot)으로 전환 할 수 있습니다.

답변

1

체크 아웃 sys.dm_db_index_usage_stats :

  • 는 스캔, 조회가 모두
  • 업데이트

이 카운터가 각 서버를 다시 시작 리셋 있음을 알아 두셔야합니다 기록입니다 읽고있다, 노력을 수행해야 대표적인 하중이 가해진 후에 만 ​​그들을보십시오.

는 당신을 도울 수있는 몇 가지 성능 카운터가 있습니다

  • Batch Requests/sec : 초당 수신 거래-SQL 명령 일괄 처리의 수.
  • Write Transactions/sec : 당신이 읽기 꽤 좋은 평가를 얻을 수 있습니다 이러한 비율에서 트랜잭션의 수는 데이터베이스 시작

: 데이터베이스에 쓴

  • Transactions/sec을 커밋 된 트랜잭션의 수의 비율을 쓰기 당신의 요청. 버전 저장소 켜기 당신의 갱신

    아마 동시성 처리하기위한 최선의 길이다. 말 그대로 필요로하지 않는, 그래서 대신 스냅 샷을 사용하려면이 커밋 읽게됩니다

    alter database <dbname> set allow_snapshot_isolation on; 
    alter database <dbname> set read_committed_snapshot on; 
    

    읽기 (즉, 기본 것들.) : 오히려 명시 적으로 스냅 숏 격리를 사용하는 것보다, 본인은 최선을 다하고 스냅 샷을 켜기 권 해드립니다 앱의 모든 변경 사항을 신속하게 테스트 할 수 있습니다.

    격리 수준을 명시 적으로 지정하지 않고 TransactionScope를 사용하는 경우 발생하는 일종의 직렬화 읽기 읽기 아래에서 읽기가 실행되지 않는지 조사해야합니다.

    버전 저장소가 완전히 무료라는주의 단어 한 마디. Row Versioning Resource Usage을 참조하십시오. 그리고 SQL Server 2005 Row Versioning-Based Transaction Isolation에게 읽음을 주어야합니다.

  • +0

    읽기/쓰기 비율 = 합계 (검색, 검색, 조회)/합계 (업데이트)입니까? –

    +1

    SQL로드에 대해 이야기 할 때 '읽기/쓰기 비율'에 대한 공식 정의가 없습니다. 많은 사람들이이 용어를 사용하지만 실제로 잘 정의되어 있지는 않습니다. 개인적으로, 나는 (트랜잭션/배치 요청 쓰기)와 같은 것을 사용하고 싶습니다. 인덱스 통계를 사용하면 단일 읽기 전용 작업 (예 : 하나의 SELECT 문)으로 인해 일반적으로 많은 검색/검색/조회가 발생하기 때문에 읽기 작업을 과장하기 위해 훨씬 더 편향된 비율을 제공합니다. 반면 쓰기 작업은 일반적으로 거의 발생하지 않습니다 업데이트, 종종 하나만. –

    +0

    자, 그 통계를 살펴 보겠습니다. 다음은 [좋은 쿼리 집합]입니다 (http://sqlblog.com/blogs/louis_davidson/archive/2009/06/20/read-write-ratio-versus-read-write-ratio.aspx). [Pro Sql Server 2005 데이터베이스 설계 및 최적화] (http://drsql.org/)의 저자. –

    0

    SQL Server 프로파일 러를 사용하여 만들었습니다. 난 그냥 응용 프로그램을 실행하기 전에 그것을 열고 응용 프로그램에서 뭔가를하고있는 동안 어떤 종류의 쿼리가 실행되는지 테스트했습니다. 그러나 쿼리가 작동하는지 확인하는 것이 더 좋다고 생각합니다. 이렇게 서버 작업을 측정하는 것이 편리 할 지 모르겠습니다. 프로파일 러는 나중에 분석 할 수있는 추적을 저장할 수도 있으므로 작동 할 수도 있습니다.

    +0

    답변이 모호합니다. 비율을 얻기 위해 추적에서 합계 (읽기)/합계 (쓰기)를 했습니까? 알고 있어야하는 중요한 정보입니다. 한 가지 방법이나 다른 방식으로 무거운 경우 SQL Server를 최적화 할 수 있습니다. –

    3

    모든 앱은 읽기만 큽니다.

    • 업데이트가 가장에 삽입은 고유 색인 및 FKS을 확인해야합니다
    • 쓰기 다음에 WHERE 절에 대한 읽기 읽고 왜 인덱스 FK 열

    입니다 너는 15 % 쓴다. 기사를 한 번 보았지만 다시 찾을 수는 없습니다. 더 가능성이 1 %.

    DB 당 600 만 개의 새 행에서 우리는 여전히 최소 95 % 이상의 읽기 (물론 예상)가 있음을 알고 있습니다.

    왜 알아야합니까? 또한

    : How to find out SQL Server table’s read/write statistics?

    편집, 질문 업데이트를 기반으로 ... 당신이 그것을 변경해야 할 때까지이 DB 동시성을 떠날 것이다

    . 우리는 600 만 행 + 무거운 읽지 않은 것을 전혀 변경하지 않았습니다

    웹 응용 프로그램을 조정할 때 왕복 횟수를 줄일 수 있도록 설계되었습니다 (하나의 호출 = 하나의 작업, 호출 당 여러 레코드 집합 등)

    +0

    정보를 제공해 주셔서 감사합니다. 좋은 물건. 간결한. 비율에 대한 이유를 설명하기 위해 질문을 업데이트했습니다. –

    1

    num_of_writes & num_of_reads 카운터의 비율을 찾는 방법은 sys.dm_io_virtual_file_stats입니까?

    관련 문제