Форум: "Базы";
Текущий архив: 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.04 c