猿问

如何解决在sql中获取行时内存消耗增加?

我使用 pyodbc 插入或读取 SQL Server 数据库,当我将数据插入数据库时,我的电脑上有 32 GB 内存。使用的朗姆酒数量如下。 

但是当我从 db 中读取行时,如图所示,我的 ram 使用率非常高:


代码:


import pyodbc

conn = pyodbc.connect('''

                      TRUSTED_CONNECTION=Yes;

                      DRIVER={SQL Server};

                      SERVER={myServer};

                      DATABASE=myDB;''')

id=[1,345,34,78,45,768]

cursor = conn.cursor()


for numberid in id:

       sqlquery ="SELECT TOP 100 * FROM table.db WHERE COLUMN.2 = %s "   %(numberid ) 

       cursor.execute(sqlquery )

       answer=cursor.fetchall()

       print(answer)

          

    cursor.close()

    conn.close()

http://img4.mukewang.com/63ff0f150001e21708280240.jpg

我使用 cursor.close() ,conn.close() 但是,即使关闭应用程序,使用的 RAM 量也没有减少,而且每天使用的 RAM 量略有增加。如果我的电脑重新启动,RAM 使用量将被清除。我该如何解决这个问题?pyodbc 版本:4.0.30



Cats萌萌
浏览 109回答 1
1回答

智慧大石

这是 SQL Server 的正常行为。SQL Server 将缓存它从磁盘读取的所有行,将其内存使用量增加到配置的MAX SERVER MEMORY,或者直到操作系统发出可用内存不足的信号。如果您有一个大型数据库和许多其他在计算机上运行的程序并且想要限制 SQL Server 的内存,您可以使用 SSMS 来完成,或者购买运行批处理,例如:EXEC sys.sp_configure N'show advanced options', N'1';RECONFIGURE;EXEC sys.sp_configure N'max server memory (MB)', N'4096';RECONFIGURE;
随时随地看视频慕课网APP

相关分类

Python
我要回答