parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ещё один вопрос - про производительность

Дмитрий 25.03.2011 02:50

Сделал небольшое тестирование
^oSql.server{
	^rusage[autocommit=0/1 wrap=0/1 bef]
	^for[i](1;300){
		^oSql.void{INSERT objects SET object_title = '1'}
	}
	^oSql.void{TRUNCATE objects}
	^rusage[autocommit=0/1 wrap=0/1 aft]
}
получилось что-то в таком духе на локальном сервере
autocommit=1 wrap=1 bef 0.1875 0.015625
autocommit=1 wrap=1 aft 0.359375 0.203125 - 0.17 ms

autocommit=1 wrap=0 bef 0.171875 0.03125
autocommit=1 wrap=0 aft 0.453125 0.234375 - 0.28 ms

autocommit=0 wrap=1 bef 0.203125 0.03125
autocommit=0 wrap=1 aft 0.296875 0.203125 - 0.09 ms

autocommit=0 wrap=0 bef 0.203125 0.03125
autocommit=0 wrap=0 aft 0.4375 0.28125 - 0.23 ms
Получается, что общая обёртка ^oSql.server{} выгоднее в плане производительности. И если autocommit=1, то её надо делать, и делать как можно раньше, в корневом @main[] например.

А вот если autocommit=0 и ^oSql.server{} в @main[], то получится, что все запросы к базе идут внутри одной транзакции. Я чувствую, что где-то подвох, и что это не очень хорошо, но не могу понять где. Так ли это? Или это совершенно нормально - все запросы к базе в рамках одного http запроса проводить как одну транзакцию?

Спасибо