Как решить проблему увеличения потребления памяти при выборке строк в sql? - PullRequest
1 голос
/ 11 июля 2020

Я использую pyodb c для вставки или чтения из SQL серверной БД, и у меня 32 ГБ оперативной памяти на моем p c, когда я вставляю данные в свою БД. Количество используемого рома следующее. ram usage when insert information

But when I read rows from db as shown as my ram is very high usage :

Code:

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() Однако объем используемой оперативной памяти не уменьшается даже после закрытия приложения, а объем оперативной памяти, используемой каждый день, немного увеличивается. Если мой P C перезапустится, объем используемой ОЗУ станет ясным. Как мне решить эту проблему? pyodb c версия: 4.0.30

1 Ответ

2 голосов
/ 11 июля 2020

Это нормальное поведение для SQL сервера.

SQL Сервер будет кэшировать все строки, которые он читает с диска, увеличивая использование памяти до сконфигурированного МАКСИМАЛЬНАЯ ПАМЯТЬ СЕРВЕРА или до тех пор, пока операционная система не сообщит о нехватке доступной памяти.

Если у вас большая база данных и множество других программ, запущенных на компьютере, и вы хотите ограничить 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;
...