source: Oracle® Database - SQL Language Reference - 11g Release 1 (11.1) - B28286-05
source: Oracle® Database - Administrator's Guide - 11g Release 1 (11.1) - B28310-04
Lorsque que l’on utilise une instruction DML (insert/update/delete/merge) via une sous requête, plutôt que d’avoir une erreur puis un rollback il est possible de gérer certaines erreurs via une table de journalisation d’erreur :
Voyons comment utiliser cette fonctionnalité :
Certaines erreurs ne sont pas enregistrées par la gestion intégrée des erreurs et entrainent l’arrêt de l’opération de DML et son rollback
Lire la suite : Oracle DML Error Logging
Suite à un audit de performance chez une entreprise qui cherchait à améliorer les performances MSSQL Server (SSDE 2008 SE 64 bits sur W2K8R2) pour son application CRM (SugarCRM), j'ai constaté un comportement au premier abord étrange sur la gestion des chaînes unicode sur le SGBD de microsoft...
Le consultant spécialiste de l'application (SugarCRM) me fit remarqué que des requêtes très simples à priori n'avaient pas la performance attendue.
En étudiant de près une requête type j'ai constaté un effet étonnant concernant l'utilisation de filtres avec une chaîne unicode : colonne1=N'machaine' alors que la colonne que l'on cherche à filtrer est de type varchar (et non nvarchar).
La requête qui m'a posé problème était une requête très simple d'une durée de 200ms environ. Pas de problème de performance avec 200ms par requête me direz vous, sauf que cette requête était lancée plusieurs dixaines de fois pour certains écrans.
Voici la requête :
SELECT acc.id, acc.name, con_reports_to.first_name, con_reports_to.last_name FROM contacts LEFT JOIN accounts_contacts a_c ON a_c.contact_id = N'1A9C0C58A81C4195B854739635E435D5' AND a_c.deleted=0 LEFT JOIN accounts acc ON a_c.account_id = acc.id AND acc.deleted=0 LEFT JOIN contacts con_reports_to ON con_reports_to.id = contacts.reports_to_id WHERE contacts.id = N'1A9C0C58A81C4195B854739635E435D5'
On notera sur cette requête les prédicats=N'1A9C0C58A81C4195B854739635E435D5'. Le N qui préfixe la chaîne indique au moteur relationnel de sql server qu'il s'agit d'une chaîne de caractère unicode. Or les colonnes sur lesquelles portent les filtres ne sont pas en nvarchar mais en varchar.En observant les statistiques et le plan d'éxécution on observe ceci :
La version 11 de SQL Server (aka MSSQL 2012 ou Denali) introduit un nouveau type d'index permettant de stocker les données en mode colonnes.
Les columnstore index, particulièrement adaptés aux requêtes décisionelles accélèrent ces requêtes pour plusieurs raisons :
Un script de restore database ms sql server avec récupération de la dernière sauvegarde effectuée sur le serveur (ou récupération directe d'une sauvegarde via un chemin).
Ce script est capable de récupérer les différents fichiers de la sauvegarde et de construire une commande de restauration en changeant la destination des fichiers cibles
Articles traitant de l'intégration de données
Des tutoriaux et cours gratuits sur Oracle
Tutoriaux sur Unix et les shells scripts