web-dev-qa-db-fra.com

OLAP ou OLATP - Comment déterminer

J'ai SQL Express Server avec une base de données utilisée par une application. J'essaie d'optimiser la base de données mais je ne sais pas si le DB est OLTP ou OLAP.

Il n'y a pas de serveur d'analyse installé, le DB est à l'intérieur de l'instance SQL Server, il devrait donc être OLTP, mais lorsque j'exécute la ration de lecture/écriture sur la DB, j'ai ce qui suit:

          Reads    Writes    Read%   Write %

DB file   400 000   75 000   85%     15%

DB log        250   30 000    1%     99%

Standard OLTP DB devrait avoir plus de lecture que d'écrit, non? Cela me fait suspecter que c'est peut-être OLAP DB.

Je demande à cela concernant l'utilisation de technologies hyperthreading, de réglage maxDop et de configurer le cache comme étant écrit ou rétablir entre autres choses.

La requête que j'utilise est comme suit:

SELECT DB_NAME(DB_ID()) AS [Database Name] ,
[file_id] , num_of_reads , num_of_writes , num_of_bytes_read , num_of_bytes_written ,
CAST(100. * num_of_reads / ( num_of_reads + num_of_writes ) AS DECIMAL(10, 1)) AS [# Reads Pct] ,
CAST(100. * num_of_writes / ( num_of_reads + num_of_writes ) AS DECIMAL(10,1)) AS [# Write Pct] ,
CAST(100. * num_of_bytes_read / ( num_of_bytes_read + num_of_bytes_written ) AS DECIMAL(10, 1)) AS [Read Bytes Pct] ,
CAST(100. * num_of_bytes_written / ( num_of_bytes_read + num_of_bytes_written ) AS DECIMAL(10,1)) AS [Written Bytes Pct]
FROM sys.dm_io_virtual_file_stats(DB_ID(), NULL) ;

Des pensées de DBAS seniors?

3
Atapi

D'une perspective DBA, la différence de clé entre OLAP et OLTP _ est la méthode de syntonisation que vous appliquez sur les requêtes. Le ratio de lecture/écriture ne vous dit pas vraiment quelque chose d'utile.

J'ai un petit "quadrant magique" que j'utilise pour illustrer la différence (dans votre cas, envisager BI/DW et l'ETL la même chose que OLAP):

WorkLoad Categories

Fondamentalement, si vous devez toucher beaucoup de données pour produire des résultats de la requête, vous êtes OLAP. Converse Si vous pouvez vous éloigner de très peu de données pour produire des valeurs de retour, vous êtes OLTP.

Évidemment, si vous avez de mauvaises stratégies d'indexation, alors OLTP _ peut finir par ressembler à OLAP - simplement parce que vous finissez par faire des analyses de table tout le temps. Un bon moyen de faire cette distinction consiste à examiner la quantité de données devant être touchées par les 10 premières requêtes les plus importantes du système - quelle que soit la qualité de votre stratégie d'indexation.

Une fois que vous avez réglé sur la majorité de votre charge de travail, vous pouvez commencer à appliquer des techniques de réglage spécifiques de charge de travail. Voici quelques-unes des trucs spécifiques de la charge de travail que vous pourriez envisager (toujours adapter à votre charge de travail spécifique)

OLAP :

  • Préférer les jointures de hasch
  • Optimiser la vitesse de balayage de la table (généralement en posant des données pour des E/S séquentielles)
  • La vue globale est souvent meilleure que les index
  • Les index de la colonne de colonne sont meilleurs que les arbres B
  • E/S séquentiel
  • Dé-normaliser agressivement
  • Utiliser hautes maxdop
  • Optimiser le réseau pour la bande passante

OLTP :

  • Préférer les jointures de boucle
  • Optimiser la recherche de l'index (il doit toujours y avoir un chemin d'indexation des données)
  • Rarement agrégé
  • Index b-arbres
  • E/S aléatoire
  • Gardez la base de données dans 3NF
  • Utiliser maxdop 1
  • Optimiser le réseau pour la latence
15
Thomas Kejser