Azure SQL Database vs MS SQL Server sur une Machine dédiée

J'exécute actuellement une instance de MS SQL Server 2014 (12.1.4100.1) sur une machine dédiée que je loue pour 270 $ / mois avec les spécifications suivantes:

  • Intel Xeon E5-1660 processeur (six physique 3.3 ghz noyaux + hyperthreading + turbo - > 3,9 ghz)
  • 64 GB enregistré DDR3 ECC mémoire
  • 240 GB Intel SSD
  • 45000 Go de transfert de bande passante

Je joue avec Azure SQL Database depuis un peu maintenant, et j'ai eu l'idée de changer au cours de leur plate-forme. J'ai déclenché une base de données SQL Azure en utilisant leur niveau de tarification P2 Premium sur un serveur V12 (juste pour tester les choses), et chargé une copie de ma base de données existante (à partir de la machine dédiée).

J'ai exécuté plusieurs ensembles de requêtes côte à côte, l'un contre la base de données sur la machine dédiée, et l'autre contre la base de données SQL P2 Azure. Les résultats étaient en quelque sorte choquants: ma machine dédiée a surperformé (en termes de temps d'exécution) La base de données Azure d'une énorme marge à chaque fois. En règle générale, l'instance de base de données dédiée se terminerait en moins de 1/2 à 1/3 du temps nécessaire à L'exécution de la base de données Azure.

Maintenant, je comprends les nombreux avantages de la plate-forme Azure. Il est géré par rapport à ma configuration non gérée sur la machine dédiée, ils ont une restauration ponctuelle meilleure que ce que j'ai, le pare-feu est facilement configuré, il y a une géo-réplication, etc., etc. Mais j'ai une base de données avec des centaines de tables avec des dizaines voire des centaines de millions d'enregistrements dans chaque tableau, et parfois besoin d'interroger plusieurs jointures, etc., donc la performance en termes de temps d'exécution compte vraiment. Je trouve juste choquant qu'un service de ~ 930 $ / mois fonctionne mal à côté d'une location de machine dédiée à 270 $/mois. Je suis encore assez nouveau pour SQL dans son ensemble, et très nouveau pour les serveurs/etc. mais n'est-ce pas ajouter à quelqu'un d'autre? Est-ce que quelqu'un a peut-être un aperçu de quelque chose qui me manque ici, ou est-ce que ces autres fonctionnalités "gérées" de la base de données SQL Azure sont censées constituer la différence de prix?

L'essentiel est que je commence à dépasser même les capacités de ma machine dédiée, et j'espérais vraiment que la base de données SQL D'Azure serait un bon tremplin, mais à moins de manquer quelque chose, ce n'est pas le cas. Je suis encore trop petite pour sortir et dépenser des centaines de milliers sur une autre plate-forme.

Quelqu'un a des conseils sur si je manque quelque chose, ou est la performance que je vois en ligne avec ce que vous attendez? Dois-je d'autres options qui peuvent produire de meilleures performances que la machine dédiée que je cours actuellement, mais ne coûtent pas des dizaines de milliers/mois? Y a-t-il quelque chose que je peux faire (configuration/Réglage) pour ma base de données SQL Azure qui augmenterait le temps d'exécution? Encore une fois, toute aide est appréciée.

EDIT: Permettez-moi de réviser ma question pour la rendre peut-être un peu plus claire: est-ce que je vois en termes de performance de temps d'exécution pure à attendre, où un serveur dédié @ $270/mois est bien surpasser Azure SQL DB P2 tier de Microsoft @ $930/mois? Ignorez les autres "avantages" comme managed vs. unmanaged, ignorez l'utilisation prévue comme Azure étant destiné à la production, etc. J'ai juste besoin de savoir si je manque quelque chose avec Azure SQL DB, ou si je suis vraiment censé obtenir de meilleures performances sur une seule machine dédiée.

25
demandé sur Daniel A. Burke 2015-09-06 08:19:18

4 réponses

Il existe une alternative de Microsoft à Azure SQL DB:

"provisionner une machine virtuelle SQL Server dans Azure"

Https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-provision-sql-server/

Une explication détaillée des différences entre les deux offres: "comprendre Azure SQL Database et SQL Server dans Azure VMs "

Https://azure.microsoft.com/en-us/documentation/articles/data-management-azure-sql-database-and-sql-server-iaas/

Une différence significative entre votre serveur SQL autonome et Azure SQL DB est qu'avec SQL DB vous payez pour des niveaux élevés de disponibilité, ce qui est réalisé en exécutant plusieurs instances sur différentes machines. Ce serait comme louer 4 de vos machines dédiées et les exécuter dans un groupe de disponibilité AlwaysOn, ce qui changerait à la fois votre coût et la performance. Cependant, comme vous n'avez jamais mentionné la disponibilité, je suppose que ce n'est pas un problème dans votre scénario. SQL Server dans une machine virtuelle peut mieux répondre à vos besoins.

11
répondu Jack Richins 2015-09-07 19:27:37

Perf et disponibilité mis à part, il y a plusieurs autres facteurs importants à considérer:

  • coût Total: votre coût de location de 270 $n'est qu'un des nombreux facteurs de coût. L'espace, l'énergie et le CVC sont d'autres coûts physiques. Ensuite, il y a le coût de l'administration. Pensez au travail que vous devez faire chaque patch mardi et lorsque Windows ou SQL Server expédie un service pack ou une mise à jour cumulative. Même si vous ne les testez pas avant de les déployer, cela prend toujours du temps et des efforts. Si vous faites des tests, alors il y a une deuxième machine et dupliquer l'instance de produit et la charge de travail pour le test.
  • sécurité: il y a beaucoup de choses écrites sur la façon dont il est mauvais et dangereux et risqué de stocker toutes les données qui vous intéressent dans le nuage. Personnellement, j'ai vu des implémentations et des processus bien pires sur la sécurité avec des serveurs locaux (même dans les banques et les agences fédérales) que je l'ai vu avec l'un des principaux fournisseurs de cloud (Microsoft, Amazon, Google). Il y a beaucoup de travail à faire les choses bien puis encore plus de travail à garder leur droit. En outre, vous pouvez voir et auditer leurs SLA de sécurité (voir Azure à http://azure.microsoft.com/en-us/support/trust-center/).
  • Évolutivité: pas seulement cru évolutivité, mais le coût et l'effort à l'échelle. Azure SQL DB a récemment publié l'énorme édition P11 qui a 7 fois la capacité de calcul de la P2 avec laquelle vous avez testé. Mise à l'échelle vers le haut et vers le bas n'est pas instantanée, mais vraiment facile et raisonnablement rapide. La meilleure partie est (pour moi de toute façon), il peut être heurté à une édition plus élevée quand je cours les grandes requêtes ou les opérations de réindexage puis redescendent pour les charges "normales". C'est difficile à faire avec un serveur SQL régulier sur bare metal - soit louer/acheter une très grande boîte qui reste inactive 90% du temps ou prendre des temps d'arrêt pour se déplacer. Un peu plus facile si dans une machine virtuelle; vous pouvez augmenter la mémoire en ligne mais vous devez toujours faire rebondir l'instance pour augmenter le processeur; votre base de données SQL Azure reste en ligne pendant les opérations de montée/descente.
15
répondu SQLmojoe 2015-09-09 01:24:23

(avertissement: je travaille pour Microsoft, mais pas sur Azure ou SQL Server).

"Azure SQL" n'est pas équivalent à "SQL Server" - et je souhaite personnellement que nous offrions une sorte de" serveur SQL hébergé " au lieu D'Azure SQL.

En surface, les deux sont les mêmes: ce sont tous les deux des systèmes de base de données relationnels avec la puissance de T-SQL pour les interroger (Eh bien, ils utilisent tous les deux le même SGBD).

Azure SQL est différent en ce que l'idée est que vous avez deux bases de données: une base de données de développement utilisant un serveur SQL local (idéalement 2012 ou ultérieur) et une base de données de production sur Azure SQL. Vous (ne devriez) jamais modifier directement la base de données SQL Azure, et en effet vous constaterez que SSMS n'offre pas d'outils de conception (concepteur de Table, Concepteur de vue, etc.) pour Azure SQL. Au lieu de cela, vous concevez et travaillez avec votre base de données SQL Server locale et créez des fichiers " DACPAC "(ou des fichiers XML Spéciaux "change", qui peuvent être générés par SSDT) qui modifient ensuite votre base de données Azure de telle sorte qu'elle copie votre base de données de développement, une sorte de système de" réplication de conception".

Sinon, comme vous l'avez remarqué, Azure SQL offre une résilience intégrée, des sauvegardes, une administration simplifiée, etc.

En ce qui concerne les performances, est-il possible que vous manquiez des index ou d'autres optimisations? Vous pouvez également remarquer une latence légèrement plus élevée avec Azure SQL par rapport à un serveur SQL local, j'ai vu des temps de ping (d'une machine virtuelle Azure à un hôte SQL Azure) autour de 5-10ms, ce qui signifie que vous devez concevoir votre application pour être moins bavard ou pour paralléliser les opérations de récupération de données afin de réduire les temps de chargement de la page (en supposant qu'il s'agisse d'une application web que vous construisez).

13
répondu Dai 2015-09-06 05:44:48

SQL DB a intégré la disponibilité (ce qui peut avoir un impact sur les performances), la capacité de restauration ponctuelle et les fonctionnalités DR. Vous avez la possibilité de mettre à l'échelle votre DB en fonction de votre utilisation pour réduire le coût. Vous pouvez améliorer les performances de votre requête à l'aide de la requête globale (données de fragment). SQl DB gère les mises à niveau automatiques et les correctifs et améliore considérablement l'histoire de gestion. Vous devrez peut-être payer une petite prime pour. Mise en cache au niveau de l'Application / répartition uniforme de la charge, rétrogradation à froid etc. peut aider à améliorer les performances de votre base de données et d'optimiser le coût.

2
répondu Sirisha Chamarthi 2015-09-06 06:20:22