Alléger le fichier places.sqlite de Firefox (marques-pages)

Un article très technique pour garder une trace d’une mésaventure informatique.

Mon navigateur Firefox s’est mis à ramer tellement qu’il n’en était plus vraiment utilisable. Du coup, j’ai décidé de la réinstaller et, avant ça, de sauvegarder ce que je voulais garder : la liste de mes extensions et mes marques-pages. Ça m’a permis de mettre le doigt sur la cause de ce ralentissement : les marques-pages. Le fichier qui les contient (places.sqlite) était devenu énorme, démesuré : 200 fois plus gros qu’il aurait du l’être. Ça ralentissait la navigation. Ça empêchait la sauvegarde ou la suppression des dossiers de marques-pages.

En regardant tout ça de plus près, je me suis rendu compte qu’il y avait un conflit de cohabitation entre 2 extensions concurrentes : Simple Tab Group et Sync Tab Groups. Elles ont généré des sauvegardes intempestives dans les marques pages. J’avais 8 186 marques pages légitimes (je sais je suis un gros consommateur). Et ces extension m’en ont rajouté 381 711 !!! plus précisement, j’avais presque à la racine de mes marques pages (enfant du dossier “Autres marques pages”) un dossier “SyncTabGroups” qui démultipliait 1597 sauvegardes “Groups [Back Up] (old)” où Simple Tab Group démultipliait lui-même des “Groupe sans nom xx” avec 0 à 300 marques pages !!!

J’ai essayé Speedyfox. Ça a alégé le fichier places.sqlite de 25%, mais ça n’a pas été suffisant pour vraiment changer les choses. J’ai essayé plusieurs extensions (gestionnaire de marques pages, suppression de doublon, etc), mais avec le nouveau système Firefox Quantum, les extensions ne sont plus en langage natif et sont probablement bloquée par un max_execution_time.

J’ai trouvé mon salut en téléchargeant le logiciel DB Browser for SQLite. Il s’agit bien d’un logiciel autonome et indépendant de Firefox. C’est un genre de PhpMyAdmin pour fichier .sqlite. Quand j’ai ouvert le fichier, au départ, j’ai pris peur : la gestion d’une arborescence avec des jointures parent/enfant est toujours compliqué en SQL. Mais ne trouvant pas d’autres alternative, j’ai retroussé mes manches et m’y suis plongé.

Voici quelques requettes qui m’otn été utiles :

SELECT * FROM moz_bookmarks WHERE parent = 1

Pour obtenir l’id = 5 du dossier “Autres marques pages”

SELECT * FROM moz_bookmarks WHERE parent = 5

Pour obtenir l’id = 8011 du dossier “SyncTabGroups”

SELECT * FROM moz_bookmarks WHERE parent = 8011

Pour obtenir la liste et le nombre de dossiers “Groups [Back Up] (old)”

WITH RECURSIVE
	profondeur(iii, ppp, ttt) AS (
		SELECT id, parent, title FROM moz_bookmarks WHERE id = 8011
	UNION
		SELECT id, parent, title FROM moz_bookmarks 
		JOIN profondeur ON moz_bookmarks.parent = profondeur.iii
	)
SELECT * FROM profondeur

Pour obtenir la liste de tous les marques-pages descendants du dossier “SyncTabGroups” : requête récursive SQL CTE. Ces 1 et 2 articles m’ont aidé.

WITH RECURSIVE
	profondeur(iii, ppp, ttt) AS (
		SELECT id, parent, title FROM moz_bookmarks WHERE id = 8011
	UNION
		SELECT id, parent, title FROM moz_bookmarks 
		JOIN profondeur ON moz_bookmarks.parent = profondeur.iii
	)
DELETE FROM moz_bookmarks WHERE id IN ( SELECT iii FROM profondeur )

Pour supprimer tous ces marques-pages : suppression recursive SQL CTE. Cet article m’a aidé.

Si ces informations vous aident à vous dépanner, n’hésitez pas à me le dire en commentaire.

Source de l’image mise en avant

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *