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

How to solve increasing memory consumption when fetch rows in sql?

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

但是当我从数据库中读取行时,如图所示,我的 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()

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

这是 SQL 服务器的正常行为。

SQL 服务器将缓存它从磁盘读取的所有行,将其内存使用量增加到配置的 MAX SERVER MEMORY,或者直到操作系统发出可用内存不足的信号。

如果您的计算机上有一个大数据库和许多其他程序 运行 并且想要限制 SQL 服务器的内存,您可以使用 SSMS 来完成,或者购买 运行批次:

EXEC sys.sp_configure N'show advanced options', N'1';
RECONFIGURE;
EXEC sys.sp_configure N'max server memory (MB)', N'4096';
RECONFIGURE;