Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.01.29;
Скачать: [xml.tar.bz2];

Вниз

транзакции   Найти похожие ветки 

 
P.V.   (2005-12-01 01:04) [0]

привет

в результате многочисленных запров ( INSERT...... )
MSSQL сервер начинает потреблять много памяти

я использую компоненты DBxpress   sqlconnect ,sqlquery
знаю чтоб етого не происходило надо использовать транзакции
но вот тока применить их самостоятельно чтото не выходит
никакой разници что странзакциями что без них я не заметил
может я их не так юзаю ??

var
TD: TTransactionDesc;
n1,n2:integer;
begin
connectsql;
for n1:=1 to 100 do
 begin
  TD.TransactionID := 1;
  TD.IsolationLevel := xilREADCOMMITTED;
  Connect.StartTransaction(TD);

     for n2:=1 to 10000 do
      begin
       insertitemtbl(n1);//  INSERT тут
       form1. edit1.Text:="n1 :"+inttostr(n1)+"    n : "+inttostr(n2);
       form1.edit1.Refresh;
      end;
  Connect.Commit(TD);
 end;


p.s.  этот код написан для изучения транзакций и не более того


 
ANB ©   (2005-12-01 09:28) [1]

При больших транзакциях сервер еще больше памяти нажрет. Это, кстати, не есть большая проблема. Если нужно - можно в настройках подрезать ему лимит. Намного тяжелее заставить его нажрать памяти побыстрее. Однажды нажранную память сервер уже не отдает до перезапуска. Он потом сам ее распределяет для своих нужд, что намного быстрее, чем если бы он постоянно отдавал ее ОС и просил заново.


 
MOA ©   (2005-12-01 10:00) [2]

Действительно, скуль нажирает столько памяти, сколько может:
BOL:
When running on Microsoft® Windows NT® or Windows® 2000, the default  memory management behavior of the SQL Server database engine is not to acquire a specific amount of memory, but to acquire as much memory as it can without generating excess paging I/O. The database engine does this by acquiring as much memory as is available, while leaving enough memory free to prevent the operating system from swapping memory.
Однако, скорее всего не совсем верно, что
>Однажды нажранную память сервер уже не отдает до перезапуска.
BOL:
...
As other applications are started on a computer running an instance of SQL Server, they consume memory and the amount of free physical memory drops below the SQL Server target. The instance of SQL Server then frees enough memory from its address space to raise the amount of free memory back to the SQL Server target. If another application is stopped and more memory becomes available, the instance of SQL Server increases the size of its memory allocation. SQL Server can free and acquire several megabytes of memory each second, allowing it to quickly adjust to memory allocation changes.
...
Т.е., если другому приложению не хватит памяти - скуль её отдаст. И заберёт обратно, когда она освободится.


 
ANB ©   (2005-12-01 10:15) [3]


> Т.е., если другому приложению не хватит памяти - скуль её
> отдаст. И заберёт обратно, когда она освободится.

Если другому приложению не хватит памяти, то, по идее, это проблемы операционки - выгрузить часть скуля в своп. А общего адресного пространства все равно до хрена. Кстати, не смотря на BOLБ скуль память даже операционке не отдает. Мне крутые админы из РНИВЦ советовали чуть подрезать аппетиты скуля, чтобы операционке хватало. Иначе они начинают друг друга дергать в своп.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2006.01.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.041 c
3-1132752186
NetName
2005-11-23 16:23
2006.01.29
обновление таблицы ADO


3-1133430299
atruhin
2005-12-01 12:44
2006.01.29
Помогите оптимизировать запрос. Firebird


2-1136824870
ZeFiR
2006-01-09 19:41
2006.01.29
Как узнать, запустилась ли программа впервые?


4-1132168150
lockheed_man
2005-11-16 22:09
2006.01.29
Размер буфера в sendTo, recvfrom.


2-1137162590
tech
2006-01-13 17:29
2006.01.29
Модератору





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский