2009-05-07 5 views
6

현재 우리는 MS SQL Server 2005 (32 비트)가 있습니다. 우리는 암호화와 암호 해독에 사용하는 어셈블리가 1 개 (그리고 어셈블리가 1 개) 밖에 없습니다. 512MB의 시스템 메모리 만 CLR에 할당됩니다. 어셈블리가 꽤 느리게 실행되며, 메모리에서 발생했는지 여부를 배제하려고합니다. 쿼리 분석기 (어셈블리가 아닌)에서 SQL 코드를 실행하면 빠르게 실행됩니다. 암호화/암호 해독을 위해 대칭 키와 인증서를 사용하고 있습니다.SQL Server CLR 메모리 할당

CLR에 할당 할만한 메모리가 있습니까? 메모리 할당 부족으로이 어셈블리의 성능이 저하되고 있는지 어떻게 알 수 있습니까?

+0

당신은 "나는 (안 어셈블리에) 쿼리 분석기에서 SQL 코드를 실행하면 빠르게 실행됩니다."무엇을 의미합니까? 많은 병목 현상을 특정 병목 현상까지 추적 할 수 있습니다. 느린 것을 관찰하는 동안 CPU가 고정되어 있습니까? DB 외부에서 자체적으로 수행하는 CLR 메서드가 DB와 다른 규모로 수행합니까? – ahains

+0

어셈블리 자체 (해당 SP) 대신에 쿼리 창에서 어셈블리에 포함 된 코드를 실행합니다. 어셈블리에서 인증서/키 암호를 다른 개발자가 숨길 수 있습니다. 보스 맨에게 CPU에 무슨 일이 일어나는지 확인해 보겠습니다. –

답변

7

512MB가 할당되었다고 어떻게 결정하셨습니까?

SQL Server memToLeave에서 작성한 기사를 살펴보십시오. CLR 관리 코드를 실행하는 데 사용되는 메모리 부분은 SQL Server Process 공간 외부에 있어야합니다.

어떻게 지내시거나 더 이상의 질문이 있으시면 알려주십시오.

SQL Server Memory Configuration, Determining MemToLeave Settings

+0

안녕하세요, 사장님, 어셈블리 호출시 오류가 발생하여 memToLeave에 512를 지정하셨습니다. 나는 모든 메모리가 그 이전에 SQL Server에 할당되었다고 생각한다. 링크를 가져 주셔서 감사합니다. 추가로 어셈블리를 최적화하고 CPU 사용을 모니터하려고 노력할 것입니다. –

+1

당신을 진심으로 환영합니다. 추가 도움이 필요하면 언제든지 저에게 전화를 끊으십시오. –