J'étudie pour une certificateion MS et l'un des tests pratiques que je fais a une question où le sharepoint contention est la performance entre stocker la session dans SQL Server par opposition à StateServer.
Étant donné que l'application est en cours d'exécution dans une ferme Web, quelle solution pour l'état de session donne les meilleures performances (SQL Server ou StateServer) et, surtout, pourquoi?
State Server est plus rapide car il stocke datatables de session dans un dictionary en memory. SQL Server est plus lent car il est stocké dans une database qui conserve datatables sur le disque.
Le server SQL est également plus lent car tout est stocké dans une table, ce qui entraîne des conflits, car de plus en plus de clients accèdent / mettent à jour datatables de session.
Le server SQL est plus fiable car il est conservé sur disque et peut être configuré en tant que cluster avec capacité de basculement.
Voir le préambule dans cet article pour une explication approfondie.
Un petit, mais important sidenote: InProc n'est pas utilisable dans une ferme, comme son nom l'indique, il fonctionne dans le process w3wp actuel et ne peut pas être partagé à travers une ferme. StateServer est un service Windows, de sorte que la vitesse d'utilisation de StateServer dépend de la vitesse d'exécution de la machine sur laquelle le service stateserver s'exécute. Il s'agit uniquement de memory. SQL doit bien sûr écrire datatables et les récupérer, ce qui est probablement plus lent que la memory.
D' ici :
De ce lien: http://www.eggheadcafe.com/articles/20021016.asp
Performance
InProc – Plus rapide, mais plus il y a de données de session, plus la memory est consommée sur le server Web, ce qui peut affecter les performances.
StateServer – Lorsque vous stockez des données de types de base (par exemple, string, entier, etc.), dans un environnement de test, il est 15% plus lent que InProc. Cependant, le coût de la serialization / déserialization peut affecter les performances si vous stockez beaucoup d'objects. Vous devez effectuer des tests de performance pour votre propre scénario.
SQLServer – Lorsque vous stockez des données de types basiques (par exemple, string, entier, etc.), dans un environnement de test, il est 25% plus lent que InProc. Même avertissement concernant la serialization que dans StateServer.
Donc, il semblerait que StateServer est un peu plus rapide que SQL Server pour stocker l'état de la session.
Pour ce qui est du pourquoi, je dirais que le SQL Server est plus polyvalent et sera probablement utilisé pour d'autres choses aussi. Non seulement cela, mais le mécanisme de stockage est sur le disque, où StateServer s'exécute dans un process séparé, mais il stocke simplement datatables dans l'espace memory de l'autre process plutôt que d'écrire sur le disque (la memory virtuelle le permet)
SQL Server (en memory) est la réponse – disponible dans SQL 2014