Cet article est la traduction d'un article de Greg Rahn publié sur son blog. L'article original en anglais est: The Core Performance Fundamentals Of Oracle Data Warehousing – Set Processing vs Row Processing. Cet article fait partie d'une série sur les principes fondamentaux des datawarehouse, mais s'applique à tous les traitements de type batch.
Durant 6 ans à faire des Proof Of Concept et des Benchmarks sur des datawarehouse pour les clients, il y a un domaine qui s'est toujours montré problématique: les traitements par lots (batch). La plupart du temps, ces batchs prennent la forme de procédures et packages PL/SQL, qui font du chargement de donnée, de la transformation, du traitement, ou quelque chose de similaire.
La raison pour laquelle c'est souvent problématique, c'est que les développeurs y ont codé en dur la lenteur du traitement. Je suis certain que les développeurs ne savaient pas qu'ils faisaient cela, lorsqu'ils ont codé leur PL/SQL, mais en tout cas, c'est ce qui est arrivé.
Alors comment ont-ils codé 'en dur' cette lenteur en PL/SQL ?
Vous devez être identifié pour poster un commentaire.
Cet article est la traduction d'une réponse de Tom Kyte sur son site AskTom décrivant rapidement les points à considérer lorsqu'on a une table a fort volume transactionnel et forte concurrence (L'article original en anglais se trouve ici).
Que puis-je faire du point de vue du design physique pour maximiser les performances et la concurrence lorsque une table va être la cible de centaines de milliers de select et probablement autour de 80000 insert, autant d'update et delete par heure, de manière transactionnels sur une base OLTP.
Ces débits de insert/update/delete sont juste un exemple. En réalité ils seront beaucoup plus élevés, même si on ne sait pas à quel point ils seront plus élevés car nous sommes toujours en phase de design.
Je suis à la recherche de quelques lignes directrices que je pourrais essayer sur mon application.
On pourrait écrire un livre là dessus :) Le mien est 'Expert Oracle Database Architecture' et vous serez surement intéressé par de nombreux chapitres, plus particulièrement ceux sur les types de données, les tables et les index.
En bref, vous voulez comprendre comment fonctionnent les choses à un certain niveau. Le concepts guide de la documentation Oracle et un bon point de départ. Si vous aimez ma manière d'écrire, vous pouvez commencer aussi par 'Expert Oracle Database Architecture'.
Vous aurez besoin de réfléchir à la concurrence, aux choses comme ASSM, le partitionnement, voire les technique de regroupement de données (clustering): IOT, hash/btree clusters.
Vous aurez besoin de réfléchir sur l'archivage des données dans le temps.
Vous devrez peut-être envisager la nécessité de faire une réorganisation des tables à l'occasion, et donc prévoir le design qui permettra de le faire: à nouveau le partitionnement.
Vous devez être identifié pour poster un commentaire.
, Pachot Franck Cet article est la traduction d'un article de Jonathan Lewis. L'article original en anglais se trouve ici. J'ai cependant traduit l'exemple de requête dans une syntaxe Oracle, et l'idée d'index cluster de SQL Server correspond à celle d'IOT sous Oracle.
Jonathan Lewis décrit ici une démarche visuelle pour comprendre une requête SQL en faisant un schéma des tables impliquées.
C'est parfois intéressant de s'éloigner du clavier lorsqu'on se bat avec une requête peu performante et assez complexe, et de prendre un papier et un crayon à la place. En faisant un schéma qui montre les tables impliquées, les jointures, les volumes de données manipulées, et les indexes, vous pourrez comparer plus facilement l'efficacité des différents chemins d'exécution que la requête peut prendre pour passer d'une table à une autre.
Vous devez être identifié pour poster un commentaire.
Traduction en français d'articles d'experts a propos des concepts avancés d'Oracle.
Traduits par Franck Pachot
contact@pachot.net
| Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Copyright © 2000-2012 - www.developpez.com