Bonjour à tous,
c'est sous ce ciel menaçant que je prends ma plume pour me lancer dans un test que je voulais refaire depuis déjà quelque temps: l'incidence du choix de type de file system pour implémenter nos chunks Informix Dynamic Server, dans notre cas sur Linux.
Comme vous le savez sans doute, le raw device est depuis quelque temps une technologie obsolète sur la plupart des distributions Linux. Fait typique du conflit d'intérêts entre les éditeurs de base de données qui préconisent son utilisation,et les éditeurs d'OS et fabricants de hardware qui vont dans le sens contraire.
La manière d'implémenter des chunks sous IDS n'est pas sans effet, dans la mesure où elle impacte directement la performance d'entrées-sorties, donc la performance globale. Pour rappel, il est toujours bon de répartir au maximum les données sur le plus grand nombre possible de disque, et d'en maîtriser la disposition physique.
C'est pour celà qu'il est préférable d'éviter de créer les chunks sur des disque gérés de façon sans doute sécurisée ( RAID 0/1, RAID 5, file system journalisé etc..), mais qui vont coûter cher en termes de performance.
A priori, il est déjà inutile de sécuriser les dbspaces de données, sauf si vos bases de données ne sont pas journalisées ou si vous ne sauvegardez pas vos logical logs. Dans ces deux cas, il est probablement urgent de réviser votre stratégie sauf si la perte d'une journée de travail ou plus ne cause pas de problème.
Question sécurité de vos données, IDS est très bien fait. En "backupant" les logical logs en continu sur un device externe, et bien sur en faisant régulièrement vos sauvegardes avec ontape ou onbar, vous pouvez affronter un crash total avec un indice de confiance élevé quant à la pérennité de votre emploi.
Le gros intérêt de ce système est que IDS garantit la cohérence des données ( par le biais des transactions), et que la phase de restauration d'une instance se base sur ces mêmes transactions pour restaurer les données. L'intervalle effectif entre chaque backup de logical log sur une device externe est donc important, puisqu'il déterminera combien de temps de travail pour pouvez perdre en cas de crash de tous les disques de l'instance.
Bref, il est inutile de sécuriser vos file system hôtes de vos données, cela ne sert pas à grand chose, sauf éventuellement pour le rootdbs et/ou le dbspace contenant physical et logical logs pour garantir la disponibilité ( RAID 0/1 par exemple ).
Pour les dbspaces de données, je me suis donc livré à un exercice comparatif, qui a consisté à effectuer le dbimport d'une base de données de taille réduite ( 1.7 Gb), mais à indexation très complexe.
Le plan de test était le suivant:
1) création du dbspace sur sur un file system linux ext4 ( journalisé ), avec le paramètre onconfig DIRECT_IO à 0, puis dbimport dans une base non journalisée
2)création du dbspace sur sur un file system linux ext4 ( journalisé ), avec le paramètre onconfig DIRECT_IO à 1, puis dbimport dans une base non journalisée
3)création du dbspace sur sur un file system linux ext2 ( non journalisé ), avec le paramètre onconfig DIRECT_IO à 0, puis dbimport dans une base non journalisée
4)création du dbspace sur sur un file system linux ext2 ( non journalisé ), avec le paramètre onconfig DIRECT_IO à 1, puis dbimport dans une base non journalisée.
Je vois pointer la question: "qu'est-ce que DIRECT_IO ". C'est un paramètre onconfig qui permet de passer outre la couche de gestion des file systems, de telle sorte qu'IDS écrit et lit en utilisant le Kernel IO, offrant donc pratiquement les mêmes avantages que si l'on utilisait des raw devices, à savoir sécurité d'écriture ( c'est IDS qui écrit dans le cooked file, pas le file system ), et un gain de performance variable en IO. Ce paramètre est disponible à partir de la Growth Edition,et malheureusement pas sur Innovator-C Edition :-(
faisons court:
test 1: durée du traitement = 91m41s
test 2: durée du traitement = 195m57s
test 3: durée du traitement = 54m49s
test 4: durée du traitement = 49m54s
Le vainqueur est donc sans appel le file system en ext2, avec direct_io activé.
La surprise a été le test en ext4 avec direct_io activé: combinaison à éviter absolument.
A noter que chaque test a été répété 2 fois, en prenant soin de redémarrer l'instance entretemps. Les temps obtenus pour chaque test ont été à chaque fois très cohérents.
Vous avez donc maintenant des éléments de décision pour vos prochaines implémentations.
A bientôt sur notre station pour de nouveaux défis.
Le village Informix est un blog technique consacré aux technologies Informix et tout ce qui tourne autour. C'est une zone de news, d'échange d'idées, de questions, de coups de coeurs et pourquoi pas de coups de gueule, techniques bien entendu! Après tout nous sommes en Gaule, nous sommes connus pour cela, alors mettons nos talents à profit!
dimanche 7 août 2011
vendredi 1 juillet 2011
Objectif Performance
Bonjour à tous,
je me propose aujourd'hui de mettre en ligne un case study que j'ai écrit pour la Newsletter du User Group Informix France ( petit nom UGIF ), auquel je vous recommande de vous abonner car elle contient plein d'infos intéressantes. Pour s'abonner, c'est très simple: envoyez un email à ifmxnewsletter@fr.ibm.com avec "ABONNER" dans le sujet.
Bonne lecture et bons tests.
Eric
Etude de cas : Objectif performance…
"Bonjour, merci de vous être connecté sur notre station. Votre mission est, si vous l'acceptez, d'implémenter une nouvelle table dans la base de données, d'en faire un chargement initial avec un temps d'opération inférieur à 10 minutes, et de fournir à l'équipe de développeurs une manière de gérer au mieux les temps de réponses sur une requête imposée qui, selon le comité des testeurs de l'application reportant au Directeur des Opérations, a un temps de réponse inacceptable. Vous disposez d'IBM Informix Dynamic Server V11.70 FC2 Innovator-C Edition, un serveur Linux avec un processeur 4core, 16 Gb de RAM entièrement à votre disposition. Ah! J’oubliais, la table à charger comporte environ 70 millions de rangées, mais n'est pas très complexe quant à son schéma et son indexation. Il faudra de plus y charger environ 500 000 rangées tous les soirs"
Ce genre de demande vous rappellera très certainement des situations vécues soit en tant que DBA, soit en tant que développeur. On constate généralement, à ces instants précis, un certain flottement dans le regard du destinataire de cette requête, de même que des symptômes caractéristiques du découragement ou d'une féroce envie de décliner la demande sous le chef de « ça n'est pas réaliste ». Il est vrai que dans les versions antérieures d'IDS cette demande représentait un véritable défi, difficile à relever.
Mis à part peut-être l'utilisation de High Performance Loader, pas trop simple à mettre en oeuvre dans l'urgence, il faut avouer qu'il y avait au minimum de quoi être troublé par cette demande. Fort heureusement, nous sommes en 2011 et les laboratoires IBM Informix nous ont concocté un certain nombre d'améliorations très utiles, qui vont nous permettre de relever le défi avec IDS 11.70.
Analysons tout d'abord la demande: 1) La nouvelle table contient tous les billets d’avion sur les liaisons entre la France, l’Allemagne, l’Angleterre, l’Italie, l’Espagne et les Etats-Unis depuis le 1er janvier 2005. en voici le schéma : create table tickets (
ticketno bigint, # N° unique de ticket
lastname varchar(60), # Nom voyageur
firstname varchar(30), # Prénom voyageur
gender char(3), # MR/MRS/INF
flightdate date, # Date du vol
flightno char(6), # N° du vol
fileno char(8), # N° de dossier
price money(8,2), # Prix du vol
carrier char(2), # Compagnie aérienne
departfrom char(3), # aéroport de départ
destination char(3) # aéroport de destination );
create index tickets3 on tickets (flightdate);
create index tickets7 on tickets (destination);
Et enfin la requête qui pose des problèmes à nos amis développeurs:
select destination , count(*)
from tickets,airports
where tickets.destination = airports.code
and tickets.destination between "AAA" and "ZZZ"
and airports.country = 'France'
and flightdate between "21/03/2006" and "31/07/2010"
group by 1
J’avais au préalable réussi à convaincre les développeurs de fournir des indexes mono-colonne, de façon à éviter l’obtention de trop nombreux niveaux de B-Tree affaiblissant la performance. L'évocation du chiffre de 70 millions de rangées initiales, grossissant environ d'un million tous les 2 jours, est par contre de nature à susciter au minimum de l'intérêt, au maximum de l'inquiétude quant à l'atteinte des objectifs définis.
Nous ne parlerons pas aujourd’hui de fragmentation de cette table qui pourrait nous apporter une solution ultérieurement en cas de détection de problèmes d'IO sur celle-ci. Nous ne parlerons pas non plus de la compression des tables, technique provenant de XPS et implémentée à partir de la version 11.50.xC6 qui, tout en réduisant environ de moitié (ou plus) l'espace disque, permet d'augmenter de façon significative les performances sur les "grosses" tables. Cette fonctionnalité est pour l'instant « optionnelle » (lire payante), et ne fait donc pas partie des options à envisager dans notre cas.
Concentrons-nous donc sur la première partie du défi : le chargement de 70 millions de rangées en moins de 10 minutes. Nous avons pensé à High Performance Loader, qui est un outil très efficace, mais un peu complexe à mettre en oeuvre pour une première fois et dans le temps imparti.
Je voulais donc évoquer ici l'utilisation des tables externes, provenant également de XPS et implémentées depuis la version 10.50. Le principe est très simple, vous créez votre table, sauf qu'au lieu de résider dans l'instance IDS, celle-ci est constituée par un fichier sur file system, structuré soit par l'existence de délimiteurs de champs, soit par une structure fixe. Vous créez la table externe qui pointe sur ce(s) fichier(s) et qui en décrit la structure comme une table « normale ». Nous avons donc appliqué ceci pour le cas d'aujourd'hui :
CREATE EXTERNAL TABLE ext_tickets
SAMEAS tickets
USING (DATAFILES ("DISK:/home/eric/StagingArea/ObjectifPerf/tickets.unl"), DELIMITER "|",EXPRESS,MAXERRORS 10,REJECTFILE "/tmp/x_tickets.out")
Expliquons :
« SAMEAS tickets » veut dire créer la table à l'image du schéma de la table déjà existante tickets.
« DATAFILES DISK » : notre fichier est sur disque et se nomme...
« DELIMITER » : c'est une structure avec délimiteurs de champs, ici le « pipe »
« EXPRESS » : le mode de chargement. Il s'oppose au mode DELUXE. Ce mode évite l'utilisation des pages de buffers lors de la lecture dans cette table, ce qui va muscler fortement la performance de notre chargement.
« MAXERRORS » : au-delà de ce nombre d'erreurs, la création de la table s'arrête.
« REJECTFILE » : le fichier où sont consignées les erreurs de chargement.
Une table externe peut donc être manipulée par des tous types de requêtes SELECT ( order by, group by, prédicats) , mais ne peut pas être UPDATED,DELETED ni INSERTED. Résultat , avec table raw la commande de chargement est :
INSERT INTO tickets SELECT * FROM ext_tickets
70000000 row(s) inserted.
real 6m20.937s user 0m0.005s sys 0m0.005s
Nous avons comparé avec la méthode insert into table load from file, et le résultat est sans appel : nous avons arrêté le chargement au bout de 24 minutes : seulement 24 Millions de rangées étaient chargées.
Autre point important à relever : nous avons crée une table de type « RAW ». Ce type de table a la particularité de désactiver la journalisation de la table incriminée. En conséquence, la performance de chargement est drastiquement améliorée du fait de l'absence d'IO à cause de la journalisation (logical logs). La différence est plus que notoire. Le gros intérêt est qu'il est possible de changer en type STANDARD (journalisation) après le chargement par un simple ALTER TABLE, puis repasser en RAW pour les chargements consécutifs.
Nous évitons également l’écueil de la ‘long transaction’.
Nous avons donc atteint le premier objectif de passer sous les 10mn de temps de chargement, et restons sereins pour les chargements journaliers.
Passons maintenant au deuxième défi : la requête La table tickets a un nombre de rangées respectable ( 70 millions de rangées ), et à cette échelle il convient de veiller à optimiser les ressources ainsi que les accès.
Nous partirons de la baseline proposée par l'équipe des développeurs et prendre une mesure de performance.
Nous avons de fait renoncé à la baseline, comprenant les plaintes des développeurs : la requête a été abortée au bout de 60 mn sans qu’elle soit terminée, voici son plan de requête :
Estimated Cost: 3126460
Estimated # of Rows Returned: 775663
Temporary Files Required For: Group By
1) eric.airports: INDEX PATH
Filters: (eric.airports.code >= 'AAA' AND eric.airports.code <= 'ZZZ' )
(1) Index Name: eric.i_airp3
Index Keys: country (Serial, fragments: ALL)
Lower Index Filter: eric.airports.country = 'France' 2) eric.tickets:
INDEX PATH Filters: (eric.tickets.flightdate >= 21/03/2006 AND eric.tickets.flightdate <= 31/07/2010 )
(1) Index Name: eric.tickets7
Index Keys: destination (Serial, fragments: ALL)
Lower Index Filter: eric.tickets.destination = eric.airports.code
NESTED LOOP JOIN
Nous obtenons donc une nested loop (boucle imbriquée pour la jointure ), avec utilisation de l’index sur les pays pour la table airports ( 10000 rangées ), et l’index date du vol pour la table des tickets. Onstat - p nous donne 7509528 rangées lues (read).
C’est à ce moment que nous introduisons la nouvelle directive d’optimiseur MULTI_INDEX, qui va nous permettre d’utiliser plusieurs indexes sur une même table, contrairement à ce qui se faisait auparavant. La syntaxe :
SELECT --+multi_index(tickets tickets3 tickets7)
distinct(destination) , count(*) ....
from tickets,airports etc....
Nous allons dire à l’optimiseur d’utiliser les index tickets3 ET tickets7 pour la table tickets afin de lire un minimum de pages de données, et par conséquence réduire les IO sur cette requête. Voici le résultat du set explain :
DIRECTIVES FOLLOWED: MULTI_INDEX ( tickets tickets3 tickets7 )
DIRECTIVES NOT FOLLOWED:
Estimated Cost: 113176408
Estimated # of Rows Returned: 775663
Temporary Files Required For: Group By
1) eric.tickets: MULTI INDEX PATH (SKIP SCAN)
(1) Index Name: eric.tickets7
Index Keys: destination (Serial, fragments: ALL)
Lower Index Filter: eric.tickets.destination >= 'AAA'
Upper Index Filter: eric.tickets.destination <= 'ZZZ' AND
(2) Index Name: eric.tickets3 Index Keys: flightdate (Serial, fragments: ALL)
Lower Index Filter: eric.tickets.flightdate >= 21/03/2006
Upper Index Filter: eric.tickets.flightdate <= 31/07/2010
2) eric.airports: INDEX PATH
Filters: Table Scan Filters: (eric.airports.code >= 'AAA' AND eric.airports.code <= 'ZZZ' )
(1) Index Name: eric.i_airp3
Index Keys: country (Serial, fragments: ALL)
Lower Index Filter: eric.airports.country = 'France'
DYNAMIC HASH JOIN
Dynamic Hash Filters: eric.tickets.destination = eric.airports.code
La physionomie du plan de requête a totalement changé : nous voyons l’activation de la directive multi-index sur la table tickets, qui a pour effet l’utilisation de l’index tickets7 + l’index tickets3 et finalisant le plan par un HASH JOIN pour la jointure.
Onstat -p nous indique que seulement 2.294.947 de rangées ont été lues, ce qui devrait signifier un progrès sensible. Et le temps de réponse ????
Le voici :
155 row(s) unloaded
real 5m22.672s user 0m0.005s sys 0m0.008s
Oui ! c’est bien 5 mn 22s. L’objectif d’amélioration du temps de réponse est atteint. N’ayant pas de données implémentées sur plusieurs disques, nous ne pourrons pas profiter du multiplexage des scan threads qui auraient pu améliorer encore notre performance. N’ayant pas lancé ce test sur la Ultimate Edition, nous ne pouvons pas bénéficier du PDQPRIORITY qui aurait sans doute amélioré légèrement les résultats.
Nous avons clairement profité de la directive MULTI INDEX, qui a diminué le temps d’attente de plus d’une heure (peut-être beaucoup plus ) à 5 mn 22s.
Il faut savoir également que cette technique est extrêmement efficace dans des requêtes avec prédicat « OR » portant sur des indexes différents d’une même table. Combien de fois nous a-t-il fallu réécrire une requête de ce type en incluant une UNION ? Avec cette technique, plus la peine de tout réécrire, il suffit d’ajouter la directive d’optimiseur qu’il faut, et le tour est joué !
Nous vous encourageons également à utiliser l’option de onmode ‘-Y sessionid 1 output file’, qui produira le fichier d’explain de la session ‘sessionid’ sans avoir à rajouter le ‘SET EXPLAIN ON’ dans le code de l’application. A utiliser toutefois avec modération en environnement production, car ce mode est très volubile et peut générer une charge d’IO qui pourra parasiter la performance.
Voilà, mission accomplie ! Merci aux techniques de tables externes en mode EXPRESS, de table de type RAW qui suppriment temporairement la journalisation, et la nouvelle directive d’optimiseur MULTI_INDEX. A bientôt sur notre station pour de nouveaux défis.
mercredi 29 juin 2011
Ces petites choses qui ne font pas de bruit, mais qui évitent d'en faire
Bonjour à tous,
aujourd'hui nous allons faire très court. Je voulais juste vous parler d'un paramètre de votre onconfig préféré qui retiendra toute votre attention si l'on pose le problème dans les termes suivants: vous est-il déjà arrivé de détruire une instance Informix Dynamic Server en vous trompant d'option de la commande oninit ? La réponse est très certainement non, mais "seulement au cas où l'avenir vous réserve de mauvaises surprises" ( cette énorme pression lors d'une intervention d'urgence à 3h00 du matin par exemple...), sachez que IDS 11.70 xC1 a introduit un nouveau paramètre dans le onconfig, dont le but est de vous protéger de ce genre de mésaventure. Ce paramètre s'appelle FULL_DISK_INIT.
C'est très simple, si vous le valorisez à 0 ( valeur par défaut ), et que l'instance en question est déjà existante, , oninit -i vous enverra un message vous disant que l'initalisation est impossible: "oninit: fatal error in shared memory creation".
Warning: server initialization failed or possibly timed out ..."
Même si celà ressemble à un message d'erreur, vous êtes sauvé, le chunk root n'a pas été détruit.
Bien sûr s'il s'agit d'une vraie initialisation, c'est-à-dire que c'est la première fois que vous créez ce root chunk, le processus ira jusqu'au bout comme auparavant.
Si vous avez vraiment besoin d'écraser le root chunk, vous pouvez donc modifier ledit paramètre à 1, TEMPORAIREMENT, pour pouvoir arriver à vos fins.
Voilà encore une bonne raison pour upgrader vers la version 11.70. Cette amélioration ne représente cependant qu'une goutte noyée dans un grand nombre de nouvelles fonctionnalités apportée par la 11.70
Mais ça, c'est une autre histoire...
aujourd'hui nous allons faire très court. Je voulais juste vous parler d'un paramètre de votre onconfig préféré qui retiendra toute votre attention si l'on pose le problème dans les termes suivants: vous est-il déjà arrivé de détruire une instance Informix Dynamic Server en vous trompant d'option de la commande oninit ? La réponse est très certainement non, mais "seulement au cas où l'avenir vous réserve de mauvaises surprises" ( cette énorme pression lors d'une intervention d'urgence à 3h00 du matin par exemple...), sachez que IDS 11.70 xC1 a introduit un nouveau paramètre dans le onconfig, dont le but est de vous protéger de ce genre de mésaventure. Ce paramètre s'appelle FULL_DISK_INIT.
C'est très simple, si vous le valorisez à 0 ( valeur par défaut ), et que l'instance en question est déjà existante, , oninit -i vous enverra un message vous disant que l'initalisation est impossible: "oninit: fatal error in shared memory creation".
Warning: server initialization failed or possibly timed out ..."
Même si celà ressemble à un message d'erreur, vous êtes sauvé, le chunk root n'a pas été détruit.
Bien sûr s'il s'agit d'une vraie initialisation, c'est-à-dire que c'est la première fois que vous créez ce root chunk, le processus ira jusqu'au bout comme auparavant.
Si vous avez vraiment besoin d'écraser le root chunk, vous pouvez donc modifier ledit paramètre à 1, TEMPORAIREMENT, pour pouvoir arriver à vos fins.
Voilà encore une bonne raison pour upgrader vers la version 11.70. Cette amélioration ne représente cependant qu'une goutte noyée dans un grand nombre de nouvelles fonctionnalités apportée par la 11.70
Mais ça, c'est une autre histoire...
mardi 14 juin 2011
Des nouvelles du front
Bonjour à tous,
vu chez mon ami et néanmoins gourou Fernando Nunes de Lisbonne, des nouvelles d' "une autre compagnie éditant des SGBD commençant par O".
En effet, la nouvelle est tombée fin mars 2011: ladite compagnie citée plus-haut abandonne le développement des versions futures dudit SGDB sur plateforme HP-UX tournant sur le processeur Intel Itanium, tout en garantissant "quand-même" le support sur les versions existantes. Selon HP, la base installée représente environ 140000 clients qui peuvent se poser des questions quand à la pérennité de leur choix.
Fernando évoque les 3 solutions possibles:
1) sauter dans le train dudit fabricant de SGDB, par ailleurs fabricant de matériel ( SPARC ), et advienne que pourra pour ce qui est des coûts "annexes".
2) changer de constructeur, en priant pour que la même plaisanterie ne survienne pas d'ici quelque temps.
3) Migrer vers IBM Informix, pour différentes raisons parmi lesquelles
* la fiabilité,la robustesse, le faible coût à l'exploitation
* la feuille de route claire d'IBM, venant d'accomplir 10 ans d'améliorations constantes du produit depuis le rachat.
* parce que Informix et HP sont "deux mots qui vont très bien ensemble" depuis plusieurs décennies et les faits l'ont démontré et continuent à le démontrer.
Comme quoi, cet éditeur qui accusait il y a 10 ans IBM d'abandonner définitivement ses clients Informix ( ce qui ne s'est de fait pas produit) , parait à ce jour adopter les pratiques qu'il était si prompt à dénoncer...
L'article est un peu dense et en anglais, mais il vaut le coup. Pour y accéder cliquez sur le titre de cet article
A bientôt
Eric
vu chez mon ami et néanmoins gourou Fernando Nunes de Lisbonne, des nouvelles d' "une autre compagnie éditant des SGBD commençant par O".
En effet, la nouvelle est tombée fin mars 2011: ladite compagnie citée plus-haut abandonne le développement des versions futures dudit SGDB sur plateforme HP-UX tournant sur le processeur Intel Itanium, tout en garantissant "quand-même" le support sur les versions existantes. Selon HP, la base installée représente environ 140000 clients qui peuvent se poser des questions quand à la pérennité de leur choix.
Fernando évoque les 3 solutions possibles:
1) sauter dans le train dudit fabricant de SGDB, par ailleurs fabricant de matériel ( SPARC ), et advienne que pourra pour ce qui est des coûts "annexes".
2) changer de constructeur, en priant pour que la même plaisanterie ne survienne pas d'ici quelque temps.
3) Migrer vers IBM Informix, pour différentes raisons parmi lesquelles
* la fiabilité,la robustesse, le faible coût à l'exploitation
* la feuille de route claire d'IBM, venant d'accomplir 10 ans d'améliorations constantes du produit depuis le rachat.
* parce que Informix et HP sont "deux mots qui vont très bien ensemble" depuis plusieurs décennies et les faits l'ont démontré et continuent à le démontrer.
Comme quoi, cet éditeur qui accusait il y a 10 ans IBM d'abandonner définitivement ses clients Informix ( ce qui ne s'est de fait pas produit) , parait à ce jour adopter les pratiques qu'il était si prompt à dénoncer...
L'article est un peu dense et en anglais, mais il vaut le coup. Pour y accéder cliquez sur le titre de cet article
A bientôt
Eric
IDS enfin sur facebook
Bonjour à tous,
je sors le nez de mes métriques sur un système de production pour vous informer que enfin Informix Dynamic Server a sa page sur Facebook.
N'hésitez pas à aller sur cette page et dire que vous aimez!
http://www.facebook.com/pages/IBM-Informix-Dynamic-Server-IDS/23461144288
La page pointe vers les news interessantes sur votre SGBD favori.
A bientôt
je sors le nez de mes métriques sur un système de production pour vous informer que enfin Informix Dynamic Server a sa page sur Facebook.
N'hésitez pas à aller sur cette page et dire que vous aimez!
http://www.facebook.com/pages/IBM-Informix-Dynamic-Server-IDS/23461144288
La page pointe vers les news interessantes sur votre SGBD favori.
A bientôt
vendredi 6 mai 2011
Informix Dynamic Server existe vraiment à partir de dorénavant
Bonjour à tous
je passais juste vous signaler que le wiki sur Informix Dynamic Server a été profondément remanié et comporte dorénavant des informations plus complètes.
Pour vous y rendre, cliquez sur le titre de ce message ( plus haut ), ou bien allez à
La vie de Informix Dynamic Server
A bientôt
je passais juste vous signaler que le wiki sur Informix Dynamic Server a été profondément remanié et comporte dorénavant des informations plus complètes.
Pour vous y rendre, cliquez sur le titre de ce message ( plus haut ), ou bien allez à
La vie de Informix Dynamic Server
A bientôt
jeudi 5 mai 2011
IWA ? Informix Warehouse Accelerator
Un jeu nommé VITESSE! Présentation de Informix Ultimate Warehouse EditionMais qu'ont-ils donc tous à s'agiter autour de cette annonce? L'offre IBM Informix Ultimate Warehouse apporte de fait des améliorations de performance qualifiables d'extrêmes pour la solution décisionnelle d'Informix, utilisant une technologie d'accélération à couper le souffle. Bon allez! Encore un qui exagère pour vendre sa camelote.. Ok, gardez vos questions pour l'instant! Laissez-moi d'abord explorer le contenu de cette offre avant de rentrer dans les détails. Elle consiste à la base en une édition flambant neuve qui se décompose ainsi:
Cette technologie révolutionnaire issue des laboratoires de recherche IBM, vous permet de charger totalement en mémoire votre data mart (celui sur lequel vous exécutez vos requêtes), et ceci dans un format compressé. L'organisation de la mémoire ainsi que ses accès utilisent intensément une approche de base de données orientée colonne. Les requêtes peuvent être exécutées à volonté sans avoir à décompresser les données en mémoire. Et concrètement, celà donne quoi ? Dans bien des cas ( une écrasante majorité NDT), les temps de réponses des requêtes changent radicalement d'ordre de grandeur, ceci étant du à de considérables gains en performance. Certains des clients travaillant sur le programme Beta nous ont communiqué des résultats de performances se démarquant clairement de ce qui a pu se voir jusqu'à ce jour. Dans ce programme Beta, il a pu être observé 2 ordres de grandeur en ce qui concerne l'amélioration des temps de réponses: pour certains clients, de 100 à 300 fois plus rapide ( oui j'ai bien dit FOIS ), pour d'autres, des gains de 10 à 100 fois. La cerise sur le gâteau: vos applications de BI connectées à Informix restent en l'état, sans devoir y apporter quelque modification que ce soit! Informix Warehouse Accelerator est fortement optimisé pour la plateforme Linux/Intel est doit fonctionner sur un système qui répond aux prérequis suivants Voici en un mot comment tout celà s'articule
Votre warehouse reste géré par l'instance Informix et vos requêtes de BI sont toujours exécutées par cette dernière. Quand une requête est identifiée comme devant être exécutée sur un data mart configuré pour l'accélération, l'optimiseur Informix passe la requête à l'accélérateur, lequel retourne les résultats à l'application BI. Le graphique ci-dessous vous donnera un bon aperçu des opérations ![]() ![]() |
L'humble traduction a été réalisée avec son accord par votre serviteur
Version originale ici:
US announcement
Inscription à :
Articles (Atom)

