2014-07-15 2 views
1

Я использую pyodbc (3.0.7) для извлечения данных из базы данных SQL Server. Моя ОС - это Windows 7, а python - 2,7,7 бит. Я сталкиваюсь с проблемами использования памяти, и мне было интересно, есть ли какие-либо решения.

Каждый раз, когда я запускаю свою программу, использование памяти процесса sqlservr.exe увеличивается (на основе запуска Tasklist в командной строке). Вот мой код.Управление использованием памяти pyobbc

1.Connect в базу данных

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. Сделайте что-нибудь с словарем - код не соответствующий здесь

4. Уборка

dbcursor.close() 
cnxn.close() 

Даже если я закрываю соединение с базой данных SQL Server, Windows не освобождает связанную с ним память. Использование памяти постоянно растет, и я вынужден перезагрузить компьютер. Что я могу сделать для решения этой проблемы?

Edit: Временный Обход
Я нашел временный обходной путь для моей проблемы. Я зашел в службы Windows и остановил процесс SQLSERVER, чтобы освободить память и снова перезапустить ее. Наверное, я мог бы сделать это программно, но я оставлю это на другой день.

ответ

1

По умолчанию SQL Server выделяет столько памяти, сколько может для пула буферов. Это отлично подходит для производительности, позволяя получать данные из (быстрой) памяти вместо (медленного) диска. Для рабочих станций разработки это может стать проблемой, если у вас есть другие приложения, конкурирующие за ресурсы.

Чтобы решить, configure a maximum amount of memory, который должен выделить SQL Server. Установленная вами сумма зависит от объема установленной памяти и типа/количества используемых вами приложений. Как очень общая рекомендация для рабочей станции разработчика с установленной 8 ГБ, я бы установил максимальный размер SQL Server до 2048 МБ.

+0

Thanks Beargle за хорошее предложение об ограничении использования памяти заранее. – Prashanth

Смежные вопросы