Accélérez les requêtes ownCloud 10 en gérant les index en toute sécurité

Pour ownCloud 10, commencez par appliquer les modifications de schéma fournies par le noyau et les applications installés, puis vérifiez quelles requêtes de base de données sont réellement lentes. N'ajoutez pas d'index sans discernement et ne présumez pas que la commande Nextcloud db:add-missing-indicesest une commande de réparation prise en charge par ownCloud 10 : la documentation de référence actuelle d'ownCloud Server 10.15 OCC ne la mentionne pas. Les index peuvent accélérer les lectures correspondantes, mais chaque index ajouté consomme de l'espace de stockage et augmente la charge de travail des insertions, mises à jour et suppressions.

Cette approche convient à un administrateur confronté à une lenteur d'affichage des pages ownCloud, de la liste des fichiers ou du fonctionnement d'une application, et qui a accès au serveur et à la base de données. Si l'instance entière est lente, ou si elle utilise SQLite avec plusieurs utilisateurs actifs, il est conseillé de vérifier la configuration globale de la base de données et du déploiement avant d'incriminer les index.

Choisissez la modification qui correspond aux preuves.

Un index de base de données est une structure auxiliaire qui permet à la base de données de localiser les lignes sans avoir à parcourir l'intégralité de la table. ownCloud et ses applications définissent les tables, les colonnes et les index dans leur schéma. Les mises à jour du noyau et des applications peuvent inclure des migrations de schéma qui créent ou modifient ces index. Maintenir le schéma de l'application à jour est donc la première étape la plus sûre.

Avant de modifier quoi que ce soit, tenez compte des distinctions suivantes :

  • Avertissement de l'administrateur ou problème de mise à niveau connu : exécutez la procédure de mise à niveau d'ownCloud et consultez le résultat. Les migrations de mise à niveau constituent la méthode recommandée pour les modifications de schéma effectuées par ownCloud ou une application.
  • Une requête lente connue pour son plan d'exécution inefficace : demandez à un administrateur de base de données d'examiner la requête et son plan. Un index ciblé peut s'avérer utile, mais les colonnes proposées et leur ordre doivent correspondre à la requête et à la définition de la table.
  • Lenteurs de chargement, blocages ou contention importante : examinez les transactions, la latence de stockage, la capacité de la base de données et les verrouillages de fichiers. Ces symptômes ne prouvent pas à eux seuls l’absence d’index.
  • Pour une petite installation SQLite devenue multi-utilisateurs : envisagez une migration vers MySQL/MariaDB ou PostgreSQL. ownCloud indique que SQLite convient aux tests et aux petites charges de travail mono-utilisateur, tandis que les déploiements multi-utilisateurs en production doivent utiliser une base de données serveur compatible.

Un index n'améliore pas la vitesse de manière générale. L'ajout d'index peut optimiser certaines recherches, mais au prix d'une augmentation de la taille de la base de données et de la latence d'écriture. Le résultat dépend de la structure de la requête, de la taille de la table, de la distribution des données, du moteur de base de données et de l'état du cache.

Préparer une fenêtre de maintenance sécurisée

  1. Notez les versions exactes et la base de données. Depuis le répertoire d'installation d'ownCloud, exécutez la commande suivante : [commande manquante] sudo -u www-data ./occ status. Notez la version d'ownCloud, les versions des applications installées, le type de base de données et le préfixe des tables config/config.php. Remplacez [nom_du_compte_serveur_web] www-datapar le compte du serveur web de votre distribution.
  2. Capturez l'opération lente. Notez l'écran ou l'application concernée, la durée approximative et si le ralentissement se reproduit. Consultez les journaux ownCloud et les diagnostics de requêtes lentes de votre base de données. N'activez la journalisation des requêtes que conformément aux recommandations de votre fournisseur de base de données, car les journaux peuvent contenir des valeurs SQL sensibles et leur volume peut augmenter rapidement.
  3. Sauvegardez la base de données et la configuration. Utilisez une méthode de sauvegarde cohérente avec la base de données et vérifiez que la sauvegarde est lisible. La documentation de sauvegarde d'ownCloud utilise mysqldump --single-transactioncomme exemple les bases de données compatibles MySQL ; adaptez les valeurs d'hôte, d'utilisateur et de base de données à votre configuration. Ne saisissez jamais le mot de passe de la base de données directement dans l'historique du terminal ou dans la liste des processus.
  4. Planifiez les modifications de manière responsable. Une mise à niveau de schéma ou la création d'un index peut entraîner une utilisation des E/S disque, du processeur et des verrous. Pour une installation volumineuse ou très sollicitée, informez les utilisateurs de la plage horaire concernée et surveillez la charge de la base de données. N'utilisez le mode maintenance d'ownCloud que lorsque la procédure de mise à niveau ou de maintenance l'exige ; ne l'activez pas à la place d'une sauvegarde.

Appliquez d'abord les mises à jour de schéma gérées par ownCloud

Si une mise à jour du noyau ou de l'application ownCloud est en attente, suivez la procédure de mise à niveau documentée correspondant à votre méthode d'installation. Sur une installation Linux classique, la commande OCC s'exécute en tant qu'utilisateur HTTP depuis le répertoire racine d'ownCloud. Lors d'une mise à niveau manuelle, la commande est :

sudo -u www-data ./occ upgrade

N’exécutez pas cette commande sur une installation dont les fichiers n’ont été que partiellement mis à jour. Commencez par installer les fichiers de la version correspondante et suivez la procédure de mise à niveau officielle. Pour les déploiements Docker, utilisez la commande OCC documentée du conteneur plutôt qu’un chemin d’accès à l’hôte pointant vers un environnement PHP différent.

Lisez attentivement la sortie complète de la commande et les journaux. Une commande réussie devrait se terminer sans signaler d'échec de migration ; cela ne garantit cependant pas la résolution de toutes les requêtes lentes. Si la mise à jour signale une erreur de migration, interrompez-la et examinez-la attentivement au lieu de relancer la commande à répétition ou de modifier manuellement les tables du schéma. Consultez la documentation de mise à niveau d'ownCloud spécifique à votre version et contactez le responsable de l'application si une migration est concernée.

La documentation de référence d'ownCloud 10.15 répertorie les commandes de base de données telles que db:convert-type` docker run`, db:convert-mysql-charset`docker run` et db:restore-default-row-format`docker run`, mais pas `docker run` db:add-missing-indices. La disponibilité des commandes pouvant varier selon la version et le code installé, vous pouvez inspecter votre instance avec ` docker run` sudo -u www-data ./occ list dbou ` sudo -u www-data ./occ help db:add-missing-indicesdocker run`. Si cette dernière indique une commande inconnue, ne copiez pas la commande d'un tutoriel Nextcloud dans ownCloud. Consultez la documentation correspondant à votre version d'ownCloud et suivez la procédure de mise à niveau ou de migration d'application recommandée.

Quand un index manuel est-il approprié ?

L'exécution manuelle de SQL est une option réservée aux administrateurs de bases de données pour résoudre un problème de requête avéré, et non une optimisation de routine d'ownCloud. Commencez par capturer la requête lente exacte et exécutez l'outil d'inspection du plan d'exécution du moteur, par exemple EXPLAINpour MySQL/MariaDB ou PostgreSQL. Vérifiez si le plan analyse un nombre inutilement élevé de lignes et si un index existant est ignoré. Le préfixe des tables ownCloud est configurable ; ne présumez donc jamais que les noms de tables commencent par «oc_ . ».

Avant de créer un index, comparez les colonnes proposées avec les filtres, jointures et l'ordre de tri de la requête. L'ordre des colonnes d'un index composite est important ; dupliquer un index existant peut engendrer des coûts supplémentaires sans améliorer le plan d'exécution. Demandez à un administrateur de base de données (DBA) de prendre en compte le comportement de la version de la base de données, la prise en charge de la création d'index en ligne ou simultanée, l'espace disque disponible, l'impact sur les verrous et la procédure de restauration. Ces détails étant spécifiques au moteur et à la version, il n'existe pas de requête SQL unique et sûre pour toutes les installations d'ownCloud 10.

Ne modifiez pas les tables ownCloud et ne supprimez pas les index sous prétexte qu'un nom semble redondant. De telles modifications peuvent entraîner des conflits lors d'une migration ultérieure du noyau ou de l'application, et rendre inutilisable une fonctionnalité utilisant une requête différente de celle que vous avez examinée. Conservez une trace écrite de toute modification manuelle du schéma et assurez-vous qu'il puisse être recréé après une restauration ou une migration. Privilégiez un correctif ownCloud ou une nouvelle version de l'application si l'index manquant est dû à un défaut du schéma du produit.

Comparer les alternatives au niveau de la base de données

Si le plan utilise déjà un index approprié, l'ajout d'un autre ne résoudra probablement pas un retard causé par ailleurs. Comparez ces options au goulot d'étranglement observé :

  • MySQL ou MariaDB : un choix courant pour les déploiements dont les administrateurs utilisent déjà ces moteurs. Avant de modifier les paramètres du serveur, vérifiez la mémoire du pool de mémoire tampon, la latence du disque, les connexions et les plans d’exécution des requêtes lentes.
  • PostgreSQL : une alternative prise en charge pour ownCloud 10 lorsque le connecteur de base de données PHP et le déploiement sont correctement configurés. Ses plans d’exécution et ses outils de gestion des index diffèrent de ceux de MySQL ; il est donc recommandé de suivre les recommandations spécifiques à PostgreSQL.
  • SQLite : simple d’utilisation pour les tests ou une utilisation monoposte limitée, mais non adapté à une charge de travail de production multiposte et simultanée. L’optimisation des index ne permet pas de supprimer les limites de concurrence du déploiement.

Changer de moteur de base de données est un projet de migration, et non une simple modification d'index. ownCloud propose occ db:convert-typedes conversions prises en charge ; consultez ses prérequis, effectuez une sauvegarde au préalable et testez l'instance convertie avant de la mettre à disposition des utilisateurs.

Vérifiez le résultat et arrêtez-vous si les preuves sont contradictoires.

Répétez la même action utilisateur dans des conditions comparables et comparez la durée de la requête, le plan d'exécution, le nombre de lignes examinées, les E/S de la base de données et la charge du serveur. Vérifiez que la page ou l'application ownCloud concernée s'exécute correctement et que les journaux ne signalent aucune erreur de base de données ou de migration. Un résultat plus rapide sur une seule requête ne prouve pas une amélioration globale ; comparez plusieurs requêtes représentatives et tenez compte des caches actifs.

Si la même requête reste lente malgré l'utilisation d'un index approprié, examinez les verrous, le stockage, la latence réseau, les processus PHP et les limites des ressources de la base de données. Si le plan d'exécution ou la structure de la table est obscur, arrêtez-vous avant d'exécuter manuellement les instructions DDL et demandez à un administrateur de base de données ou au support ownCloud de les analyser. Le résultat optimal est un schéma aligné sur la version d'ownCloud installée et des requêtes mesurées, sans modifications d'index non enregistrées.

Références officielles

Laisser un commentaire

Accélérez les requêtes ownCloud 10 en gérant les index en toute sécurité

Découvrez quand les index de la base de données ownCloud 10 nécessitent une attention particulière, comment appliquer en toute sécurité les mises à jour de schéma prises en charge et quand l'optimisation des requêtes ou une modification de la base de données constitue la meilleure solution.

Monter un partage SMB/CIFS dans ownCloud sans montage Linux

Connectez un partage réseau Windows ou Samba à ownCloud via un stockage externe, vérifiez les identifiants et résolvez les problèmes d'accès aux dossiers en toute sécurité.

Supprimer en toute sécurité les versions de fichiers ownCloud avec la commande occ

Supprimer en toute sécurité les versions de fichiers ownCloud avec la commande occ

Supprimez toutes les versions de fichiers ownCloud Server Classic stockées pour un compte ou pour tous les utilisateurs, et faites la distinction entre une purge complète et une expiration basée sur la rétention.

Connexion à ownCloud Mobile refusée ? Vérifiez l’URL et la connectivité.

Connexion à ownCloud Mobile refusée ? Vérifiez l’URL et la connectivité.

Pour identifier la cause d'un refus de connexion mobile ownCloud, vérifiez dans le bon ordre l'URL du serveur, le réseau téléphonique, le point de terminaison HTTPS et les journaux du serveur.

Exécutez des tâches en arrière-plan ownCloud de manière fiable grâce à un minuteur Systemd.

Remplacez les exécutions de tâches à la demande par une minuterie systemd qui exécute la commande système occ:cron prise en charge par ownCloud toutes les 15 minutes.

Rétablir la synchronisation WebDAV d'ownCloud en trouvant le chemin rompu

Suivez la requête WebDAV via Apache, Nginx ou un proxy inverse, puis vérifiez que la synchronisation ownCloud fonctionne avec un test PROPFIND authentifié.

Configurez l'URL publique de Nextcloud pour qu'il puisse s'accéder à lui-même.

Corrigez l'avertissement concernant l'adresse sortante manquante de Nextcloud en définissant son URL canonique et en vérifiant le DNS, le HTTPS et le routage du proxy inverse depuis le serveur lui-même.

Configurer la mise en cache Redis de Nextcloud sur Ubuntu 24.04

Configurer la mise en cache Redis de Nextcloud sur Ubuntu 24.04

Configurez APCu et Redis via un socket Unix local pour la mise en cache et le verrouillage des fichiers Nextcloud, avec les étapes pour les versions actuelles et antérieures de Nextcloud.

Configurez l'exécution automatique de Nextcloud Cron avec un minuteur Systemd

Vérifiez le mode cron de Nextcloud, réparez son service systemd et son minuteur, et assurez-vous que les tâches en arrière-plan s'exécutent après le démarrage et toutes les cinq minutes.

Éliminer l'avertissement de verrouillage de fichiers de Nextcloud avec Redis

Activez le verrouillage fiable des fichiers Nextcloud, choisissez le bon backend Redis ou Valkey et vérifiez que l'avertissement disparaît sans risque de modifications simultanées des fichiers.