lancer une opération autovacum

bonjour

Dans ce article on va voir comment lancer l’autovacum a travers PgAdmin

Définition de VACUUM:c’est une opération du maintenance qui permet de récupère l’espace de stockage occupé par des lignes mortes si ont dit ligne mort se sont les lignes supprimer donc pour récupérer l’espace physique de ces lignes il faut lancer opération vacuum   

Ci joint les 3 Option pour lancer l’opération Vacuum

  • FULL récupère plus d’espace  mais est beaucoup plus long et prend un verrou exclusif sur la table  .
  • FREEZE :  VACUUM FREEZE aura pour résultat de geler toutes les lignes de la base. Donc, tant que la base n’est pas modifiée, aucun nettoyage supplémentaire n’est nécessaire.
  • ANALYZE : Met à jour les statistiques utilisées par l’optimiseur pour déterminer la méthode la plus efficace pour exécuter une requête

Pour lancer un Vacuum  —>menu outil –>Maintenance…

pg_admin

Cocher Option analyse ,pour l’option Full c’est une commande consommatrice du ressource   elle verrouille les tables sur lesquelles vous travailler et que son exécution peut prendre du temps.Il est généralement recommandé de l’exécuter une fois par jour, en période creuse

pagadmin2

Sans titre

Finalement le gain avec le vacuum peut-être énorme donc n’hésitez pas a faire ces opération du maintenance

cordialement

Est-ce que remplacer le NOT IN par NOT EXISTS permet de gagner de la performance?

Bonjour

Est-ce que remplacer le NOT IN par NOT EXISTS permet de gagner de la performance? Question que je viens de lire sur plusieurs forum et article  

Plusieur recommandation demande de faire éviter le not IN et de le remplacer par not exists ou par une jointure externe

pour cela je penserai a  faire des tests, afin d’avoir plus  des précisions ,Je ‘développe’ ce petit script SQL  dans lequel je fais une simple  requête d’insertion

CREATE TABLE Test (id INT)
GO

INSERT INTO Test VALUES (10)
GO 1000

INSERT INTO Test VALUES (100)
GO 1000

INSERT INTO Test
SELECT Test.id
FROM Test
JOIN Test AS test2
WHERE Test.id = 10
GO

CREATE TABLE test2 (id INT)
GO

INSERT INTO test2 VALUES (10)
GO 100

INSERT INTO test2 VALUES (100)
GO 1000

Lire la suite »

Optimiser vos requêtes avec les indexes Partial Postgresql

bonjour

Un des objectifs des bases de données est de stocker l’information tout en l’organisant de manière à pouvoir y accéder rapidement  il y a plusieurs manières d’accéder à l’information. Pour accéder à une ligne donnée d’une table

Postgresql dispose de plusieurs solutions que nous expliquerons sous peu. Citons parmi celles-ci par exemple le « parcours complet de table » ou « seq scan« , le « parcours d’index » ou « Seq index » … ou aussi Index partiels  c’est ce dont nous allons parler aujourd’hui

Un index partiel est un index construit sur un sous-ensemble d’une table ; le sous-ensemble est défini par une expression conditionnelle (appelée prédicat de l’index partiel). L’index ne contient des entrées que pour les lignes de la table qui satisfont au prédicat. Les index partiels sont une fonctionnalité spécialisée, mais ils trouvent leur utilité dans de nombreuses situations.

Un index partiel est utile pour les conditions where fréquentes qui utilisent des valeurs constantes

voyant cette petit exemple

with cte as(select row_number()over(partition by matricule order by date_capture)as classement ,person_id,matricule,template,date_capture,First_name,last_name from finger_print fp INNER JOIN person p
on fp.person_id=p.id
where finger_type='Segma'
)select * from cte
where classement=1
order by date_capture desc

le plan d’execution du cette requéte avec aucun index montre une opération de type scan_table avec un coût d’exécution de 2820ms

Sans titre

commençons a jouer avec les choses en ajoutant cette petit index

create index indexe_partiel on finger_print(finger_type)
where finger_type=’Segma’

ci joint le nouveau plan exécution, régénérer et le temps a été minimiser vers 213ms

et l’opération scan_table a été remplacer par  un scan_index et non pas n’importe quel index mais un index partiel

Sans titre2

Une base de données peut utiliser un index partiel à chaque fois qu’une clausewhere apparaît dans une requête

bonne optimisation

Utiliser un compte proxy pour executer un package SSIS

bonjour

Dans cet article, nous souhaitons montrer que vous pouvez utiliser un proxy avec vos jobs SQL Server et d’utiliser le crédential associé pour développer votre package

La première étape consiste à créer un crédential

Pour creer un proxy, vous devez definir un credential au niveau de la securite SQL Server.

dans l’onglet security
Clic droit sur credential -> new credential

Sans titre

C’est un lien vers un compte AD/local user (de preference AD).

Définir votre password ainsi confirmer le

Sans titre2

Ensuite, au niveau de l’agent, vous devez créer un nouveau proxy, et le lier au credentail précédemment défini

Sans titre8

Sans titre3

Sans titre4

Cochez la case SQL Server Integration Service Package – cela spécifie que votre proxy est autorisé à exécuter des pacakages SSIS
Sans titre9

Ensuite au niveau du de votre job exécutant le package SSIS, vous devez lui definir d’utiliser ce proxy (runas proxyName)

Sans titre5

Sans titre6

Cliquez OK et voila votre package SSIS serai Exécuter En Utilisant Une compte PROXY

Sans titre10

Bonne Execution