2010-03-16 2 views
0

데이터베이스 (SQL Server 2005)에 실시간 주식 시장 가격을 저장할 응용 프로그램 (C#으로 작성)이 있습니다. 하루에 약 1 백만 개의 레코드를 삽입합니다. 이제 시장에 더 많은 세그먼트를 추가하고 레코드 수를 두 배로 늘릴 것입니다 (2 백만/일).SQL Server 2005에 대량의 데이터 삽입

는 현재 초당 평균 레코드를 삽입 약 50이며, 최대 값은 450이고, 최소값은 0

내 가격 테이블에 특정 조건 내가 사용했던 서비스 브로커 (비동기 트리거)를 확인하는 것입니다. 현재로서는 (CPU 사용률 약 35 %) 정상적으로 실행 중입니다.

이제 a 메모리 데이터 집합 현재 주가를 만들 계획입니다. 우리는 간단한 계산을하고 싶습니다.

현재 xml 일괄 삽입 방법을 사용하고 있습니다. (Storred Proc의 OPENXML)

다른 회원들의 의견을 알고 싶습니다.

이러한 상황을 처리 할 방법을 제공해주십시오.

+4

무엇이 질문입니까? 실행 가능한 아키텍처를 요구하고 있습니까? –

+0

"우리는 몇 가지 간단한 계산을 할 것입니다."읽으면 몇 가지 간단한 계산을하고 싶습니까? 단순한 계산을 수행하기 위해 데이터베이스의 데이터를 메모리 데이터 집합으로 가져 오는 이유는 무엇입니까? SQL은 계산할 수있는 것 이상이며, SQL Server에서 C# 코드를 실행할 수 있습니다. –

+0

@Stephanie Page, 지금 데이터베이스에서 모든 것을하고 있습니다. 간단한 계산은 특정 주식의 현재 가격이> 가치 (사용자가 제공)입니다. 응용 프로그램이 이러한 조건을 기반으로 작업을 수행해야하기 때문에 이러한 조건을 메모리에 저장하려고합니다. 현재, 나는 데이터베이스에 레코드를 쓰고, 일부 트리거는 다른 테이블에 작업 저장소 결과를 검사하는 조건을 수행하고 응용 프로그램은 변경을 위해 해당 테이블을 계속 쿼리합니다. 그 결과가 지연되었습니다. offcouse에는 데이터베이스에 보관해야하는 복잡한 조건이 있습니다. – Manjoor

답변

0

귀하의 질문은 읽기이지만 제목은 글쓰기를 의미합니까?

읽을 때, 일부 처리를 수행하려는 경우 임시 테이블을 사용하여 데이터를 캐시하는 것을 고려하십시오 (맹목적으로 사용하지 마십시오). 그러나, 간단한 계산에 의해 나는 집계가 AVG, MAX 등의 라이브라고 가정한다.

일반적으로 데이터를 드래그하여 클라이언트에 캐시하고 거기에 집계하는 것이 좋습니다.

하면 일괄 업로드 :

  • SqlBulkCopy의 또는

단일 업로드하는 경우와 최종 테이블에 준비에서 준비 테이블

  • 단일 쓰기와 유사한 단지 삽입이

    SQL Server ('Orable, MySQL, DB2 등)에서 수행 할 수있는 작업에 대한 반올림 오류는 하루에 백만 행입니다

    예 : 35k transaction (not rows) per second

  • +0

    답장을 보내 주셔서 감사합니다. 간단한 조건은 AVG, MAX, MIN을 계산할 때>, <, = 등을 검사하는 것입니다. 아직 저장된 proc을 사용하고 있습니다. 다른 복잡한 계산은 SQL Server를 계속 유지합니다. 조건을 추가 할 UI가 있습니다. 동적 바이너리 SQL 문이 많으며 Group by 절이 2 초마다 실행되어야합니다. 서버가 매우 바빠서 CPU가 100 % 사용되는 경우가 있습니다. 우리는 그 당시에 몇몇 상태를 제거합니다. 이제 일부 조건을 수신 된 데이터와 직접 비교하는 응용 프로그램으로 이동하려고합니다. – Manjoor

    관련 문제