繁体   English   中英

管理pyodbc内存使用

[英]Manage pyodbc memory usage

我正在使用pyodbc(3.0.7)从SQL Server数据库检索数据。 我的操作系统是Windows 7,Python是2.7.7 64位。 我遇到内存使用问题,我想知道是否有解决方案。

每次运行程序时,sqlservr.exe进程的内存使用量都会不断增加(基于在命令提示符下运行Tasklist的情况)。 这是我的代码。

1.连接数据库

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也不会释放关联的内存。 随着时间的推移,内存使用量不断增加,我被迫重新启动计算机。 我该怎么做才能解决这个问题?

编辑:临时解决方法
我找到了解决该问题的临时解决方法。 我进入Windows服务并停止了SQLSERVER进程以释放内存,然后再次重新启动它。 我想我也可以通过编程方式执行此操作,但是我将把它再留一天。

默认情况下,SQL Server将为缓冲池分配尽可能多的内存。 这对于性能非常有用,它允许从(快速)内存而不是(慢速)磁盘访问数据。 对于开发工作站,当您有其他应用程序争用资源时,这可能会成为问题。

若要解决,请配置 SQL Server应分配的最大内存量 设置的数量取决于安装的内存数量以及正在使用的应用程序的类型/数量。 作为对于安装了8GB的开发人员工作站的非常一般的建议,我将SQL Server的最大大小设置为2048MB。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM