/ / Kompresia TCP v SQL Server 2008 [zatvorené] - c #, .net, sql-server-2008, entity-framework-4

Kompresia TCP v SQL Server 2008 [zatvorené] - c #, .net, sql-server-2008, entity-framework-4

Máme aplikáciu .NET 4.0 používajúcu Entity Framework. Aplikácia sa pripája na diaľku cez TCP k serveru SQL Server. Keď ste v sieti LAN, je to rýchle, ale cez internet je prevádzka veľmi vysoká.

Všetko, čo by sme chceli urobiť, je niektoré zapnúť TCP compression ale zdá sa, že SQL Server 2008 túto funkciu neposkytuje.

Aké je najjednoduchšie riešenie na skomprimovanie komunikácie TCP?

odpovede:

6 pre odpoveď č. 1

Snažíte sa problém vyriešiť nesprávneúroveň / vrstva. Vyprofilujte svoju komunikáciu so serverom SQL a začnite uvažovať o optimalizácii. Toto je jediný platný bod, ktorý treba začať. Nesprávne použitie EF môže viesť k strašnej chatrnej a pomalej komunikácii so serverom SQL a to je niečo, čo sa jednoducho nevyrieši žiadnou kompresiou, pretože chatrná sekvenčná komunikácia znamená viac nepotrebných spiatočných letov do databázy, kde každý jeden spiatočný let predĺži dobu spracovania o latencia. Už som videl riešenia (a niektoré z nich som urobil sám), kde nesprávne použitie EF vytvorilo tisíce lenivých načítavacích dotazov v rámci spracovania jednej žiadosti.

A áno, môže to skončiť nahradením časti vášho EF kódu uloženými procedúrami a vlastnými dotazmi a v najhoršom prípade opustením celého EF.

Ak je vaším problémom množstvo prenesených dát, urobte toje opäť čas premýšľať o optimalizácii a znížení množstva prenesených dát na iba potrebnú podmnožinu alebo prípadne o použití nejakého predspracovania na serveri SQL v uloženej procedúre alebo zobrazení. Btw. také premýšľanie by sa malo robiť pri návrhu aplikácie, kde by ste mali myslieť na cieľové prostredie, kde bude aplikácia bežať.

edit:

Ešte jedna poznámka. Nie je veľmi bežné komunikovať s databázou cez WAN. Zvyčajne takáto požiadavka vedie k implementácii ďalšej úrovne s obchodnou logikou, ktorá sedí na serveri v LAN so serverom SQL. Táto vrstva obchodnej logiky vystavuje webové služby klientovi na sieti WAN. Táto architektúra môže znížiť latenciu pri veľkej komunikácii s databázou a zároveň správna architektúra výmeny správ medzi klientom a službou môže viesť k ďalším vylepšeniam.


3 pre odpoveď č. 2

SQL Server používa protokol TDS.

Nezáleží na tom, či na získanie údajov z bodu A do bodu B používate protokol TCP alebo Named Pipes alebo funkciu „force“

Potrebujete povoliť alebo nastaviť nejaký druh kompresia (Google vyhľadávanie):

  • na úrovni OS
  • úroveň rozhrania / hardvéru
  • úrovni siete