如何解决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;
我使用 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;