FB2.1 почему и прирос в скорости, что кучу мелких пакетиков, собирает в
один
TCPпакет.
В смысле, что ждет ответа не на каждый пакет размером с MTU, а на одну
большую посылку целиком?
Влад же вроде рассказывал...
Нет, ничего он не ждет, если конечно Nagle algorithm выключен (курить
TcpNoNagle = 1 в firebird.conf)
Просто он не отправляет немедленно комманды, которые срочно отправлять
ненадо.
Например, allocate statement или drop statement. - обе занимают 8 или 12
байт вроде.
(в FB2.0 так и уходят три TCP пакета, по 12 байт в каждом.
Причем после каждого ожидается ответ сервера!)
В FB2.1 такие комманды скапливаются, и уходят серверу пачкой с ближайшей
"неотложной" коммандой.
Например, у тебя закрылись три стеймента. При этом клиент ничего не отправил
серверу FB.
Потом ты стартуешь транзакцию, и вот тут на сервер уходит один TCP пакет,
в котором в начале - три твоих стейтмента на закрытие, а за ними - комманда
на старт тр-ции.
Думаю, Влад меня поправит, если я где приврал.