le server sql est plus efficace qu'une database locale

Je faisais une application de database en vs avec c #. Au départ, j'utilisais une database créée avec sql server.My app.config est

<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> </configSections> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> <connectionSsortingngs> <add name="ConSsortingng" connectionSsortingng="Data Source=ARAVIND-HP\SQLEXPRESS;Initial Catalog=businessdata;Integrated Security=True" providerName="System.Data.sqlClient" /> </connectionSsortingngs> </configuration> 

Après cela, j'ai utilisé une database locale à la place. J'ai copié la database sur la solution du projet. Visual Studio a automatiquement configuré le file app.config. Le nouveau file app.config est

 <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> </configSections> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> <connectionSsortingngs> <add name="Small_Business_Management.Properties.Settings.businessdataConnectionSsortingng1" connectionSsortingng="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\businessdata.mdf;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionSsortingngs> </configuration> 

Maintenant, quand j'utilise cette database locale, j'ai remarqué qu'il faut 1 à 2 secondes (parfois même plus) pour exécuter les opérations que lorsque j'ai utilisé une database SQL Server. Pourquoi cette différence de performance?

Vous mélangez deux choses ici car SQL Server est un composant logiciel qui peut aussi fonctionner sur un ordinateur local.

Le point est, que votre ordinateur local SUCKS plus probable par rapport à un server de database "réel". La plupart des gens n'ont pas de stations de travail avec des tonnes de memory et d'E / S (bien que le côté E / S change avec le SSD). SO, la question n'est pas "local vs non local" mais "Workstation vs Server", et oui, un server peut être beaucoup plus puissant qu'un petit post de travail local, selon la façon dont il est techniquement mis en place. J'ai vu des servers de bases de données avec plus de 100 cœurs, des téraoctets de cache SSD et plus de cent disques pour gérer les exigences IO.

Du côté négatif, évidemment, un server doit vous envoyer datatables. Même avec 1 Gigabit qui est plus lent qu'un transfert en memory d'un SQL Server installé localement. Mais cela SEULEMENT est pertinent quand (a) vous générez BEAUCOUP de données et (b) vous ne faites pas de traitement lourd sur cela – ce qui en fait un cas plus académique.

Maintenant, dans votre cas, c'est encore mieux. Vous n'avez même pas une installation SQL Server locale (ou: ne l'utilisez pas), mais plutôt LocalDB – ce n'est clairement pas un système "niveau server". Localdb est un "express amélioré" ( http://blogs.msdn.com/b/sqlexpress/archive/2011/07/12/introducing-localdb-a-better-sql-express.aspx ) et exprime entre autres choses limité dans l'utilisation des ressources (memory, CPU). Votre server est probablement un vrai server, donc il utilisera beaucoup plus de ressources que Express peut même espérer avoir, ce qui est limité à:

  • Limité à less de 1 Socket ou 4 cœurs
  • 1 Go

C'est plutôt pathétique par rapport aux normes d'aujourd'hui. Maintenant, dans les mêmes termes – c'est beaucoup pour les bases de données plus petites, et BEAUCOUP si les bases de données sont petites. Mais quand vous frappez des trucs plus gros – et ensuite mettez un petit db dessus – les choses vont voler.

Donc ça dépend. Oui, un server peut être beaucoup plus puissant qu'un ordinateur local.

J'espère que les circonstances suffiront à le faire – une autre solution consisterait à démarrer tous les deux sur la même machine, dans ce cas, il pourrait s'agir simplement de l'heure de démarrage. LocalDb will IIRC Ferme la database lorsqu'elle n'est pas utilisée, donc quelle que soit la disponibilité de la memory, elle est "froide". SQL Server maintient la database active, donc – il est "chaud" (c'est-à-dire que les pages chargées sont toujours en memory, alors que localdb doit les récupérer à partir du disque).

Beaucoup "ça dépend". Certains "sur votre configuration".