Registriert seit: 15. Mär 2005
671 Beiträge
FreePascal / Lazarus
|
AW: Geschwindigkeit Firebird über Netzwerk
6. Dez 2023, 20:30
ich kann mich noch dunkel an ein projekt erinnern, bei der wir mit firebird über relativ lahme handy verbindungen arbeiten mussten, dort kannte man wirklich jedes byte beim namen und mit bedeutung, so das wir da, weil immer nur möglichst keine datenpakete gesendet und geholt werden sollten, um den overhead so gering wie möglich zu halten, das mal auf den minimalen Wert eingestellt. Der effekt war nicht so wirklich doll, weil wenn man immer irgendwas mit ca 100 byte liest und schreibt, macht der die pakete eh nicht größer als erforderlich.
Beim fetch für ein resultset (ohne blobs) wird da aber sicherlich schon ein positiver unterschied sein, wenn die pakete groß sind, aber der unterschied zwischen 8k und 32k hält sich da auch in grenzen, ist aber ziemlich sicher auch nicht immer 8k.
ich weiss ganz sicher (unter anderem auch durch benuzung vom tcpip expert, siehe screenshot mit einer fb4 installation, an der ich de fakto keine änderungen an dem parameter gemacht habe), das die paketlänge in tcpip netzwerk immer alle möglichen länge zwischen ein paar bytes und 32k sind, auch wenn man da nix einstellt (das der kram im screenshot nicht lesbar ist liegt an wirecrypt aktiv, was aber ja immer leistung frisst, insbesondere auf langsamen cpus, so das man da in eh geschützten Netzwerken auch ohne schlechtes gewissen abschalten kann). das da sictbare paket kam bei einem execute and fetch all befehl von ibexpert auf eine tabelle mit 100000 records, also weit mehr als in ein paket passen könnte.
Wenn der client daten anfordert und der server 32k an daten oder mehr liefern könnte macht der das auch, egal ob der client die zB in einem dbgrid schon anzeigen will oder kann. dadurch sieht man im tcpipe bei grids manchmal seltsame effekte. Man hat die erste 100 records geholt, sah aber im Datenpaket schon records 1-200. wnen man im grid nu auf record 101 geht holt sich der firebird client von den komponenten veranlasst ein wieteres datenpaket, so das nun zum Beispiel 201-400 kommen, auch wenn der im Grid noch bei 101 ist usw. bei 201 kommt dann manchmal schon 401-600 usw ...
deshalb auf langsamen verbindungen immer mit select first 100 ..... o.ä. arbeiten, weil dann nur das über das netz geht, was in der menge ist. lokaler filter ist dann offensichtlich kompletter mumpitz.
|