Azure Camp spécial SQL Azure         14/12/2011
La communauté AzureLe site www.zecloud.frLes Azure Campshttp://Zecloud.codeplex.com Tout le code source produit lorsdes Az...
Programme- Présentation de la communauté Azure- Introduction- Pattern dimplémentation- Performance & Throttling- Montée en...
Performance et Montée En  Charge avec SQL Azure          Hervé Roggero          MVP SQL Azure       Blue Syntax Consulting
A mon sujetComment me contacter  Twitter: @hroggero  E-mail: hroggero@bluesyntax.net  Website: www.bluesyntax.netContribut...
AgendaPerformance  Considérations  Pertes de connexion et mécanismes de limitationMontée en Charge  Sharding  Fédération  ...
Performance
ConsidérationsRegroupement de ConnexionsLogique de perte de connexionCacheEntity Framework (lazy loading)Chatty vs. Chunky...
Topologie
Raisons de perte de connexion Serrures excessives (1 million de serrures) Transactions non commises (<20% du log file) Tra...
Raisons de perte de connexion (2)  Durée d’une transaction (24 heures)  DoS (éviter les attaques avec le pare-feu)  Problè...
Mécanisme de Limitation          (throttling)Erreurs de connexion  40501 : le service est actuellement occupé. Réessayez l...
Décodage des codes de raison                                                                                              ...
Modes de LimitationCode du      Description           Types d’instructions   Instructions qui peuventmode de              ...
Traiter les Pertes de Connexion           Réduction Exponentielle; peut s’appliquer aux           chargeshttp://geekswithb...
Traiter Les Erreurs Temporaires           Transient Condition Handling Frameworkhttp://windowsazurecat.com/2010/10/best-pr...
Exemple: Backup pour SQL Azure Algorithme adapte pour rester sous la                                    Connexion courbe d...
Exemple: Copier des donneesX: Size du batch; Y: Temps d’Execution
Montée en charge
ShardingDistribution des données  Horizontalement  VerticalementRessources non-partagéesDifférent modèlesObjectif de la mo...
Shard Linéaire                       (linear)Une base de donnée par clientEmbarquement simpleInvestissement linéaire
Shard Compressé                (compressed)Optimisation de stockage & réduction de coutsImplémentée avec:  database schema...
Shard étendu                 (expanded)Traite les bases comme une unité de stockage logiquePas de relations entre les base...
Revue des Modèles
Fédération avec SQL Azure
Accéder au RootUSE FEDERATION ROOT WITH RESETSELECT * FROM configuration_table
Accéder a un MembreUSE FEDERATION customers (cid=10) WITH RESET, FILTERING=OFFSELECT * FROM customers
Accéder a un EnregistrementUSE FEDERATION customers (cid=10) WITH RESET, FILTERING=ONSELECT * FROM customers
DifficultésChanger le contexte avec USE FEDERATIONDifficile d’accéder aux données reparties (FAN OUT)  Sur plusieurs membr...
Projet Open-Source: EnzoPlatforme sharding unifiee  Compressee, étendue, lineaire  SQL Azure Federation
Enzo: Mode APIRootDatabase root_db = new RootDatabase(“connectionstring");root_db["customers"].DefaultExecutionContext.Mod...
Enzo: Mode SQL DistribuéeRootDatabase root_db = new RootDatabase(“connectionstring");string sql = @“SELECT * USING    (sel...
Enzo: Mode SQL Distribuée (2)RootDatabase root_db = new RootDatabase(“connectionstring");string sql = @“SELECT * USING    ...
Enzo: Cache Cache les résultats localement Utilisé avec les commandes SQL distribuéesstring sql = @“SELECT * USING    (sel...
Demo / Questions
Sql azure   performance et montee en charge (1)
Upcoming SlideShare
Loading in...5
×

Sql azure performance et montee en charge (1)

2,062

Published on

Slides de l'azure camp du 14 décembre sur la montée en charge avec Sql Azure

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,062
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Sql azure performance et montee en charge (1)"

  1. 1. Azure Camp spécial SQL Azure 14/12/2011
  2. 2. La communauté AzureLe site www.zecloud.frLes Azure Campshttp://Zecloud.codeplex.com Tout le code source produit lorsdes Azure Camps en licence MS-PLL’azure user group :www.azureusergroup.com/group/frenchusergroupTwitter ZeCloud twitter.com/zecloudEt page Facebook ZeCloud Devenez Fan !!
  3. 3. Programme- Présentation de la communauté Azure- Introduction- Pattern dimplémentation- Performance & Throttling- Montée en Charge & Fédération- Questions Réponses- Code
  4. 4. Performance et Montée En Charge avec SQL Azure Hervé Roggero MVP SQL Azure Blue Syntax Consulting
  5. 5. A mon sujetComment me contacter Twitter: @hroggero E-mail: hroggero@bluesyntax.net Website: www.bluesyntax.netContributions Blue Syntax Consulting PRO SQL Azure (APress) Trainings Azure (Wednesday) Consulting Azure President du Azure Florida Association (linked-in)Floride…
  6. 6. AgendaPerformance Considérations Pertes de connexion et mécanismes de limitationMontée en Charge Sharding Fédération Projet open source: Enzo
  7. 7. Performance
  8. 8. ConsidérationsRegroupement de ConnexionsLogique de perte de connexionCacheEntity Framework (lazy loading)Chatty vs. Chunky (bavard vs massif) [mais je laisseraisles termes technique en anglais]
  9. 9. Topologie
  10. 10. Raisons de perte de connexion Serrures excessives (1 million de serrures) Transactions non commises (<20% du log file) Transactions bloquant le système (max: 20 secondes) Taille du log file (1Go par transaction) Utilisation de TempDB (5Go par session) Utilisation mémoire (>16Mb pendant 20+ secondes) Taille de la base de donnée Connexions inactives (30 minutes)
  11. 11. Raisons de perte de connexion (2) Durée d’une transaction (24 heures) DoS (éviter les attaques avec le pare-feu) Problèmes avec le réseau Problèmes avec la répartition des charges Autres raisons (CPU, I/O…)
  12. 12. Mécanisme de Limitation (throttling)Erreurs de connexion 40501 : le service est actuellement occupé. Réessayez la demande après 10 secondes. ID de lincident : %ls. Code : %d. 40544 : la base de données a atteint son quota de taille. Partitionnez ou supprimez des données, supprimez des index ou consultez la documentation afin de rechercher des solutions possibles. ID de lincident : %ls. Code : %d. 40545 : le service rencontre un problème actuellement en cours danalyse. ID de lincident : %ls. Code : %d
  13. 13. Décodage des codes de raison 131075 modulo 4 = 3http://msdn.microsoft.com/fr-fr/library/4cff491e-9359-4454-bd7c-fb72c4c452ca#bkmk_throt_errors
  14. 14. Modes de LimitationCode du Description Types d’instructions Instructions qui peuventmode de rejetees etre traiteeslimitation0 Aucune limitation Aucune Toutes1 Rejeter les mises a INSERT, UPDATE, DELETE, DROP TABLE & jour (insert) CREATE TABLE & INDEX, TRUNCATE INDEX2 Rejeter toutes les INSERT, UPDATE, SELECT ecritures DELETE, CREATE, DROP3 Rejeter tout Toutes Aucune
  15. 15. Traiter les Pertes de Connexion Réduction Exponentielle; peut s’appliquer aux chargeshttp://geekswithblogs.net/hroggero/archive/2011/05/26/cloud-lesson-learned-exponential-backoff.aspx
  16. 16. Traiter Les Erreurs Temporaires Transient Condition Handling Frameworkhttp://windowsazurecat.com/2010/10/best-practices-for-handling-transient-conditions-in-sql-azure-client-applications/
  17. 17. Exemple: Backup pour SQL Azure Algorithme adapte pour rester sous la Connexion courbe de En parallele Prepare les limitation de SQL commandes SQL Azure Connexion Code d’adaptation Ouvre connexion represente 30% du code backup En parallele Execute une Charges commande SQL Connexion Sauve donnees dans fichier
  18. 18. Exemple: Copier des donneesX: Size du batch; Y: Temps d’Execution
  19. 19. Montée en charge
  20. 20. ShardingDistribution des données Horizontalement VerticalementRessources non-partagéesDifférent modèlesObjectif de la montée en charge: Expérience du client #1 est la même que celle du client #1000
  21. 21. Shard Linéaire (linear)Une base de donnée par clientEmbarquement simpleInvestissement linéaire
  22. 22. Shard Compressé (compressed)Optimisation de stockage & réduction de coutsImplémentée avec: database schemas data fédération
  23. 23. Shard étendu (expanded)Traite les bases comme une unité de stockage logiquePas de relations entre les bases et les clientsUtilise les INSERTs round-robin
  24. 24. Revue des Modèles
  25. 25. Fédération avec SQL Azure
  26. 26. Accéder au RootUSE FEDERATION ROOT WITH RESETSELECT * FROM configuration_table
  27. 27. Accéder a un MembreUSE FEDERATION customers (cid=10) WITH RESET, FILTERING=OFFSELECT * FROM customers
  28. 28. Accéder a un EnregistrementUSE FEDERATION customers (cid=10) WITH RESET, FILTERING=ONSELECT * FROM customers
  29. 29. DifficultésChanger le contexte avec USE FEDERATIONDifficile d’accéder aux données reparties (FAN OUT) Sur plusieurs membres d’une fédération Sur plusieurs fédérations SELECT * FROM customers SELECT * FROM customers WHERE cid NOT IN (select cid FROM sales)
  30. 30. Projet Open-Source: EnzoPlatforme sharding unifiee Compressee, étendue, lineaire SQL Azure Federation
  31. 31. Enzo: Mode APIRootDatabase root_db = new RootDatabase(“connectionstring");root_db["customers"].DefaultExecutionContext.Mode =ShardCore.ShardOperationMode.FAN_OUT;root_db["customers"].ExecuteDataTable("select * from customer");
  32. 32. Enzo: Mode SQL DistribuéeRootDatabase root_db = new RootDatabase(“connectionstring");string sql = @“SELECT * USING (select * from customer) FEDERATED ON (customers)";root_db.ExecuteDataTable(sql);
  33. 33. Enzo: Mode SQL Distribuée (2)RootDatabase root_db = new RootDatabase(“connectionstring");string sql = @“SELECT * USING (select * from customer) FEDERATED ON (customers) WHERE cid NOT IN (select cid from sales where storeid = 2) FEDERATED ON (sales)";root_db.ExecuteDataTable(sql);
  34. 34. Enzo: Cache Cache les résultats localement Utilisé avec les commandes SQL distribuéesstring sql = @“SELECT * USING (select * from customer) FEDERATED ON (customers) CACHED FOR 30";
  35. 35. Demo / Questions

×