Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Очистка памяти после запроса  [new]
piligrimsa
Member

Откуда: Курск
Сообщений: 12
Добрый день
Вопрос в следующем. Есть база на 70 ГБ, в которой хранятся бинарные последовательности(файлы - изображения в формате jpg) в количестве 121 тысячи.
Необходимо эти бинарные поля превратить в файлы на жёстком диске с некоторой обработкой(изменение размера обрезка) если выбирать все записи в таблицу что бы с нею потом работать, то это отжирает порядка 40гб(может и больше) оперативы + обработка данных, что является неэффективным и долгим(только выборка в таблицу занимает порядка 35минут-индексы нужные вроде есть- делал через помощник по настройке ядра субд). Поэтому было принято решение создать список информации из 121000 записей(атрибутика) но не включать туда бинарные данные. Эта таблица формируется за 3 секунды, потом в цикле из основной БД для кажлого id выбирается только 1запись с бинарной последовательностью, обрабатывается(обрезается и сохраняется изображение) и в дальнейшем эта запись уже не нужна. И вот главный вопрос, судя по всему эта запись с бинарной последовательностью висит где то в оперативной(или ещё где) потому как по мере работе цикла с извлечением таких записей процесс sqlserv.exe начинает отжирать память, вплоть до безобразия. Я подозревают что там куча не нужной инфы держится в памяти но как ее очистить информации не нашёл. Подскадите как лучше поступить с такой задачей и как почистить память от мусора. Все процедуры хранимые и на серваке 24гб оператмвы физической.
31 июл 13, 11:57    [14641946]     Ответить | Цитировать Сообщить модератору
 Re: Очистка памяти после запроса  [new]
Glory
Member

Откуда:
Сообщений: 104751
piligrimsa
Я подозревают что там куча не нужной инфы держится в памяти

Это называется кэширование. А не ненужная информация
piligrimsa
но как ее очистить информации не нашёл.

Сервер сам об этом позаботится
31 июл 13, 11:59    [14641963]     Ответить | Цитировать Сообщить модератору
 Re: Очистка памяти после запроса  [new]
Гость333
Member

Откуда:
Сообщений: 3683
piligrimsa
это отжирает порядка 40гб(может и больше) оперативы
...
на серваке 24гб оператмвы физической.

Как можно занять 40 Гб ОЗУ, если его всего 24 Гб?
31 июл 13, 12:11    [14642065]     Ответить | Цитировать Сообщить модератору
 Re: Очистка памяти после запроса  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1840
Гость333
piligrimsa
это отжирает порядка 40гб(может и больше) оперативы
...
на серваке 24гб оператмвы физической.

Как можно занять 40 Гб ОЗУ, если его всего 24 Гб?


Видимо еще и файл подкачки скушал.
31 июл 13, 12:48    [14642278]     Ответить | Цитировать Сообщить модератору
 Re: Очистка памяти после запроса  [new]
piligrimsa
Member

Откуда: Курск
Сообщений: 12
X-Cite
Гость333
пропущено...

Как можно занять 40 Гб ОЗУ, если его всего 24 Гб?


Видимо еще и файл подкачки скушал.


Ну конечно со свапом, у меня там где база лежит и куда сохраняется, диски из ССД в стрипрейд(не помню цифру) сделаны.
31 июл 13, 13:01    [14642358]     Ответить | Цитировать Сообщить модератору
 Re: Очистка памяти после запроса  [new]
piligrimsa
Member

Откуда: Курск
Сообщений: 12
Glory
piligrimsa
Я подозревают что там куча не нужной инфы держится в памяти

Это называется кэширование. А не ненужная информация


Я понимаю что это кеширование, но как я написал если я данные эти(запись) использовал и больше не планирую использовать то для меня эти данные не нужные( именно запись) кеш планов и запросов я сюда не отношу. А вот кеш данных использованных записей мне ни к чему. Именно его я и пытаюсь очистить, ну или что там забивает оперативу.

Glory
piligrimsa
но как ее очистить информации не нашёл.

Сервер сам об этом позаботится


К сожалению он не заботится, поставил ограничение sql setver на макс память 12гб, в итоге он ее отхапал и нишагу назад, хотя изображения весят порядка 10 МБ, налицо тот факт что он не хочет сам скидывать(чистить) кеш подразумевая что он может ещё понадобиться. Вот я и пытаюсь понять как его убедить что эти данные в кеше мне не нужны что бы он их убрал, или убрать их самому принудительно.
31 июл 13, 13:11    [14642438]     Ответить | Цитировать Сообщить модератору
 Re: Очистка памяти после запроса  [new]
Glory
Member

Откуда:
Сообщений: 104751
piligrimsa
К сожалению он не заботится, поставил ограничение sql setver на макс память 12гб, в итоге он ее отхапал и нишагу назад

А что он должен был сделать по-вашему ?

piligrimsa
налицо тот факт что он не хочет сам скидывать(чистить) кеш подразумевая

Кэш вымывется по алгоритму,а не по вашему желанию

piligrimsa
Вот я и пытаюсь понять как его убедить что эти данные в кеше мне не нужны что бы он их убрал, или убрать их самому принудительно.

Разрешенную ему память сервер использует сам. Вы можете менять размер разрешенной памяти
31 июл 13, 13:15    [14642479]     Ответить | Цитировать Сообщить модератору
 Re: Очистка памяти после запроса  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
piligrimsa
Вот я и пытаюсь понять как его убедить что эти данные в кеше мне не нужны что бы он их убрал, или убрать их самому принудительно.
Так он их точно так же будет использовать, как если бы память была отдана виндам, для него эта память такая же свободная, как память, которая пока не принадлежит сиквелу (она же не грязная, её не надо сбрасывать на диск).

Вы просто заставили бы выполнить лишние операции выделения/освобождения памяти у ОС, только и всего.
31 июл 13, 14:11    [14642965]     Ответить | Цитировать Сообщить модератору
 Re: Очистка памяти после запроса  [new]
piligrimsa
Member

Откуда: Курск
Сообщений: 12
alexeyvg
piligrimsa
Вот я и пытаюсь понять как его убедить что эти данные в кеше мне не нужны что бы он их убрал, или убрать их самому принудительно.
Так он их точно так же будет использовать, как если бы память была отдана виндам, для него эта память такая же свободная, как память, которая пока не принадлежит сиквелу (она же не грязная, её не надо сбрасывать на диск).

Вы просто заставили бы выполнить лишние операции выделения/освобождения памяти у ОС, только и всего.


Я распараллеливаю процесс получения записи и сохранения изображения, при достижению sqlserverом, максимума позволенной ему памяти в 12гб, производительность резко падает. В виду того что теперь при загрузке записи и нехватке памяти сервер пытается проанализировать все объекты в кеше на предмет их старости, количеству обращений и тд и ТП, только после чего он найденную и признанную ненужной запись удаляет, и на ее место загружается новая запись, в итоге данная операция по поиску выполняется очень часто.
Я же хочу чтобы по достижении максимума оперативы очистить весь кеш, освободив память в несколько ГБ, после чего sqlserver может работать спокойно не заботясь о поиске места в памяти и не тратя драгоценные секунды. Вот чего я хочу. Неужели такого нет, даже в .net есть принудительный сбор мусора gc.collect(по крайней мере попытаться собрать в ближайшее время).
31 июл 13, 16:32    [14644045]     Ответить | Цитировать Сообщить модератору
 Re: Очистка памяти после запроса  [new]
Glory
Member

Откуда:
Сообщений: 104751
piligrimsa
Я же хочу чтобы по достижении максимума оперативы очистить весь кеш, освободив память в несколько ГБ, после чего sqlserver может работать спокойно не заботясь о поиске места в памяти и не тратя драгоценные секунды. Вот чего я хочу.

Вы думаете, что ваши потери производительности из-за того, что сервер проверяет наличие данных в кэше ?
Так он всегда так делает. Даже при пустом кэше.

piligrimsa
Неужели такого нет, даже в .net есть принудительный сбор мусора gc.collect(по крайней мере попытаться собрать в ближайшее время).

В кэше нет мусора. Там ваши данные.
31 июл 13, 16:37    [14644081]     Ответить | Цитировать Сообщить модератору
 Re: Очистка памяти после запроса  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
piligrimsa
Неужели такого нет, даже в .net есть принудительный сбор мусора gc.collect(по крайней мере попытаться собрать в ближайшее время).
Как можно сравнивать эффективное управление кешем сиквела и медленную сборку мусора в .NET???
Там принципиально разные механизмы, нету в сиквеле никаких особых потерь на поиск кандидата на замену в кеше.
31 июл 13, 17:10    [14644336]     Ответить | Цитировать Сообщить модератору
 Re: Очистка памяти после запроса  [new]
вася из снегова
Guest
piligrimsa читайте лучше мат часть и учитесь правильно проектировать системы.
31 июл 13, 17:13    [14644344]     Ответить | Цитировать Сообщить модератору
 Re: Очистка памяти после запроса  [new]
Sergey Sizov
Member

Откуда:
Сообщений: 1579
piligrimsa
Glory
пропущено...

Это называется кэширование. А не ненужная информация


Я понимаю что это кеширование, но как я написал если я данные эти(запись) использовал и больше не планирую использовать то для меня эти данные не нужные( именно запись) кеш планов и запросов я сюда не отношу. А вот кеш данных использованных записей мне ни к чему. Именно его я и пытаюсь очистить, ну или что там забивает оперативу.
И Вы сообщили об этом серверу? Или надеетесь, что он сам об этом догадается? По каким признакам?
Кстати, Вы не забыли, что работаете в многопользовательской среде и ненужность этих данных Вам не означает ненужности этих же данных другим процессам.
31 июл 13, 17:46    [14644501]     Ответить | Цитировать Сообщить модератору
 Re: Очистка памяти после запроса  [new]
Finsman
Member

Откуда: Da UK.
Сообщений: 404
CHECKPOINT; 
GO 
DBCC DROPCLEANBUFFERS; 
GO

Пробовали?
31 июл 13, 18:23    [14644691]     Ответить | Цитировать Сообщить модератору
 Re: Очистка памяти после запроса  [new]
piligrimsa
Member

Откуда: Курск
Сообщений: 12
Finsman
CHECKPOINT; 
GO 
DBCC DROPCLEANBUFFERS; 
GO

Пробовали?


Да пробовал, требуемого для себя результата не получил.
31 июл 13, 18:36    [14644768]     Ответить | Цитировать Сообщить модератору
 Re: Очистка памяти после запроса  [new]
piligrimsa
Member

Откуда: Курск
Сообщений: 12
Glory
piligrimsa
Неужели такого нет, даже в .net есть принудительный сбор мусора gc.collect(по крайней мере попытаться собрать в ближайшее время).

В кэше нет мусора. Там ваши данные.


Данные не нужные мне считаю мусором как и писал раньше, об этом же хочу сообщить sqlserver у.
31 июл 13, 18:38    [14644782]     Ответить | Цитировать Сообщить модератору
 Re: Очистка памяти после запроса  [new]
piligrimsa
Member

Откуда: Курск
Сообщений: 12
alexeyvg
piligrimsa
Неужели такого нет, даже в .net есть принудительный сбор мусора gc.collect(по крайней мере попытаться собрать в ближайшее время).
Как можно сравнивать эффективное управление кешем сиквела и медленную сборку мусора в .NET???
Там принципиально разные механизмы, нету в сиквеле никаких особых потерь на поиск кандидата на замену в кеше.


Я не сравниваю а указывают на потенциальную возможность для запуска процедуры оптимизации памяти.
31 июл 13, 18:41    [14644795]     Ответить | Цитировать Сообщить модератору
 Re: Очистка памяти после запроса  [new]
piligrimsa
Member

Откуда: Курск
Сообщений: 12
Sergey Sizov
piligrimsa
пропущено...


Я понимаю что это кеширование, но как я написал если я данные эти(запись) использовал и больше не планирую использовать то для меня эти данные не нужные( именно запись) кеш планов и запросов я сюда не отношу. А вот кеш данных использованных записей мне ни к чему. Именно его я и пытаюсь очистить, ну или что там забивает оперативу.
И Вы сообщили об этом серверу? Или надеетесь, что он сам об этом догадается? По каким признакам?
Кстати, Вы не забыли, что работаете в многопользовательской среде и ненужность этих данных Вам не означает ненужности этих же данных другим процессам.



Потенциально я единственный пользователь этой базы, скажу больше после ее чтения и обработки она подлежит удалению. Ваша фраза натолкнулась на мысль об восстановлении и работе с базой в монопольной режиме, данные используются только на чтение из базы, возможно это позволит повысить скорость считывания.
З.Ы. извините за количество постов, пишу с телефона. Не удобно цитаты копировать.
31 июл 13, 18:45    [14644819]     Ответить | Цитировать Сообщить модератору
 Re: Очистка памяти после запроса  [new]
piligrimsa
Member

Откуда: Курск
Сообщений: 12
вася из снегова
piligrimsa читайте лучше мат часть и учитесь правильно проектировать системы.


Именно что бы изучить глубже и разобрать все моменты я сюда и обратился. За помощью и опытом.
31 июл 13, 18:48    [14644830]     Ответить | Цитировать Сообщить модератору
 Re: Очистка памяти после запроса  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
piligrimsa
Я распараллеливаю процесс получения записи и сохранения изображения, при достижению sqlserverом, максимума позволенной ему памяти в 12гб, производительность резко падает. В виду того что теперь при загрузке записи и нехватке памяти сервер пытается проанализировать все объекты в кеше на предмет их старости, количеству обращений и тд и ТП


почему вы так уверены, что причина падения производительности именно в этом? вы измеряли длительность выполнения отдельных операций в ваших процедурах до и после падения производительности?
31 июл 13, 18:51    [14644844]     Ответить | Цитировать Сообщить модератору
 Re: Очистка памяти после запроса  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
piligrimsa
Glory
пропущено...

В кэше нет мусора. Там ваши данные.


Данные не нужные мне считаю мусором как и писал раньше, об этом же хочу сообщить sqlserver у.


100%! это произвол!
мы не позволим sql server-у навязывать нам свою политику
31 июл 13, 18:57    [14644870]     Ответить | Цитировать Сообщить модератору
 Re: Очистка памяти после запроса  [new]
Glory
Member

Откуда:
Сообщений: 104751
piligrimsa
Glory
пропущено...

В кэше нет мусора. Там ваши данные.


Данные не нужные мне считаю мусором как и писал раньше, об этом же хочу сообщить sqlserver у.

так удалите их из базы - сразу все залетает
От отсутствия данных в кеше производтельность точно не повысится
31 июл 13, 19:10    [14644930]     Ответить | Цитировать Сообщить модератору
 Re: Очистка памяти после запроса  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
piligrimsa
alexeyvg
пропущено...
Так он их точно так же будет использовать, как если бы память была отдана виндам, для него эта память такая же свободная, как память, которая пока не принадлежит сиквелу (она же не грязная, её не надо сбрасывать на диск).

Вы просто заставили бы выполнить лишние операции выделения/освобождения памяти у ОС, только и всего.


Я распараллеливаю процесс получения записи и сохранения изображения, при достижению sqlserverом, максимума позволенной ему памяти в 12гб, производительность резко падает. В виду того что теперь при загрузке записи и нехватке памяти сервер пытается проанализировать все объекты в кеше на предмет их старости, количеству обращений и тд и ТП, только после чего он найденную и признанную ненужной запись удаляет, и на ее место загружается новая запись, в итоге данная операция по поиску выполняется очень часто.
Ну и напридумывали вы себе сказок...
1 авг 13, 22:08    [14650861]     Ответить | Цитировать Сообщить модератору
 Re: Очистка памяти после запроса  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
piligrimsa
Finsman
CHECKPOINT; 
GO 
DBCC DROPCLEANBUFFERS; 
GO

Пробовали?


Да пробовал, требуемого для себя результата не получил.
А какой требуемый результат то?
Чтобы сервер память отдал системе? Ну и зачем ему это делать?
Или чтобы работало быстрее? Так если проблема не в памяти, а в чем то другом, то с чего бы оно быстрее заработало?
1 авг 13, 22:12    [14650866]     Ответить | Цитировать Сообщить модератору
 Re: Очистка памяти после запроса  [new]
piligrimsa
Member

Откуда: Курск
Сообщений: 12
Mind
А какой требуемый результат то?
Чтобы сервер память отдал системе? Ну и зачем ему это делать?
Или чтобы работало быстрее? Так если проблема не в памяти, а в чем то другом, то с чего бы оно быстрее заработало?


Верно что бы отдал память системе, сохранение изображения первый этап обработки затем для каждого запускается обработка уже в своём написанном коде которому в свою очередь не хватает оперативы. Вот для этих процессов мне и нужно отдать память.
1 авг 13, 22:21    [14650881]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить