Вниз
Скачать: CL | DM;

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

 
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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.033 c
9-1124420133
anton_321
2005-08-19 06:55
2006.01.29
у кого есть скаченный DirectX9 SDK?


15-1136730921
Новичоккк
2006-01-08 17:35
2006.01.29
Перевод с румынского


1-1134938366
ZLOFENIX
2005-12-18 23:39
2006.01.29
Помогите перевести на Delphi


4-1132163722
The One
2005-11-16 20:55
2006.01.29
Использование RegSaveKey


3-1133342549
Slaga
2005-11-30 12:22
2006.01.29
Что "лучше" использовать при выгрузке/загрузке данных из/в DBF




   Наверх