[{"data":1,"prerenderedAt":2389},["ShallowReactive",2],{"docs-page-fr-ca-\u002Ffr-ca\u002Fdocs\u002Fservices\u002Fazure-sql":3,"docs-navigation-fr-ca":2289,"docs-surround-fr-ca-\u002Ffr-ca\u002Fdocs\u002Fservices\u002Fazure-sql":2384},{"id":4,"title":5,"body":6,"claimDependencies":2271,"description":2275,"extension":2276,"locale":2277,"meta":2278,"missingMedia":2279,"navigation":833,"owner":2280,"path":2281,"reviewStatus":2282,"seo":2283,"staleLinks":2284,"stem":2285,"technicalRisk":2286,"translationKey":2287,"__hash__":2288},"docs_fr_ca\u002Ffr-ca\u002Fdocs\u002F5.services\u002F7.azure-sql.md","Optimisation Azure SQL",{"type":7,"value":8,"toc":2230},"minimark",[9,13,18,21,50,54,59,62,67,78,83,109,113,116,121,127,131,150,154,157,162,168,172,190,194,198,203,235,240,267,272,299,303,308,343,348,385,391,424,428,433,453,459,489,493,497,500,506,560,566,583,588,599,605,613,617,620,625,639,644,658,663,677,682,696,700,703,708,713,719,723,727,733,737,741,747,751,755,761,765,769,775,779,783,789,793,796,801,1058,1063,1269,1274,1545,1549,1553,1556,1616,1620,1625,1639,1644,1658,1662,1667,1678,1683,1694,1698,1702,1707,1718,1723,1734,1738,1742,1753,1757,1768,1772,1776,1787,1791,1802,1806,1810,1821,1825,1836,1840,1844,1849,1852,1864,1867,1872,1875,1889,1894,1897,1914,1918,1923,1926,1937,1942,1961,1966,1968,1979,1983,2002,2006,2010,2013,2027,2031,2034,2048,2052,2057,2071,2077,2081,2084,2156,2165,2169,2172,2204,2207,2212,2226],[10,11,12],"p",{},"Jetscale fournit une optimisation des coûts pilotée par IA pour Azure SQL Database, incluant les bases de données uniques, les pools élastiques et Azure SQL Managed Instance. Nos agents spécialisés analysent vos charges de travail de bases de données pour identifier les opportunités de redimensionnement et d'amélioration de configuration.",[14,15,17],"h2",{"id":16},"vue-densemble","Vue d'ensemble",[10,19,20],{},"Jetscale optimise les ressources Azure SQL en analysant :",[22,23,24,32,38,44],"ul",{},[25,26,27,31],"li",{},[28,29,30],"strong",{},"Utilisation des bases de données"," : Utilisation DTU\u002FvCore, CPU, mémoire et modèles d'E\u002FS",[25,33,34,37],{},[28,35,36],{},"Analyse des coûts"," : Dépenses actuelles vs configuration optimale",[25,39,40,43],{},[28,41,42],{},"Métriques de performance"," : Performance des requêtes, modèles de connexion, utilisation du stockage",[25,45,46,49],{},[28,47,48],{},"Alignement des niveaux de service"," : Basic, Standard, Premium, Business Critical, Hyperscale",[14,51,53],{"id":52},"types-azure-sql-pris-en-charge","Types Azure SQL pris en charge",[55,56,58],"h3",{"id":57},"azure-sql-database-base-de-données-unique","Azure SQL Database (Base de données unique)",[10,60,61],{},"Les bases de données uniques sont notre cible d'optimisation principale.",[10,63,64],{},[28,65,66],{},"Architecture de base de données :",[68,69,74],"pre",{"className":70,"code":72,"language":73},[71],"language-text","SqlDatabase (Cible d'optimisation, Facturable)\n├── Calcul (DTU ou vCore)\n├── Stockage (Données + Journal)\n└── Stockage de sauvegarde\n","text",[75,76,72],"code",{"__ignoreMap":77},"",[10,79,80],{},[28,81,82],{},"Ce que nous optimisons :",[22,84,85,91,97,103],{},[25,86,87,90],{},[28,88,89],{},"Niveau de service"," : Redimensionnement entre Basic, Standard, Premium, Business Critical, Hyperscale",[25,92,93,96],{},[28,94,95],{},"Niveau de calcul"," : Provisionné vs Serverless",[25,98,99,102],{},[28,100,101],{},"Dimensionnement DTU\u002FvCore"," : Correspondance avec les exigences réelles de charge de travail",[25,104,105,108],{},[28,106,107],{},"Configuration du stockage"," : Taille maximale des données et niveau de performance",[55,110,112],{"id":111},"azure-sql-elastic-pools","Azure SQL Elastic Pools",[10,114,115],{},"Les pools élastiques partagent les ressources entre plusieurs bases de données.",[10,117,118],{},[28,119,120],{},"Architecture du pool :",[68,122,125],{"className":123,"code":124,"language":73},[71],"SqlElasticPool (Cible d'optimisation, Facturable)\n├── Base de données 1 - Partage les ressources du pool\n├── Base de données 2 - Partage les ressources du pool\n└── Base de données N - Partage les ressources du pool\n",[75,126,124],{"__ignoreMap":77},[10,128,129],{},[28,130,82],{},[22,132,133,139,144],{},[25,134,135,138],{},[28,136,137],{},"Dimensionnement du pool"," : Total de DTU\u002FvCores pour toutes les bases de données",[25,140,141,143],{},[28,142,89],{}," : Standard, Premium, Business Critical",[25,145,146,149],{},[28,147,148],{},"Densité des bases de données"," : Nombre optimal de bases de données par pool",[55,151,153],{"id":152},"azure-sql-managed-instance","Azure SQL Managed Instance",[10,155,156],{},"Instance SQL Server entièrement gérée.",[10,158,159],{},[28,160,161],{},"Architecture de l'instance :",[68,163,166],{"className":164,"code":165,"language":73},[71],"SqlManagedInstance (Cible d'optimisation, Facturable)\n├── Calcul (vCores)\n├── Stockage\n└── Plusieurs bases de données\n",[75,167,165],{"__ignoreMap":77},[10,169,170],{},[28,171,82],{},[22,173,174,180,185],{},[25,175,176,179],{},[28,177,178],{},"Dimensionnement de l'instance"," : Nombre de vCores (4, 8, 16, 24, 32, 40, 64, 80)",[25,181,182,184],{},[28,183,89],{}," : General Purpose vs Business Critical",[25,186,187,189],{},[28,188,107],{}," : Dimensionnement du stockage des données et du journal",[14,191,193],{"id":192},"niveaux-de-service","Niveaux de service",[55,195,197],{"id":196},"modèle-basé-sur-dtu-base-de-données-unique-pools-élastiques","Modèle basé sur DTU (Base de données unique & Pools élastiques)",[10,199,200],{},[28,201,202],{},"Niveau Basic",[22,204,205,211,217,223,229],{},[25,206,207,210],{},[28,208,209],{},"Utiliser pour"," : Petites bases de données, développement, tests, charges de travail légères",[25,212,213,216],{},[28,214,215],{},"Plage DTU"," : 5 DTU",[25,218,219,222],{},[28,220,221],{},"Taille maximale de base de données"," : 2 Go",[25,224,225,228],{},[28,226,227],{},"Coût typique"," : ~5 $\u002Fmois",[25,230,231,234],{},[28,232,233],{},"Idéal quand"," : Apprentissage, prototypage, utilisation minimale en production",[10,236,237],{},[28,238,239],{},"Niveau Standard",[22,241,242,247,252,257,262],{},[25,243,244,246],{},[28,245,209],{}," : La plupart des charges de travail de production, applications web, applications métier",[25,248,249,251],{},[28,250,215],{}," : 10, 20, 50, 100, 200, 400, 800, 1600, 3000 DTU",[25,253,254,256],{},[28,255,221],{}," : Jusqu'à 1 To",[25,258,259,261],{},[28,260,227],{}," : 15-1 500 $\u002Fmois",[25,263,264,266],{},[28,265,233],{}," : Exigences de performance prévisibles, charges de travail équilibrées",[10,268,269],{},[28,270,271],{},"Niveau Premium",[22,273,274,279,284,289,294],{},[25,275,276,278],{},[28,277,209],{}," : Applications critiques, taux de transaction élevé, faible latence",[25,280,281,283],{},[28,282,215],{}," : 125, 250, 500, 1000, 1750, 4000 DTU",[25,285,286,288],{},[28,287,221],{}," : Jusqu'à 4 To",[25,290,291,293],{},[28,292,227],{}," : 465-14 500 $\u002Fmois",[25,295,296,298],{},[28,297,233],{}," : Performance, disponibilité et exigences de récupération les plus élevées",[55,300,302],{"id":301},"modèle-basé-sur-vcore-tous-types","Modèle basé sur vCore (Tous types)",[10,304,305],{},[28,306,307],{},"General Purpose",[22,309,310,315,321,327,333,338],{},[25,311,312,314],{},[28,313,209],{}," : La plupart des charges de travail de production, calcul et E\u002FS équilibrés",[25,316,317,320],{},[28,318,319],{},"vCores"," : 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 24, 32, 40, 80, 128",[25,322,323,326],{},[28,324,325],{},"Mémoire maximale"," : 625 Go (128 vCore)",[25,328,329,332],{},[28,330,331],{},"Stockage"," : Stockage distant (SSD), jusqu'à 4 To (unique) ou 16 To (instance gérée)",[25,334,335,337],{},[28,336,227],{}," : 300-8 000 $\u002Fmois",[25,339,340,342],{},[28,341,233],{}," : Charges de travail métier standard",[10,344,345],{},[28,346,347],{},"Business Critical",[22,349,350,355,360,364,369,375,380],{},[25,351,352,354],{},[28,353,209],{}," : Applications critiques, faible latence, haute disponibilité",[25,356,357,359],{},[28,358,319],{}," : Même plage que General Purpose",[25,361,362,326],{},[28,363,325],{},[25,365,366,368],{},[28,367,331],{}," : SSD local, jusqu'à 4 To (unique) ou 16 To (instance gérée)",[25,370,371,374],{},[28,372,373],{},"HA intégrée"," : Groupe de disponibilité Always-On avec réplicas secondaires lisibles",[25,376,377,379],{},[28,378,227],{}," : 2,5x le prix de General Purpose",[25,381,382,384],{},[28,383,233],{}," : Performance et disponibilité les plus élevées requises",[10,386,387,390],{},[28,388,389],{},"Hyperscale"," (Base de données unique uniquement)",[22,392,393,398,403,408,414,419],{},[25,394,395,397],{},[28,396,209],{}," : Très grandes bases de données (100 To+), montée\u002Fdescente en charge rapide",[25,399,400,402],{},[28,401,319],{}," : 2-80 vCores",[25,404,405,407],{},[28,406,331],{}," : Hautement évolutif, jusqu'à 100 To",[25,409,410,413],{},[28,411,412],{},"Architecture"," : Multi-niveaux avec serveurs de pages et nœuds de calcul",[25,415,416,418],{},[28,417,227],{}," : Similaire à General Purpose, stockage facturé séparément",[25,420,421,423],{},[28,422,233],{}," : Base de données > 4 To, besoin de mise à l'échelle rapide",[55,425,427],{"id":426},"niveaux-de-calcul","Niveaux de calcul",[10,429,430],{},[28,431,432],{},"Provisionné (Provisioned)",[22,434,435,441,447],{},[25,436,437,440],{},[28,438,439],{},"Facturation"," : Par seconde pour les ressources de calcul",[25,442,443,446],{},[28,444,445],{},"Idéal pour"," : Charges de travail prévisibles, utilisation continue",[25,448,449,452],{},[28,450,451],{},"Minimum"," : Aucun calcul minimum",[10,454,455,458],{},[28,456,457],{},"Serverless"," (General Purpose uniquement)",[22,460,461,466,471,477,483],{},[25,462,463,465],{},[28,464,439],{}," : Par seconde quand actif, pause automatique en cas d'inactivité",[25,467,468,470],{},[28,469,445],{}," : Modèles d'utilisation intermittents et imprévisibles",[25,472,473,476],{},[28,474,475],{},"Pause automatique"," : Délai configurable (1 heure - 7 jours)",[25,478,479,482],{},[28,480,481],{},"Économies"," : Jusqu'à 90% pendant les périodes d'inactivité",[25,484,485,488],{},[28,486,487],{},"Note"," : Délai de démarrage à froid lors de la reprise depuis l'état en pause",[14,490,492],{"id":491},"comment-jetscale-optimise-azure-sql","Comment Jetscale optimise Azure SQL",[55,494,496],{"id":495},"_1-collecte-de-données","1. Collecte de données",[10,498,499],{},"Jetscale analyse plusieurs sources de données :",[10,501,502,505],{},[28,503,504],{},"Métriques Azure Monitor"," (fenêtre glissante de 14 jours) :",[22,507,508,514,520,526,536,542,548,554],{},[25,509,510,513],{},[75,511,512],{},"cpu_percent"," - Utilisation du CPU",[25,515,516,519],{},[75,517,518],{},"dtu_consumption_percent"," - Utilisation DTU (modèle DTU)",[25,521,522,525],{},[75,523,524],{},"storage_percent"," - Utilisation du stockage",[25,527,528,531,532,535],{},[75,529,530],{},"connection_successful"," \u002F ",[75,533,534],{},"connection_failed"," - Modèles de connexion",[25,537,538,541],{},[75,539,540],{},"sessions_percent"," - Sessions actives",[25,543,544,547],{},[75,545,546],{},"workers_percent"," - Utilisation des threads de travail",[25,549,550,553],{},[75,551,552],{},"deadlock"," - Occurrences de blocage",[25,555,556,559],{},[75,557,558],{},"log_write_percent"," - Utilisation d'écriture du journal de transactions",[10,561,562,565],{},[28,563,564],{},"Données Azure Resource Manager"," :",[22,567,568,571,574,577,580],{},[25,569,570],{},"Niveau de service et niveau de calcul",[25,572,573],{},"Configuration DTU\u002FvCore",[25,575,576],{},"Taille de stockage actuelle et taille maximale",[25,578,579],{},"État de la géo-réplication",[25,581,582],{},"Paramètres de rétention de sauvegarde",[10,584,585,565],{},[28,586,587],{},"Données Cost Management",[22,589,590,593,596],{},[25,591,592],{},"Dépense mensuelle actuelle par base de données",[25,594,595],{},"Ventilation des coûts de calcul, stockage et sauvegarde",[25,597,598],{},"Tendances historiques des coûts",[10,600,601,604],{},[28,602,603],{},"Azure Advisor"," (si disponible) :",[22,606,607,610],{},[25,608,609],{},"Recommandations de redimensionnement générées par Azure",[25,611,612],{},"Suggestions d'optimisation des performances",[55,614,616],{"id":615},"_2-analyse","2. Analyse",[10,618,619],{},"Nos agents IA effectuent une analyse approfondie :",[10,621,622],{},[28,623,624],{},"Modèles d'utilisation :",[22,626,627,630,633,636],{},[25,628,629],{},"Utilisation DTU\u002FvCore de pointe vs moyenne",[25,631,632],{},"Modèles horaires (identifier les périodes d'inactivité pour serverless)",[25,634,635],{},"Modèles jour de la semaine (charge week-end vs jour de semaine)",[25,637,638],{},"Tendances de croissance au fil du temps",[10,640,641],{},[28,642,643],{},"Évaluation des performances :",[22,645,646,649,652,655],{},[25,647,648],{},"Métriques de performance des requêtes",[25,650,651],{},"Modèles de connexion et échecs",[25,653,654],{},"Fréquence des blocages",[25,656,657],{},"Pression du journal de transactions",[10,659,660],{},[28,661,662],{},"Modélisation des coûts :",[22,664,665,668,671,674],{},[25,666,667],{},"Ventilation des coûts actuels (calcul, stockage, sauvegarde)",[25,669,670],{},"Coût projeté pour les configurations alternatives",[25,672,673],{},"Comparaison des coûts Provisionné vs Serverless",[25,675,676],{},"Opportunités de capacité réservée",[10,678,679],{},[28,680,681],{},"Sélection du niveau :",[22,683,684,687,690,693],{},[25,685,686],{},"Alignement Basic vs Standard vs Premium",[25,688,689],{},"Exigences General Purpose vs Business Critical",[25,691,692],{},"Pertinence d'Hyperscale pour les grandes bases de données",[25,694,695],{},"Efficacité du modèle DTU vs vCore",[55,697,699],{"id":698},"_3-recommandations","3. Recommandations",[10,701,702],{},"Jetscale génère des recommandations spécifiques et exploitables :",[704,705,707],"h4",{"id":706},"réduction-du-niveau-de-service","Réduction du niveau de service",[10,709,710],{},[28,711,712],{},"Exemple de recommandation :",[68,714,717],{"className":715,"code":716,"language":73},[71],"Ressource : app-database-prod\nActuel : Premium P2 (250 DTU, 930 $\u002Fmois)\nRecommandé : Standard S3 (100 DTU, 300 $\u002Fmois)\n\nImpact sur les coûts :\n- Actuel : 930 $\u002Fmois\n- Projeté : 300 $\u002Fmois\n- Économies : 630 $\u002Fmois (68%), 7 560 $\u002Fan\n\nAnalyse de performance :\n- Utilisation DTU moyenne : 35%\n- Utilisation DTU de pointe : 58%\n- Modèles de connexion : Normal\n- Performance des requêtes : Bien dans les capacités du niveau Standard\n\nRisque : Faible - Utilisation de pointe bien en dessous des limites du nouveau niveau\nNote : Fonctionnalités du niveau Premium (latence plus faible, plus d'IOPS) pas pleinement utilisées\n",[75,718,716],{"__ignoreMap":77},[704,720,722],{"id":721},"redimensionnement-dtu","Redimensionnement DTU",[10,724,725],{},[28,726,712],{},[68,728,731],{"className":729,"code":730,"language":73},[71],"Ressource : customer-db-01\nActuel : Standard S7 (800 DTU, 600 $\u002Fmois)\nRecommandé : Standard S3 (100 DTU, 300 $\u002Fmois)\n\nImpact sur les coûts :\n- Actuel : 600 $\u002Fmois\n- Projeté : 300 $\u002Fmois\n- Économies : 300 $\u002Fmois (50%), 3 600 $\u002Fan\n\nAnalyse de performance :\n- Utilisation DTU moyenne : 18%\n- Utilisation DTU de pointe : 42%\n- 95e percentile : 35%\n- Le niveau recommandé fournit une marge de 2,4x au-dessus de la pointe\n\nRisque : Très faible - Marge substantielle maintenue\n",[75,732,730],{"__ignoreMap":77},[704,734,736],{"id":735},"migration-serverless","Migration Serverless",[10,738,739],{},[28,740,712],{},[68,742,745],{"className":743,"code":744,"language":73},[71],"Ressource : reporting-database\nActuel : General Purpose (4 vCores, Provisionné, 730 $\u002Fmois)\nRecommandé : General Purpose (4 vCores, Serverless, ~290 $\u002Fmois)\n\nImpact sur les coûts :\n- Actuel : 730 $\u002Fmois (facturation 24\u002F7)\n- Projeté : 290 $\u002Fmois (temps actif moyen 40%)\n- Économies : 440 $\u002Fmois (60%), 5 280 $\u002Fan\n\nAnalyse d'utilisation :\n- Heures actives : ~10 heures\u002Fjour (heures ouvrables uniquement)\n- Temps d'inactivité : Nuits et week-ends (60% du temps)\n- Modèles de requêtes : Traitement par lots et rapports\n- Tolérance au démarrage à froid : Acceptable (cas d'usage de rapports)\n\nConfiguration :\n- Délai de pause automatique : 1 heure\n- vCores min : 1 (quand actif)\n- vCores max : 4 (pendant la pointe)\n\nRisque : Très faible - Modèle d'utilisation intermittent idéal pour serverless\nNote : Temps de reprise d'environ 2 minutes depuis l'état en pause\n",[75,746,744],{"__ignoreMap":77},[704,748,750],{"id":749},"optimisation-vcore","Optimisation vCore",[10,752,753],{},[28,754,712],{},[68,756,759],{"className":757,"code":758,"language":73},[71],"Ressource : api-database-prod\nActuel : General Purpose (16 vCores, 1 460 $\u002Fmois)\nRecommandé : General Purpose (8 vCores, 730 $\u002Fmois)\n\nImpact sur les coûts :\n- Actuel : 1 460 $\u002Fmois\n- Projeté : 730 $\u002Fmois\n- Économies : 730 $\u002Fmois (50%), 8 760 $\u002Fan\n\nAnalyse de performance :\n- CPU moyen : 22%\n- CPU de pointe : 38%\n- Utilisation de la mémoire : 45%\n- Modèles d'E\u002FS : Bien dans les limites de General Purpose\n\nRisque : Faible - Marge de 2,6x au-dessus de l'utilisation CPU de pointe\n",[75,760,758],{"__ignoreMap":77},[704,762,764],{"id":763},"business-critical-general-purpose","Business Critical → General Purpose",[10,766,767],{},[28,768,712],{},[68,770,773],{"className":771,"code":772,"language":73},[71],"Ressource : legacy-app-database\nActuel : Business Critical (8 vCores, 3 650 $\u002Fmois)\nRecommandé : General Purpose (8 vCores, 1 460 $\u002Fmois)\n\nImpact sur les coûts :\n- Actuel : 3 650 $\u002Fmois\n- Projeté : 1 460 $\u002Fmois\n- Économies : 2 190 $\u002Fmois (60%), 26 280 $\u002Fan\n\nAnalyse de charge de travail :\n- Fonctionnalités Business Critical non utilisées :\n  × Aucun réplica secondaire lisible utilisé\n  × Exigences de faible latence non critiques\n  × Performance SSD local non requise\n- Exigences de performance satisfaites par General Purpose\n\nRisque : Moyen - Vérifier que l'application tolère la latence du stockage distant\nRecommandation : Tester d'abord dans l'environnement de staging\n",[75,774,772],{"__ignoreMap":77},[704,776,778],{"id":777},"consolidation-elastic-pool","Consolidation Elastic Pool",[10,780,781],{},[28,782,712],{},[68,784,787],{"className":785,"code":786,"language":73},[71],"Ressource : 12 bases de données Standard S3\nActuel : 12 × S3 (100 DTU chacune, 3 600 $\u002Fmois total)\nRecommandé : 1 × Elastic Pool (600 eDTU, 900 $\u002Fmois)\n\nImpact sur les coûts :\n- Actuel : 3 600 $\u002Fmois (12 bases de données individuelles)\n- Projeté : 900 $\u002Fmois (pool élastique avec 12 bases de données)\n- Économies : 2 700 $\u002Fmois (75%), 32 400 $\u002Fan\n\nAnalyse d'utilisation :\n- Utilisation de pointe des bases de données individuelles : 40-60 DTU\n- Utilisation de pointe simultanée : Rare (charges de travail décalées dans le temps)\n- Utilisation DTU simultanée totale : ~300 DTU de pointe\n- Le pool fournit 600 eDTU avec partage de ressources\n\nRisque : Faible - Capacité de pool suffisante pour l'utilisation simultanée de pointe\nNote : Les bases de données partagent les ressources du pool, réduisant le sur-provisionnement\n",[75,788,786],{"__ignoreMap":77},[55,790,792],{"id":791},"_4-génération-terraform","4. Génération Terraform",[10,794,795],{},"Pour chaque recommandation, Jetscale génère du code Terraform prêt pour la production :",[10,797,798],{},[28,799,800],{},"Exemple : Optimisation du niveau de service",[68,802,806],{"className":803,"code":804,"language":805,"meta":77,"style":77},"language-hcl shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Optimisation Azure SQL Database\n# Généré par Jetscale le 2024-01-15\n# ID de recommandation : rec_azuresql_001\n\nresource \"azurerm_mssql_database\" \"app_database_prod\" {\n  name      = \"app-database-prod\"\n  server_id = azurerm_mssql_server.example.id\n\n  # Précédent : Premium P2 (250 DTU, 930 $\u002Fmois)\n  # Optimisé : Standard S3 (100 DTU, 300 $\u002Fmois)\n  # Réduction de coût : 68% (630 $\u002Fmois, 7 560 $\u002Fan)\n  #\n  # Justification :\n  # - Utilisation DTU moyenne : 35%\n  # - Utilisation DTU de pointe : 58%\n  # - Fonctionnalités du niveau Premium (latence plus faible, IOPS plus élevés) pas pleinement utilisées\n  # - Standard S3 fournit des performances adéquates pour la charge de travail\n  sku_name = \"S3\"\n\n  max_size_gb = 250\n\n  # Configuration existante préservée\n  collation               = \"SQL_Latin1_General_CP1_CI_AS\"\n  zone_redundant          = false\n  read_scale              = false\n  storage_account_type    = \"Geo\"\n\n  threat_detection_policy {\n    state                      = \"Enabled\"\n    email_account_admins       = \"Enabled\"\n    retention_days             = 30\n  }\n\n  tags = merge(\n    var.tags,\n    {\n      \"jetscale:optimized\"      = \"true\"\n      \"jetscale:recommendation\" = \"rec_azuresql_001\"\n      \"jetscale:previous_sku\"   = \"P2\"\n    }\n  )\n}\n","hcl",[75,807,808,816,822,828,835,841,847,853,858,864,870,876,882,888,894,900,906,912,918,923,929,934,940,946,952,958,964,969,975,981,987,993,999,1004,1010,1016,1022,1028,1034,1040,1046,1052],{"__ignoreMap":77},[809,810,813],"span",{"class":811,"line":812},"line",1,[809,814,815],{},"# Optimisation Azure SQL Database\n",[809,817,819],{"class":811,"line":818},2,[809,820,821],{},"# Généré par Jetscale le 2024-01-15\n",[809,823,825],{"class":811,"line":824},3,[809,826,827],{},"# ID de recommandation : rec_azuresql_001\n",[809,829,831],{"class":811,"line":830},4,[809,832,834],{"emptyLinePlaceholder":833},true,"\n",[809,836,838],{"class":811,"line":837},5,[809,839,840],{},"resource \"azurerm_mssql_database\" \"app_database_prod\" {\n",[809,842,844],{"class":811,"line":843},6,[809,845,846],{},"  name      = \"app-database-prod\"\n",[809,848,850],{"class":811,"line":849},7,[809,851,852],{},"  server_id = azurerm_mssql_server.example.id\n",[809,854,856],{"class":811,"line":855},8,[809,857,834],{"emptyLinePlaceholder":833},[809,859,861],{"class":811,"line":860},9,[809,862,863],{},"  # Précédent : Premium P2 (250 DTU, 930 $\u002Fmois)\n",[809,865,867],{"class":811,"line":866},10,[809,868,869],{},"  # Optimisé : Standard S3 (100 DTU, 300 $\u002Fmois)\n",[809,871,873],{"class":811,"line":872},11,[809,874,875],{},"  # Réduction de coût : 68% (630 $\u002Fmois, 7 560 $\u002Fan)\n",[809,877,879],{"class":811,"line":878},12,[809,880,881],{},"  #\n",[809,883,885],{"class":811,"line":884},13,[809,886,887],{},"  # Justification :\n",[809,889,891],{"class":811,"line":890},14,[809,892,893],{},"  # - Utilisation DTU moyenne : 35%\n",[809,895,897],{"class":811,"line":896},15,[809,898,899],{},"  # - Utilisation DTU de pointe : 58%\n",[809,901,903],{"class":811,"line":902},16,[809,904,905],{},"  # - Fonctionnalités du niveau Premium (latence plus faible, IOPS plus élevés) pas pleinement utilisées\n",[809,907,909],{"class":811,"line":908},17,[809,910,911],{},"  # - Standard S3 fournit des performances adéquates pour la charge de travail\n",[809,913,915],{"class":811,"line":914},18,[809,916,917],{},"  sku_name = \"S3\"\n",[809,919,921],{"class":811,"line":920},19,[809,922,834],{"emptyLinePlaceholder":833},[809,924,926],{"class":811,"line":925},20,[809,927,928],{},"  max_size_gb = 250\n",[809,930,932],{"class":811,"line":931},21,[809,933,834],{"emptyLinePlaceholder":833},[809,935,937],{"class":811,"line":936},22,[809,938,939],{},"  # Configuration existante préservée\n",[809,941,943],{"class":811,"line":942},23,[809,944,945],{},"  collation               = \"SQL_Latin1_General_CP1_CI_AS\"\n",[809,947,949],{"class":811,"line":948},24,[809,950,951],{},"  zone_redundant          = false\n",[809,953,955],{"class":811,"line":954},25,[809,956,957],{},"  read_scale              = false\n",[809,959,961],{"class":811,"line":960},26,[809,962,963],{},"  storage_account_type    = \"Geo\"\n",[809,965,967],{"class":811,"line":966},27,[809,968,834],{"emptyLinePlaceholder":833},[809,970,972],{"class":811,"line":971},28,[809,973,974],{},"  threat_detection_policy {\n",[809,976,978],{"class":811,"line":977},29,[809,979,980],{},"    state                      = \"Enabled\"\n",[809,982,984],{"class":811,"line":983},30,[809,985,986],{},"    email_account_admins       = \"Enabled\"\n",[809,988,990],{"class":811,"line":989},31,[809,991,992],{},"    retention_days             = 30\n",[809,994,996],{"class":811,"line":995},32,[809,997,998],{},"  }\n",[809,1000,1002],{"class":811,"line":1001},33,[809,1003,834],{"emptyLinePlaceholder":833},[809,1005,1007],{"class":811,"line":1006},34,[809,1008,1009],{},"  tags = merge(\n",[809,1011,1013],{"class":811,"line":1012},35,[809,1014,1015],{},"    var.tags,\n",[809,1017,1019],{"class":811,"line":1018},36,[809,1020,1021],{},"    {\n",[809,1023,1025],{"class":811,"line":1024},37,[809,1026,1027],{},"      \"jetscale:optimized\"      = \"true\"\n",[809,1029,1031],{"class":811,"line":1030},38,[809,1032,1033],{},"      \"jetscale:recommendation\" = \"rec_azuresql_001\"\n",[809,1035,1037],{"class":811,"line":1036},39,[809,1038,1039],{},"      \"jetscale:previous_sku\"   = \"P2\"\n",[809,1041,1043],{"class":811,"line":1042},40,[809,1044,1045],{},"    }\n",[809,1047,1049],{"class":811,"line":1048},41,[809,1050,1051],{},"  )\n",[809,1053,1055],{"class":811,"line":1054},42,[809,1056,1057],{},"}\n",[10,1059,1060],{},[28,1061,1062],{},"Exemple : Migration Serverless",[68,1064,1066],{"className":803,"code":1065,"language":805,"meta":77,"style":77},"# Migration Azure SQL Serverless\n# Généré par Jetscale le 2024-01-15\n\nresource \"azurerm_mssql_database\" \"reporting_database\" {\n  name      = \"reporting-database\"\n  server_id = azurerm_mssql_server.example.id\n\n  # Précédent : Provisionné (4 vCores, 24\u002F7, 730 $\u002Fmois)\n  # Optimisé : Serverless (1-4 vCores, ~40% actif, 290 $\u002Fmois)\n  # Réduction de coût : 60% (440 $\u002Fmois, 5 280 $\u002Fan)\n  #\n  # Analyse du modèle d'utilisation :\n  # - Actif : Heures ouvrables uniquement (~10 h\u002Fjour)\n  # - Inactif : Nuits et week-ends (60% du temps)\n  # - Cas d'usage : Rapports par lots (démarrage à froid acceptable)\n  #\n  # Configuration Serverless :\n  # - Pause automatique après 1 heure d'inactivité\n  # - Min 1 vCore quand actif, max 4 vCores\n  # - Temps de reprise d'environ 2 minutes depuis l'état en pause\n  sku_name = \"GP_S_Gen5_4\"\n\n  min_capacity = 1.0\n  max_capacity = 4.0\n\n  # Pause automatique après 1 heure (60 minutes) d'inactivité\n  auto_pause_delay_in_minutes = 60\n\n  max_size_gb = 100\n\n  collation               = \"SQL_Latin1_General_CP1_CI_AS\"\n  zone_redundant          = false\n  read_scale              = false\n  storage_account_type    = \"Geo\"\n\n  tags = merge(\n    var.tags,\n    {\n      \"jetscale:optimized\"     = \"true\"\n      \"jetscale:compute_model\" = \"serverless\"\n      \"jetscale:previous_sku\"  = \"GP_Gen5_4\"\n    }\n  )\n}\n",[75,1067,1068,1073,1077,1081,1086,1091,1095,1099,1104,1109,1114,1118,1123,1128,1133,1138,1142,1147,1152,1157,1162,1167,1171,1176,1181,1185,1190,1195,1199,1204,1208,1212,1216,1220,1224,1228,1232,1236,1240,1245,1250,1255,1259,1264],{"__ignoreMap":77},[809,1069,1070],{"class":811,"line":812},[809,1071,1072],{},"# Migration Azure SQL Serverless\n",[809,1074,1075],{"class":811,"line":818},[809,1076,821],{},[809,1078,1079],{"class":811,"line":824},[809,1080,834],{"emptyLinePlaceholder":833},[809,1082,1083],{"class":811,"line":830},[809,1084,1085],{},"resource \"azurerm_mssql_database\" \"reporting_database\" {\n",[809,1087,1088],{"class":811,"line":837},[809,1089,1090],{},"  name      = \"reporting-database\"\n",[809,1092,1093],{"class":811,"line":843},[809,1094,852],{},[809,1096,1097],{"class":811,"line":849},[809,1098,834],{"emptyLinePlaceholder":833},[809,1100,1101],{"class":811,"line":855},[809,1102,1103],{},"  # Précédent : Provisionné (4 vCores, 24\u002F7, 730 $\u002Fmois)\n",[809,1105,1106],{"class":811,"line":860},[809,1107,1108],{},"  # Optimisé : Serverless (1-4 vCores, ~40% actif, 290 $\u002Fmois)\n",[809,1110,1111],{"class":811,"line":866},[809,1112,1113],{},"  # Réduction de coût : 60% (440 $\u002Fmois, 5 280 $\u002Fan)\n",[809,1115,1116],{"class":811,"line":872},[809,1117,881],{},[809,1119,1120],{"class":811,"line":878},[809,1121,1122],{},"  # Analyse du modèle d'utilisation :\n",[809,1124,1125],{"class":811,"line":884},[809,1126,1127],{},"  # - Actif : Heures ouvrables uniquement (~10 h\u002Fjour)\n",[809,1129,1130],{"class":811,"line":890},[809,1131,1132],{},"  # - Inactif : Nuits et week-ends (60% du temps)\n",[809,1134,1135],{"class":811,"line":896},[809,1136,1137],{},"  # - Cas d'usage : Rapports par lots (démarrage à froid acceptable)\n",[809,1139,1140],{"class":811,"line":902},[809,1141,881],{},[809,1143,1144],{"class":811,"line":908},[809,1145,1146],{},"  # Configuration Serverless :\n",[809,1148,1149],{"class":811,"line":914},[809,1150,1151],{},"  # - Pause automatique après 1 heure d'inactivité\n",[809,1153,1154],{"class":811,"line":920},[809,1155,1156],{},"  # - Min 1 vCore quand actif, max 4 vCores\n",[809,1158,1159],{"class":811,"line":925},[809,1160,1161],{},"  # - Temps de reprise d'environ 2 minutes depuis l'état en pause\n",[809,1163,1164],{"class":811,"line":931},[809,1165,1166],{},"  sku_name = \"GP_S_Gen5_4\"\n",[809,1168,1169],{"class":811,"line":936},[809,1170,834],{"emptyLinePlaceholder":833},[809,1172,1173],{"class":811,"line":942},[809,1174,1175],{},"  min_capacity = 1.0\n",[809,1177,1178],{"class":811,"line":948},[809,1179,1180],{},"  max_capacity = 4.0\n",[809,1182,1183],{"class":811,"line":954},[809,1184,834],{"emptyLinePlaceholder":833},[809,1186,1187],{"class":811,"line":960},[809,1188,1189],{},"  # Pause automatique après 1 heure (60 minutes) d'inactivité\n",[809,1191,1192],{"class":811,"line":966},[809,1193,1194],{},"  auto_pause_delay_in_minutes = 60\n",[809,1196,1197],{"class":811,"line":971},[809,1198,834],{"emptyLinePlaceholder":833},[809,1200,1201],{"class":811,"line":977},[809,1202,1203],{},"  max_size_gb = 100\n",[809,1205,1206],{"class":811,"line":983},[809,1207,834],{"emptyLinePlaceholder":833},[809,1209,1210],{"class":811,"line":989},[809,1211,945],{},[809,1213,1214],{"class":811,"line":995},[809,1215,951],{},[809,1217,1218],{"class":811,"line":1001},[809,1219,957],{},[809,1221,1222],{"class":811,"line":1006},[809,1223,963],{},[809,1225,1226],{"class":811,"line":1012},[809,1227,834],{"emptyLinePlaceholder":833},[809,1229,1230],{"class":811,"line":1018},[809,1231,1009],{},[809,1233,1234],{"class":811,"line":1024},[809,1235,1015],{},[809,1237,1238],{"class":811,"line":1030},[809,1239,1021],{},[809,1241,1242],{"class":811,"line":1036},[809,1243,1244],{},"      \"jetscale:optimized\"     = \"true\"\n",[809,1246,1247],{"class":811,"line":1042},[809,1248,1249],{},"      \"jetscale:compute_model\" = \"serverless\"\n",[809,1251,1252],{"class":811,"line":1048},[809,1253,1254],{},"      \"jetscale:previous_sku\"  = \"GP_Gen5_4\"\n",[809,1256,1257],{"class":811,"line":1054},[809,1258,1045],{},[809,1260,1262],{"class":811,"line":1261},43,[809,1263,1051],{},[809,1265,1267],{"class":811,"line":1266},44,[809,1268,1057],{},[10,1270,1271],{},[28,1272,1273],{},"Exemple : Elastic Pool",[68,1275,1277],{"className":803,"code":1276,"language":805,"meta":77,"style":77},"# Consolidation Azure SQL Elastic Pool\n# Généré par Jetscale le 2024-01-15\n\nresource \"azurerm_mssql_elasticpool\" \"app_pool\" {\n  name                = \"app-elastic-pool\"\n  resource_group_name = var.resource_group_name\n  location            = var.location\n  server_name         = azurerm_mssql_server.example.name\n\n  # Précédent : 12 bases de données S3 individuelles (1200 DTU total, 3 600 $\u002Fmois)\n  # Optimisé : Pool élastique (600 eDTU partagés, 900 $\u002Fmois)\n  # Réduction de coût : 75% (2 700 $\u002Fmois, 32 400 $\u002Fan)\n  #\n  # Analyse :\n  # - Les pics des bases de données individuelles coïncident rarement\n  # - Utilisation simultanée de pointe : ~300 DTU\n  # - Le pool fournit 600 eDTU avec une marge de 2x\n  # - Le partage des ressources élimine le sur-provisionnement\n  sku {\n    name     = \"StandardPool\"\n    tier     = \"Standard\"\n    capacity = 600\n  }\n\n  per_database_settings {\n    min_capacity = 10\n    max_capacity = 100\n  }\n\n  max_size_gb = 750\n\n  tags = merge(\n    var.tags,\n    {\n      \"jetscale:optimized\"         = \"true\"\n      \"jetscale:pool_type\"         = \"consolidation\"\n      \"jetscale:database_count\"    = \"12\"\n      \"jetscale:previous_total_cost\" = \"$3600\"\n    }\n  )\n}\n\n# Déplacer les bases de données vers le pool élastique\nresource \"azurerm_mssql_database\" \"pooled_databases\" {\n  count = 12\n\n  name           = \"app-database-${count.index + 1}\"\n  server_id      = azurerm_mssql_server.example.id\n  elastic_pool_id = azurerm_mssql_elasticpool.app_pool.id\n\n  # Les bases de données partagent maintenant les ressources du pool\n  # Aucun sku_name individuel nécessaire\n\n  tags = var.tags\n}\n",[75,1278,1279,1284,1288,1292,1297,1302,1307,1312,1317,1321,1326,1331,1336,1340,1345,1350,1355,1360,1365,1370,1375,1380,1385,1389,1393,1398,1403,1408,1412,1416,1421,1425,1429,1433,1437,1442,1447,1452,1457,1461,1465,1469,1473,1478,1483,1489,1494,1500,1506,1512,1517,1523,1529,1534,1540],{"__ignoreMap":77},[809,1280,1281],{"class":811,"line":812},[809,1282,1283],{},"# Consolidation Azure SQL Elastic Pool\n",[809,1285,1286],{"class":811,"line":818},[809,1287,821],{},[809,1289,1290],{"class":811,"line":824},[809,1291,834],{"emptyLinePlaceholder":833},[809,1293,1294],{"class":811,"line":830},[809,1295,1296],{},"resource \"azurerm_mssql_elasticpool\" \"app_pool\" {\n",[809,1298,1299],{"class":811,"line":837},[809,1300,1301],{},"  name                = \"app-elastic-pool\"\n",[809,1303,1304],{"class":811,"line":843},[809,1305,1306],{},"  resource_group_name = var.resource_group_name\n",[809,1308,1309],{"class":811,"line":849},[809,1310,1311],{},"  location            = var.location\n",[809,1313,1314],{"class":811,"line":855},[809,1315,1316],{},"  server_name         = azurerm_mssql_server.example.name\n",[809,1318,1319],{"class":811,"line":860},[809,1320,834],{"emptyLinePlaceholder":833},[809,1322,1323],{"class":811,"line":866},[809,1324,1325],{},"  # Précédent : 12 bases de données S3 individuelles (1200 DTU total, 3 600 $\u002Fmois)\n",[809,1327,1328],{"class":811,"line":872},[809,1329,1330],{},"  # Optimisé : Pool élastique (600 eDTU partagés, 900 $\u002Fmois)\n",[809,1332,1333],{"class":811,"line":878},[809,1334,1335],{},"  # Réduction de coût : 75% (2 700 $\u002Fmois, 32 400 $\u002Fan)\n",[809,1337,1338],{"class":811,"line":884},[809,1339,881],{},[809,1341,1342],{"class":811,"line":890},[809,1343,1344],{},"  # Analyse :\n",[809,1346,1347],{"class":811,"line":896},[809,1348,1349],{},"  # - Les pics des bases de données individuelles coïncident rarement\n",[809,1351,1352],{"class":811,"line":902},[809,1353,1354],{},"  # - Utilisation simultanée de pointe : ~300 DTU\n",[809,1356,1357],{"class":811,"line":908},[809,1358,1359],{},"  # - Le pool fournit 600 eDTU avec une marge de 2x\n",[809,1361,1362],{"class":811,"line":914},[809,1363,1364],{},"  # - Le partage des ressources élimine le sur-provisionnement\n",[809,1366,1367],{"class":811,"line":920},[809,1368,1369],{},"  sku {\n",[809,1371,1372],{"class":811,"line":925},[809,1373,1374],{},"    name     = \"StandardPool\"\n",[809,1376,1377],{"class":811,"line":931},[809,1378,1379],{},"    tier     = \"Standard\"\n",[809,1381,1382],{"class":811,"line":936},[809,1383,1384],{},"    capacity = 600\n",[809,1386,1387],{"class":811,"line":942},[809,1388,998],{},[809,1390,1391],{"class":811,"line":948},[809,1392,834],{"emptyLinePlaceholder":833},[809,1394,1395],{"class":811,"line":954},[809,1396,1397],{},"  per_database_settings {\n",[809,1399,1400],{"class":811,"line":960},[809,1401,1402],{},"    min_capacity = 10\n",[809,1404,1405],{"class":811,"line":966},[809,1406,1407],{},"    max_capacity = 100\n",[809,1409,1410],{"class":811,"line":971},[809,1411,998],{},[809,1413,1414],{"class":811,"line":977},[809,1415,834],{"emptyLinePlaceholder":833},[809,1417,1418],{"class":811,"line":983},[809,1419,1420],{},"  max_size_gb = 750\n",[809,1422,1423],{"class":811,"line":989},[809,1424,834],{"emptyLinePlaceholder":833},[809,1426,1427],{"class":811,"line":995},[809,1428,1009],{},[809,1430,1431],{"class":811,"line":1001},[809,1432,1015],{},[809,1434,1435],{"class":811,"line":1006},[809,1436,1021],{},[809,1438,1439],{"class":811,"line":1012},[809,1440,1441],{},"      \"jetscale:optimized\"         = \"true\"\n",[809,1443,1444],{"class":811,"line":1018},[809,1445,1446],{},"      \"jetscale:pool_type\"         = \"consolidation\"\n",[809,1448,1449],{"class":811,"line":1024},[809,1450,1451],{},"      \"jetscale:database_count\"    = \"12\"\n",[809,1453,1454],{"class":811,"line":1030},[809,1455,1456],{},"      \"jetscale:previous_total_cost\" = \"$3600\"\n",[809,1458,1459],{"class":811,"line":1036},[809,1460,1045],{},[809,1462,1463],{"class":811,"line":1042},[809,1464,1051],{},[809,1466,1467],{"class":811,"line":1048},[809,1468,1057],{},[809,1470,1471],{"class":811,"line":1054},[809,1472,834],{"emptyLinePlaceholder":833},[809,1474,1475],{"class":811,"line":1261},[809,1476,1477],{},"# Déplacer les bases de données vers le pool élastique\n",[809,1479,1480],{"class":811,"line":1266},[809,1481,1482],{},"resource \"azurerm_mssql_database\" \"pooled_databases\" {\n",[809,1484,1486],{"class":811,"line":1485},45,[809,1487,1488],{},"  count = 12\n",[809,1490,1492],{"class":811,"line":1491},46,[809,1493,834],{"emptyLinePlaceholder":833},[809,1495,1497],{"class":811,"line":1496},47,[809,1498,1499],{},"  name           = \"app-database-${count.index + 1}\"\n",[809,1501,1503],{"class":811,"line":1502},48,[809,1504,1505],{},"  server_id      = azurerm_mssql_server.example.id\n",[809,1507,1509],{"class":811,"line":1508},49,[809,1510,1511],{},"  elastic_pool_id = azurerm_mssql_elasticpool.app_pool.id\n",[809,1513,1515],{"class":811,"line":1514},50,[809,1516,834],{"emptyLinePlaceholder":833},[809,1518,1520],{"class":811,"line":1519},51,[809,1521,1522],{},"  # Les bases de données partagent maintenant les ressources du pool\n",[809,1524,1526],{"class":811,"line":1525},52,[809,1527,1528],{},"  # Aucun sku_name individuel nécessaire\n",[809,1530,1532],{"class":811,"line":1531},53,[809,1533,834],{"emptyLinePlaceholder":833},[809,1535,1537],{"class":811,"line":1536},54,[809,1538,1539],{},"  tags = var.tags\n",[809,1541,1543],{"class":811,"line":1542},55,[809,1544,1057],{},[14,1546,1548],{"id":1547},"meilleures-pratiques","Meilleures pratiques",[55,1550,1552],{"id":1551},"surveillance-après-les-changements","Surveillance après les changements",[10,1554,1555],{},"Après avoir appliqué les recommandations Jetscale :",[1557,1558,1559,1579,1599],"ol",{},[25,1560,1561,1564,1565],{},[28,1562,1563],{},"Premières 24 heures"," : Surveiller étroitement les métriques clés",[22,1566,1567,1570,1573,1576],{},[25,1568,1569],{},"Utilisation CPU et DTU\u002FvCore",[25,1571,1572],{},"Taux de réussite des connexions",[25,1574,1575],{},"Performance des requêtes (temps d'exécution)",[25,1577,1578],{},"Utilisation du journal de transactions",[25,1580,1581,1584,1585],{},[28,1582,1583],{},"Semaine 1"," : Valider les performances",[22,1586,1587,1590,1593,1596],{},[25,1588,1589],{},"Comparer les temps d'exécution des requêtes",[25,1591,1592],{},"Vérifier les indicateurs de pression sur les ressources",[25,1594,1595],{},"Surveiller les échecs de connexion",[25,1597,1598],{},"Examiner les taux d'erreur de l'application",[25,1600,1601,1604,1605],{},[28,1602,1603],{},"Semaines 2-4"," : Confirmer les économies de coûts",[22,1606,1607,1610,1613],{},[25,1608,1609],{},"Vérifier que la facturation Azure reflète les économies attendues",[25,1611,1612],{},"Vérifier l'absence de frais inattendus",[25,1614,1615],{},"Envisager la capacité réservée pour les charges de travail stables",[55,1617,1619],{"id":1618},"stratégie-de-test","Stratégie de test",[10,1621,1622],{},[28,1623,1624],{},"Tests en pré-production :",[1557,1626,1627,1630,1633,1636],{},[25,1628,1629],{},"Appliquer d'abord les changements à l'environnement dev\u002Fstaging",[25,1631,1632],{},"Exécuter des tests de charge simulant l'utilisation de pointe",[25,1634,1635],{},"Surveiller pendant 48-72 heures sous charge réaliste",[25,1637,1638],{},"Valider les procédures de sauvegarde\u002Frestauration",[10,1640,1641],{},[28,1642,1643],{},"Déploiement en production :",[1557,1645,1646,1649,1652,1655],{},[25,1647,1648],{},"Planifier les changements pendant les fenêtres de maintenance",[25,1650,1651],{},"Utiliser la géo-réplication Azure SQL pour les déploiements blue\u002Fgreen",[25,1653,1654],{},"Avoir un plan de retour arrière prêt",[25,1656,1657],{},"Surveiller activement pendant et après le changement",[55,1659,1661],{"id":1660},"capacité-réservée","Capacité réservée",[10,1663,1664],{},[28,1665,1666],{},"Quand acheter :",[22,1668,1669,1672,1675],{},[25,1670,1671],{},"Bases de données stables et durables (> 1 an)",[25,1673,1674],{},"Après le redimensionnement (ne pas réserver des ressources surdimensionnées)",[25,1676,1677],{},"Jusqu'à 80% d'économies vs paiement à l'utilisation",[10,1679,1680],{},[28,1681,1682],{},"Recommandations Jetscale :",[22,1684,1685,1688,1691],{},[25,1686,1687],{},"Engagement 1 an ou 3 ans",[25,1689,1690],{},"Appliqué automatiquement aux ressources correspondantes",[25,1692,1693],{},"Flexibilité de taille au sein du même niveau de service",[14,1695,1697],{"id":1696},"modèles-doptimisation-courants","Modèles d'optimisation courants",[55,1699,1701],{"id":1700},"modèle-1-base-de-données-premium-sur-provisionnée","Modèle 1 : Base de données Premium sur-provisionnée",[10,1703,1704],{},[28,1705,1706],{},"Symptômes :",[22,1708,1709,1712,1715],{},[25,1710,1711],{},"Niveau Premium avec faible utilisation DTU (\u003C40%)",[25,1713,1714],{},"Fonctionnalités de haute disponibilité non utilisées",[25,1716,1717],{},"Latence plus faible non critique pour l'application",[10,1719,1720],{},[28,1721,1722],{},"Recommandation Jetscale :",[22,1724,1725,1728,1731],{},[25,1726,1727],{},"Rétrograder au niveau Standard",[25,1729,1730],{},"Économies typiques : 60-70%",[25,1732,1733],{},"Risque : Faible (vérifier les exigences de latence)",[55,1735,1737],{"id":1736},"modèle-2-bases-de-données-de-développement-inactives","Modèle 2 : Bases de données de développement inactives",[10,1739,1740],{},[28,1741,1706],{},[22,1743,1744,1747,1750],{},[25,1745,1746],{},"Bases de données utilisées uniquement pendant les heures ouvrables",[25,1748,1749],{},"Aucune activité la nuit et les week-ends",[25,1751,1752],{},"Charges de travail de développement ou de rapports",[10,1754,1755],{},[28,1756,1722],{},[22,1758,1759,1762,1765],{},[25,1760,1761],{},"Migrer vers le niveau de calcul Serverless",[25,1763,1764],{},"Économies typiques : 50-80%",[25,1766,1767],{},"Risque : Très faible (utilisation non continue)",[55,1769,1771],{"id":1770},"modèle-3-plusieurs-petites-bases-de-données","Modèle 3 : Plusieurs petites bases de données",[10,1773,1774],{},[28,1775,1706],{},[22,1777,1778,1781,1784],{},[25,1779,1780],{},"Nombreuses bases de données avec des modèles d'utilisation similaires",[25,1782,1783],{},"Les pics de bases de données individuelles ne coïncident pas",[25,1785,1786],{},"Sur-provisionnement dû à la capacité de pointe par base de données",[10,1788,1789],{},[28,1790,1722],{},[22,1792,1793,1796,1799],{},[25,1794,1795],{},"Consolider dans un Elastic Pool",[25,1797,1798],{},"Économies typiques : 60-75%",[25,1800,1801],{},"Risque : Faible (le partage des ressources réduit le gaspillage)",[55,1803,1805],{"id":1804},"modèle-4-sur-provisionnement-business-critical","Modèle 4 : Sur-provisionnement Business Critical",[10,1807,1808],{},[28,1809,1706],{},[22,1811,1812,1815,1818],{},[25,1813,1814],{},"Niveau Business Critical sans exigences HA",[25,1816,1817],{},"Réplicas secondaires lisibles non utilisés",[25,1819,1820],{},"Performance SSD local non requise",[10,1822,1823],{},[28,1824,1722],{},[22,1826,1827,1830,1833],{},[25,1828,1829],{},"Rétrograder à General Purpose",[25,1831,1832],{},"Économies typiques : 60% (différence de prix 2,5x)",[25,1834,1835],{},"Risque : Moyen (vérifier la tolérance à la latence)",[14,1837,1839],{"id":1838},"dépannage","Dépannage",[55,1841,1843],{"id":1842},"préoccupations-concernant-les-recommandations","Préoccupations concernant les recommandations",[10,1845,1846],{},[28,1847,1848],{},"Q : La rétrogradation impactera-t-elle les performances ?",[10,1850,1851],{},"R : Jetscale maintient une marge de 2-3x au-dessus de l'utilisation de pointe. Nous analysons :",[22,1853,1854,1857,1859,1861],{},[25,1855,1856],{},"Utilisation DTU\u002FvCore P95 et P99 sur 14 jours",[25,1858,648],{},[25,1860,651],{},[25,1862,1863],{},"Modèles de pics historiques",[10,1865,1866],{},"Les recommandations ne procèdent que si le risque de performance est Faible ou Très Faible.",[10,1868,1869],{},[28,1870,1871],{},"Q : Qu'en est-il des délais de démarrage à froid serverless ?",[10,1873,1874],{},"R : Les bases de données serverless reprennent en environ 2 minutes depuis l'état en pause. Idéal pour :",[22,1876,1877,1880,1883,1886],{},[25,1878,1879],{},"Traitement par lots et rapports",[25,1881,1882],{},"Développement et tests",[25,1884,1885],{},"Applications tolérantes aux démarrages à froid occasionnels",[25,1887,1888],{},"À éviter pour : API en temps réel, applications toujours actives",[10,1890,1891],{},[28,1892,1893],{},"Q : Puis-je tester avant de m'engager ?",[10,1895,1896],{},"R : Oui ! Appliquez d'abord les changements à dev\u002Fstaging :",[1557,1898,1899,1902,1905,1908,1911],{},[25,1900,1901],{},"Jetscale génère Terraform pour tous les environnements",[25,1903,1904],{},"Testez en non-production pendant 48-72 heures",[25,1906,1907],{},"Surveillez les métriques de performance",[25,1909,1910],{},"Retour arrière si nécessaire (simple changement de niveau)",[25,1912,1913],{},"Appliquez en production une fois validé",[55,1915,1917],{"id":1916},"problèmes-de-performance-après-optimisation","Problèmes de performance après optimisation",[10,1919,1920],{},[28,1921,1922],{},"Symptôme : Latence accrue des requêtes",[10,1924,1925],{},"Causes possibles :",[22,1927,1928,1931,1934],{},[25,1929,1930],{},"Capacité DTU\u002FvCore insuffisante",[25,1932,1933],{},"Limitation des E\u002FS de stockage",[25,1935,1936],{},"Épuisement du pool de connexions",[10,1938,1939],{},[28,1940,1941],{},"Résolution :",[1557,1943,1944,1952,1955,1958],{},[25,1945,1946,1947,1949,1950],{},"Vérifier les métriques ",[75,1948,512],{}," et ",[75,1951,518],{},[25,1953,1954],{},"Examiner les journaux de requêtes lentes",[25,1956,1957],{},"Augmenter le niveau\u002Ftaille d'un cran si nécessaire",[25,1959,1960],{},"Envisager Query Performance Insights pour l'optimisation",[10,1962,1963],{},[28,1964,1965],{},"Symptôme : Échecs de connexion",[10,1967,1925],{},[22,1969,1970,1973,1976],{},[25,1971,1972],{},"Base de données serverless en état en pause",[25,1974,1975],{},"Paramètres du pool de connexions nécessitent un ajustement",[25,1977,1978],{},"Limites de ressources dépassées",[10,1980,1981],{},[28,1982,1941],{},[1557,1984,1985,1988,1993,1996],{},[25,1986,1987],{},"Si serverless : Réduire le délai de pause automatique ou passer en provisionné",[25,1989,1990,1991],{},"Vérifier la métrique ",[75,1992,534],{},[25,1994,1995],{},"Examiner la configuration du pool de connexions",[25,1997,1998,1999,2001],{},"Surveiller ",[75,2000,540],{}," pour la capacité",[14,2003,2005],{"id":2004},"considérations-de-sécurité","Considérations de sécurité",[55,2007,2009],{"id":2008},"chiffrement","Chiffrement",[10,2011,2012],{},"Les recommandations Jetscale préservent :",[22,2014,2015,2018,2021,2024],{},[25,2016,2017],{},"Paramètres Transparent Data Encryption (TDE)",[25,2019,2020],{},"Configuration Always Encrypted",[25,2022,2023],{},"Exigences de connexion SSL\u002FTLS",[25,2025,2026],{},"Chiffrement au repos et en transit",[55,2028,2030],{"id":2029},"conformité","Conformité",[10,2032,2033],{},"Les changements de configuration maintiennent la conformité :",[22,2035,2036,2039,2042,2045],{},[25,2037,2038],{},"Paramètres de géo-réplication préservés",[25,2040,2041],{},"Politiques de rétention de sauvegarde inchangées",[25,2043,2044],{},"Paramètres de détection des menaces et d'audit maintenus",[25,2046,2047],{},"Règles de réseau virtuel et règles de pare-feu préservées",[14,2049,2051],{"id":2050},"limitations","Limitations",[10,2053,2054],{},[28,2055,2056],{},"Non pris en charge actuellement :",[22,2058,2059,2062,2065,2068],{},[25,2060,2061],{},"Recommandations d'achat de capacité réservée",[25,2063,2064],{},"Optimisation de la réplication inter-régions",[25,2066,2067],{},"Optimisation de la politique de rétention de sauvegarde",[25,2069,2070],{},"Recommandations d'optimisation des index et des requêtes",[10,2072,2073,2076],{},[28,2074,2075],{},"Feuille de route :","\nCes fonctionnalités sont prévues pour les versions futures. Actuellement, Jetscale se concentre sur l'optimisation du niveau de service et du calcul.",[14,2078,2080],{"id":2079},"intégration-api","Intégration API",[10,2082,2083],{},"Jetscale fournit un accès API pour l'optimisation programmatique :",[68,2085,2089],{"className":2086,"code":2087,"language":2088,"meta":77,"style":77},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Lister les recommandations Azure SQL\nGET \u002Fapi\u002Fv1\u002Frecommendations?resource_type=azure-sql\n\n# Obtenir les détails d'une recommandation spécifique\nGET \u002Fapi\u002Fv1\u002Frecommendations\u002F{recommendation_id}\n\n# Approuver une recommandation (génère Terraform)\nPOST \u002Fapi\u002Fv1\u002Frecommendations\u002F{recommendation_id}\u002Fapprove\n\n# Récupérer le Terraform généré\nGET \u002Fapi\u002Fv1\u002Frecommendations\u002F{recommendation_id}\u002Fterraform\n","bash",[75,2090,2091,2097,2107,2111,2116,2123,2127,2132,2140,2144,2149],{"__ignoreMap":77},[809,2092,2093],{"class":811,"line":812},[809,2094,2096],{"class":2095},"sHwdD","# Lister les recommandations Azure SQL\n",[809,2098,2099,2103],{"class":811,"line":818},[809,2100,2102],{"class":2101},"sBMFI","GET",[809,2104,2106],{"class":2105},"sfazB"," \u002Fapi\u002Fv1\u002Frecommendations?resource_type=azure-sql\n",[809,2108,2109],{"class":811,"line":824},[809,2110,834],{"emptyLinePlaceholder":833},[809,2112,2113],{"class":811,"line":830},[809,2114,2115],{"class":2095},"# Obtenir les détails d'une recommandation spécifique\n",[809,2117,2118,2120],{"class":811,"line":837},[809,2119,2102],{"class":2101},[809,2121,2122],{"class":2105}," \u002Fapi\u002Fv1\u002Frecommendations\u002F{recommendation_id}\n",[809,2124,2125],{"class":811,"line":843},[809,2126,834],{"emptyLinePlaceholder":833},[809,2128,2129],{"class":811,"line":849},[809,2130,2131],{"class":2095},"# Approuver une recommandation (génère Terraform)\n",[809,2133,2134,2137],{"class":811,"line":855},[809,2135,2136],{"class":2101},"POST",[809,2138,2139],{"class":2105}," \u002Fapi\u002Fv1\u002Frecommendations\u002F{recommendation_id}\u002Fapprove\n",[809,2141,2142],{"class":811,"line":860},[809,2143,834],{"emptyLinePlaceholder":833},[809,2145,2146],{"class":811,"line":866},[809,2147,2148],{"class":2095},"# Récupérer le Terraform généré\n",[809,2150,2151,2153],{"class":811,"line":872},[809,2152,2102],{"class":2101},[809,2154,2155],{"class":2105}," \u002Fapi\u002Fv1\u002Frecommendations\u002F{recommendation_id}\u002Fterraform\n",[10,2157,2158,2159,2164],{},"Consultez notre ",[2160,2161,2163],"a",{"href":2162},"\u002Ffr-ca\u002Fdocs\u002Fapi-reference","Documentation API"," pour la référence complète.",[14,2166,2168],{"id":2167},"support","Support",[10,2170,2171],{},"Besoin d'aide pour l'optimisation Azure SQL ?",[22,2173,2174,2184,2193],{},[25,2175,2176,2179,2180],{},[28,2177,2178],{},"Email"," : ",[2160,2181,2183],{"href":2182},"mailto:support@jetscale.ai","support@jetscale.ai",[25,2185,2186,2179,2189],{},[28,2187,2188],{},"Documentation",[2160,2190,2192],{"href":2191},"\u002Ffr-ca\u002Fdocs\u002Ffaq","FAQ",[25,2194,2195,2179,2198],{},[28,2196,2197],{},"GitHub Issues",[2160,2199,2203],{"href":2200,"rel":2201},"https:\u002F\u002Fgithub.com\u002FJetscale-ai\u002Fjetscale-docs\u002Fissues",[2202],"nofollow","Signaler un problème",[2205,2206],"hr",{},[10,2208,2209],{},[28,2210,2211],{},"Documentation connexe :",[22,2213,2214,2220],{},[25,2215,2216],{},[2160,2217,2219],{"href":2218},"\u002Ffr-ca\u002Fdocs\u002Fservices\u002Fazure-vm","Optimisation Azure VM",[25,2221,2222],{},[2160,2223,2225],{"href":2224},"\u002Ffr-ca\u002Fdocs\u002Fservices\u002Frds","Optimisation RDS",[2227,2228,2229],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}",{"title":77,"searchDepth":818,"depth":818,"links":2231},[2232,2233,2238,2243,2249,2254,2260,2264,2268,2269,2270],{"id":16,"depth":818,"text":17},{"id":52,"depth":818,"text":53,"children":2234},[2235,2236,2237],{"id":57,"depth":824,"text":58},{"id":111,"depth":824,"text":112},{"id":152,"depth":824,"text":153},{"id":192,"depth":818,"text":193,"children":2239},[2240,2241,2242],{"id":196,"depth":824,"text":197},{"id":301,"depth":824,"text":302},{"id":426,"depth":824,"text":427},{"id":491,"depth":818,"text":492,"children":2244},[2245,2246,2247,2248],{"id":495,"depth":824,"text":496},{"id":615,"depth":824,"text":616},{"id":698,"depth":824,"text":699},{"id":791,"depth":824,"text":792},{"id":1547,"depth":818,"text":1548,"children":2250},[2251,2252,2253],{"id":1551,"depth":824,"text":1552},{"id":1618,"depth":824,"text":1619},{"id":1660,"depth":824,"text":1661},{"id":1696,"depth":818,"text":1697,"children":2255},[2256,2257,2258,2259],{"id":1700,"depth":824,"text":1701},{"id":1736,"depth":824,"text":1737},{"id":1770,"depth":824,"text":1771},{"id":1804,"depth":824,"text":1805},{"id":1838,"depth":818,"text":1839,"children":2261},[2262,2263],{"id":1842,"depth":824,"text":1843},{"id":1916,"depth":824,"text":1917},{"id":2004,"depth":818,"text":2005,"children":2265},[2266,2267],{"id":2008,"depth":824,"text":2009},{"id":2029,"depth":824,"text":2030},{"id":2050,"depth":818,"text":2051},{"id":2079,"depth":818,"text":2080},{"id":2167,"depth":818,"text":2168},[2272,2273,2274],"optimization-methodology","provider-service-support","savings-methodology","Jetscale fournit une optimisation des coûts pilotée par IA pour Azure SQL Database, incluant les bases de données uniques, les pools élastiques et Azure SQL Managed Instance....","md","fr-ca",{},[],"Cloud Optimization","\u002Ffr-ca\u002Fdocs\u002Fservices\u002Fazure-sql","legacy-import",{"title":5,"description":2275},[],"fr-ca\u002Fdocs\u002F5.services\u002F7.azure-sql","high","services\u002Fazure-sql","PNEMeIChM2UrCF0kq2THFukfADMczTzyuSUkPSQrXfQ",[2290],{"title":2291,"path":2292,"stem":2277,"children":2293,"page":2383},"Fr Ca","\u002Ffr-ca",[2294],{"title":2295,"path":2296,"stem":2297,"children":2298},"Documentation Jetscale","\u002Ffr-ca\u002Fdocs","fr-ca\u002Fdocs\u002Findex",[2299,2300,2304,2308,2312,2316,2338,2342,2374,2378,2381],{"title":2295,"path":2296,"stem":2297},{"title":2301,"path":2302,"stem":2303},"Démarrage avec Jetscale","\u002Ffr-ca\u002Fdocs\u002Fgetting-started","fr-ca\u002Fdocs\u002F1.getting-started",{"title":2305,"path":2306,"stem":2307},"Guide de Configuration AWS","\u002Ffr-ca\u002Fdocs\u002Faws-setup","fr-ca\u002Fdocs\u002F2.aws-setup",{"title":2309,"path":2310,"stem":2311},"Guide de Configuration Azure","\u002Ffr-ca\u002Fdocs\u002Fazure-setup","fr-ca\u002Fdocs\u002F3.azure-setup",{"title":2313,"path":2314,"stem":2315},"Comment fonctionne Jetscale","\u002Ffr-ca\u002Fdocs\u002Fhow-it-works","fr-ca\u002Fdocs\u002F4.how-it-works",{"title":2317,"path":2318,"stem":2319,"children":2320},"Intégrations","\u002Ffr-ca\u002Fdocs\u002Fintegrations","fr-ca\u002Fdocs\u002F4.integrations\u002Findex",[2321,2322,2326,2330,2334],{"title":2317,"path":2318,"stem":2319},{"title":2323,"path":2324,"stem":2325},"Intégration GitHub","\u002Ffr-ca\u002Fdocs\u002Fintegrations\u002Fgithub","fr-ca\u002Fdocs\u002F4.integrations\u002F1.github",{"title":2327,"path":2328,"stem":2329},"Intégration Jira","\u002Ffr-ca\u002Fdocs\u002Fintegrations\u002Fjira","fr-ca\u002Fdocs\u002F4.integrations\u002F2.jira",{"title":2331,"path":2332,"stem":2333},"Intégration Slack","\u002Ffr-ca\u002Fdocs\u002Fintegrations\u002Fslack","fr-ca\u002Fdocs\u002F4.integrations\u002F3.slack",{"title":2335,"path":2336,"stem":2337},"Intégration Bitbucket","\u002Ffr-ca\u002Fdocs\u002Fintegrations\u002Fbitbucket","fr-ca\u002Fdocs\u002F4.integrations\u002F4.bitbucket",{"title":2339,"path":2340,"stem":2341},"Analyse Propulsée par l'IA","\u002Ffr-ca\u002Fdocs\u002Fai-analysis","fr-ca\u002Fdocs\u002F5.ai-analysis",{"title":2343,"path":2344,"stem":2345,"children":2346},"Services pris en charge","\u002Ffr-ca\u002Fdocs\u002Fservices","fr-ca\u002Fdocs\u002F5.services\u002Findex",[2347,2348,2352,2356,2360,2364,2366,2370,2371],{"title":2343,"path":2344,"stem":2345},{"title":2349,"path":2350,"stem":2351},"Optimisation EBS","\u002Ffr-ca\u002Fdocs\u002Fservices\u002Febs","fr-ca\u002Fdocs\u002F5.services\u002F1.ebs",{"title":2353,"path":2354,"stem":2355},"Optimisation EC2","\u002Ffr-ca\u002Fdocs\u002Fservices\u002Fec2","fr-ca\u002Fdocs\u002F5.services\u002F2.ec2",{"title":2357,"path":2358,"stem":2359},"Optimisation EKS","\u002Ffr-ca\u002Fdocs\u002Fservices\u002Feks","fr-ca\u002Fdocs\u002F5.services\u002F3.eks",{"title":2361,"path":2362,"stem":2363},"Optimisation ElastiCache","\u002Ffr-ca\u002Fdocs\u002Fservices\u002Felasticache","fr-ca\u002Fdocs\u002F5.services\u002F4.elasticache",{"title":2225,"path":2224,"stem":2365},"fr-ca\u002Fdocs\u002F5.services\u002F5.rds",{"title":2367,"path":2368,"stem":2369},"Optimisation S3","\u002Ffr-ca\u002Fdocs\u002Fservices\u002Fs3","fr-ca\u002Fdocs\u002F5.services\u002F6.s3",{"title":5,"path":2281,"stem":2285},{"title":2372,"path":2218,"stem":2373},"Optimisation des machines virtuelles Azure","fr-ca\u002Fdocs\u002F5.services\u002F8.azure-vm",{"title":2375,"path":2376,"stem":2377},"Flux de Recommandations","\u002Ffr-ca\u002Fdocs\u002Frecommendation-workflow","fr-ca\u002Fdocs\u002F6.recommendation-workflow",{"title":2379,"path":2162,"stem":2380},"Référence API","fr-ca\u002Fdocs\u002F7.api-reference",{"title":2192,"path":2191,"stem":2382},"fr-ca\u002Fdocs\u002F8.faq",false,[2385,2387],{"title":2367,"path":2368,"stem":2369,"description":2386,"children":-1},"Jetscale fournit une optimisation des coûts pilotée par l'IA pour les buckets Amazon S3 . Nos agents spécialisés analysent vos charges de travail de stockage pour identifier...",{"title":2372,"path":2218,"stem":2373,"description":2388,"children":-1},"Jetscale offre une optimisation des coûts basée sur l'IA pour les machines virtuelles Azure. Nos agents spécialisés analysent vos charges de travail de calcul pour identifier...",1788219271171]