2017-10-17 22 views
1

Les bases de données sont généralement un stockage pour la plupart des applications. Notre société effectue également beaucoup de calculs et de manipulations de données avec ces données quotidiennement.Fractionnement de base de données SQL Server par objectif

Dès que nous obtenons de plus en plus de données, la génération de données est devenue un problème qui prend trop de temps. Et je pense que cela peut donner un sens à la base de données séparée à au moins deux:

  • pour stocker des données en mettant l'accent sur les performances de lecture/écriture;

  • pour les calculs mettant l'accent sur les performances d'agrégation de données.

Est-ce que quelqu'un a une expérience similaire et peut dire si cette idée est bonne et quelles seront les différences de conception pour les deux points mentionnés?

Peut-être que cela vaut la peine de chercher une solution noSQL pour calculer des données, par ex. bases de données en mémoire?

+1

Jetez un oeil à SQL SSAS pour le calcul et aggragation – RegBes

+0

@RegBes vous parlez d'ajouter des calculs de mesure? Est-ce plus rapide? Je pourrais essayer cela ... – Almazini

+0

@RegBes pas sûr si cela va fonctionner .. comme ne pas avoir beaucoup d'expérience avec ça. Il y a quelques dizaines d'étapes de calcul dans notre génération. Donc, je vais devoir créer une chaîne de mesures de calage qui dépend de la précédente? – Almazini

Répondre

1

il peut donner un sens à la base de données séparée à au moins deux

Si les bases de données sont différents disques (avec des broches différentes), il peut aider sinon vous obtenez aucun gain car le disque IO est partagé entre ces bases de données.

Pour les meilleures pratiques, lisez Storage Top 10 Best Practices

Peut-être il vaut la peine de chercher une solution NoSQL pour le calcul des données par exemple bases de données en mémoire?

Pas besoin d'aller à la solution NoSQL, vous pouvez utiliser en mémoire des tables en mémoire OLTP peut améliorer considérablement les performances de traitement des transactions, la charge de données et des scénarios de données transitoires.

Pour plus de détails, In-Memory OLTP (In-Memory Optimization)

Autres stratégies

1) tempdb Tune

Tempdb est commun pour toutes les bases de données et fortement utilisées dans les calculs.

Une approche plus pragmatique consiste à avoir un mappage 1: 1 entre les fichiers et les processeurs logiques (cœurs) jusqu'à huit.

pour plus de détails: SQL Server TempDB Usage, Performance, and Tuning Tips

2) Évaluer l'espérance de vie (PLE) contre et prendre des mesures pour l'amélioration

Pour évaluer le cache de données, exécutez la requête suivante

SELECT [object_name], 
    [counter_name], 
    [cntr_value] FROM sys.dm_os_performance_counters 
    WHERE [object_name] LIKE '%Manager%' 
    AND [counter_name] = 'Page life expectancy' 

La valeur recommandée du compteur PLE (en secondes) est supérieur à:

 total_memory_dedicated_for_sql_server/4 * 300 

L'espérance de vie de page est le nombre de secondes qu'une page restera dans le pool de mémoire tampon sans références. En termes simples, si votre page reste plus longtemps dans le pool de mémoire tampon (zone du cache mémoire), votre PLE est plus élevé, ce qui améliore les performances car chaque fois qu'une requête arrive, il y a de fortes chances qu'elle trouve ses données dans le cache. le disque dur pour lire les données.

Si PLE ne suffit pas Augmentez la mémoire et ajustez les index et les statistiques.

3) Utiliser des disques SSD

Avec le coût des disques d'état solide (SSD) en baisse, utilisez les disques SSD comme un deuxième niveau de cache.

4) Utiliser RAID 5 pour les bases de données; et RAID 10 pour les journaux de transactions et tempdb.

En général, le jeu d'optimiseur SQL déplace les données du disque (faible vitesse) vers le cache (mémoire haute vitesse).

Augmenter la mémoire et améliorer la vitesse diskio, vous gagnez haute performance

+0

Merci M.Hassan pour une si grande réponse! va essayer toutes vos recommandations. Vérification comme acceptée – Almazini

+0

Bienvenue et bonne journée. –