2014-07-15 2 views
1

pyodbc (3.0.7)를 사용하여 SQL Server 데이터베이스에서 데이터를 검색하고 있습니다. 내 OS는 Windows 7이고 Python은 2.7.7 64 비트입니다. 메모리 사용량 문제가 발생하고 있으며 솔루션이 있는지 궁금합니다.

내 프로그램을 실행할 때마다 sqlservr.exe 프로세스의 메모리 사용량이 계속 증가합니다 (명령 프롬프트에서 Tasklist 실행에 따라). 여기 내 코드가있다. 여기에 관련하지 코드 -pyodbc 메모리 사용 관리

import pyodbc 
cnxnstring ="DRIVER={SQL Server};Server=servername;Database=dbname; \ 
         User Id=uid; Password=pwd;" 
cnxn = pyodbc.connect(cnxnstring) 
dbcursor = cnxn.cursor() 

2.

strsql = 'SELECT CELLID,MEAN FROM TABLE_1' 
dbcursor.execute(strsql) 
dict1= {} 
for line in dbcursor: dict1.update({line.CELLID:line.MEAN}) 

3. 사전에 무언가를 사전에 데이터베이스 저장소에서 데이터를 검색 데이터베이스에

1. 연결

4. 하우스 키핑

dbcursor.close() 
cnxn.close() 

내가 SQL Server 데이터베이스에 대한 연결을 종료하더라도 Windows는 관련 메모리를 해제하지 않습니다. 시간이 지남에 따라 메모리 사용량이 계속 증가하고 컴퓨터를 다시 시작해야합니다. 이 문제를 해결하기 위해 무엇을 할 수 있습니까?

편집 : 임시 해결 방법
나는 내 문제에 대한 임시 해결 방법을 발견했다. 나는 Windows Services에 들어가서 SQLSERVER 프로세스를 중지하여 메모리를 해제하고 다시 시작했습니다. 나는 프로그래밍 방식으로도이 작업을 수행 할 수 있다고 생각하지만 다른 일로 남겨 둘 것입니다.

답변

1

기본적으로 SQL Server는 버퍼 풀만큼 메모리를 할당합니다. 이것은 성능면에서 뛰어나므로 (느린) 디스크 대신 (빠른) 메모리에서 데이터에 액세스 할 수 있습니다. 개발 워크 스테이션의 경우 다른 응용 프로그램이 자원을 놓고 경쟁 할 때 문제가 될 수 있습니다.

해결하려면 configure a maximum amount of memory SQL Server가 할당해야합니다. 설정하는 양은 설치된 메모리의 양과 사용중인 응용 프로그램의 유형/수에 따라 다릅니다. 매우 8GB가 설치된 개발자 워크 스테이션에 대한 일반적인 권장 사항으로 SQL Server를 최대 2048MB로 설정합니다.

+0

메모리 사용을 사전에 제한하는 것에 대한 좋은 제안은 Beargle에게 감사드립니다. – Prashanth