【问题标题】:Manage pyodbc memory usage管理 pyodbc 内存使用情况
【发布时间】:2014-07-15 19:06:14
【问题描述】:

我正在使用 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 进程以释放内存并再次重新启动它。我想我也可以以编程方式执行此操作,但我将把它留到另一天。

【问题讨论】:

    标签: python sql-server memory pyodbc


    【解决方案1】:

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

    要解决,configure a maximum amount of memory SQL Server 应该分配。您设置的数量取决于安装的内存量和您使用的应用程序的类型/数量。对于安装了 8GB 的​​开发人员工作站,非常一般建议,我会将 SQL Server 最大值设置为 2048MB。

    【讨论】:

    • 感谢 Beargle 关于预先限制内存使用的好建议。
    猜你喜欢
    • 1970-01-01
    • 2010-12-12
    • 2012-02-01
    • 1970-01-01
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多