Accueil
» ADMINISTRATEUR RÉSEAU
»
Comment optimiser en toute sécurité les index de la base de données ownCloud 10
Comment optimiser en toute sécurité les index de la base de données ownCloud 10
Un affichage lent des dossiers ownCloud, une synchronisation retardée ou une tâche cron de longue durée peuvent indiquer un goulot d'étranglement au niveau de la base de données. Cependant, l'ajout d'index sans précaution peut nuire à la fiabilité du serveur. Dans ownCloud Server 10, il est recommandé de commencer par vérifier la version exacte et la base de données, de sauvegarder l'instance, puis d'appliquer uniquement les modifications de schéma documentées pour cette version d'ownCloud. Les index facilitent les recherches et les jointures sélectives ; ils consomment également de l'espace de stockage et augmentent la charge de travail des insertions et des mises à jour.
Il existe une distinction importante entre les versions : la documentation officielle actuelle d’ownCloud Server 10.16 décrit les opérations de base de données telles que la conversion, mais ne mentionne pas de db:add-missing-indicescommande de réparation générale. Cette commande figure dans la documentation de Nextcloud, qui est un produit distinct. Vérifiez les commandes sur votre propre serveur avant d’exécuter une commande copiée depuis un autre projet.
Cette occ statuscommande confirme que l'interface de ligne de commande atteint l'installation ownCloud avant le début des opérations sur la base de données.
Ce qu'un index de base de données peut — et ne peut pas — corriger
Un index de base de données est une structure auxiliaire qui permet à la base de données de localiser les lignes correspondantes sans parcourir l'intégralité de la table. Il peut améliorer une requête qui filtre, joint ou trie sur des colonnes indexées lorsque la requête et la distribution des données rendent cet index utile. Il ne s'agit pas d'un mécanisme général de gain de vitesse : l'optimiseur de base de données peut choisir judicieusement de parcourir l'intégralité de la table pour les petites tables ou les requêtes qui renvoient une grande partie des lignes.
Les index ont également un coût. Ils occupent de l'espace disque, nécessitent une maintenance lors de la modification des lignes et peuvent ralentir les opérations d'écriture intensives. L'ajout d'index supplémentaires sur les tables principales d'ownCloud peut engendrer des conflits avec les migrations de schéma ou les exigences des applications. N'ajoutez pas d'index simplement parce qu'un nom de colonne semble important ; identifiez d'abord la requête lente et vérifiez que le plan d'exécution est effectivement inefficace.
1. Confirmez la configuration d'ownCloud et la base de données.
Exécutez les commandes depuis le répertoire d'installation d'ownCloud en tant que compte serveur web. Sur une installation Debian ou Ubuntu standard, ce compte estwww-data :
cd /var/www/owncloud
sudo -u www-data php occ status
sudo -u www-data php occ list
Utilisez le chemin d'accès et le compte de service configurés sur votre hôte. Dans Docker, utilisez la syntaxe de commande documentée du conteneur ; par exemple, le manuel ownCloud utilise ` npm install ownCloud` docker compose exec owncloud occ …. Le résultat de la commande indique la version d'ownCloud et le type de base de données. La liste des commandes affiche les fonctionnalités prises en charge par cette installation ; si une commande de réparation de base de données n'y figure pas, les instructions Nextcloud ne s'appliquent pas.
Consultez la vue d'ensemble de l'administration d'ownCloud pour détecter les avertissements de configuration et notez les noms exacts des tables et des index si un index est manquant. Notez également les éléments lents : une recherche de fichier, une page de partage, une tâche en arrière-plan ou une opération de synchronisation. Une plainte vague comme « ownCloud est lent » ne justifie pas une modification du schéma.
Utilisez la occliste des commandes installées comme vérification de version ; la disponibilité des commandes peut différer entre ownCloud et Nextcloud.
2. Sauvegardez vos données avant de modifier la structure de la base de données.
Avant toute création d'index, migration ou réparation de base de données, effectuez une sauvegarde complète de la base de données et de la configuration ownCloud, et assurez-vous de savoir comment les restaurer. Le guide de sauvegarde ownCloud recommande d'activer le mode maintenance avant d'effectuer une sauvegarde de la base de données. La commande exacte de sauvegarde dépend du système de gestion de bases de données utilisé : MySQL, MariaDB, PostgreSQL ou SQLite. Utilisez les outils correspondants et protégez vos identifiants et vos fichiers de sauvegarde.
sudo -u www-data php occ maintenance:mode --on
# Back up the database and ownCloud configuration with your vendor's procedure
# Confirm that the backup can be restored before proceeding
Le mode maintenance empêche toute utilisation normale pendant la maintenance ; prévoyez une fenêtre de maintenance pour la production. Ne copiez pas un fichier de base de données en production au lieu d'une sauvegarde compatible avec la base de données. Une fois les travaux et les vérifications de base terminés, rétablissez le mode normal de l'instance.
sudo -u www-data php occ maintenance:mode --off
Avant de tenter une modification d'index ou de schéma, assurez-vous de disposer d'une base de données et d'une sauvegarde de configuration restaurables.
3. Utilisez les migrations gérées par ownCloud pour les modifications du schéma ownCloud
Commencez par mettre à jour ownCloud et ses applications compatibles vers une version prise en charge en suivant les instructions de mise à niveau officielles et les notes de version. Les mises à niveau d'ownCloud effectuent des migrations de base de données qui font évoluer le schéma, y compris les modifications requises par le noyau et les applications. Il est recommandé d'exécuter la procédure de mise à niveau de la base de données en entier occpour les systèmes importants, car une requête web peut expirer.
Si l'aperçu de l'administrateur signale toujours un index manquant, consultez sudo -u www-data php occ listla documentation officielle correspondant à votre version d'ownCloud. Certains guides tiers mentionnent db:add-missing-indicescette commande, mais elle n'est pas documentée dans la section relative aux commandes de base de données d'ownCloud 10.16 examinée dans cet article. Si votre version mentionne cette commande, consultez son aide locale et confirmez la procédure auprès de la documentation ou du fournisseur de l'application avant de l'exécuter. Si la commande est absente, n'installez pas de commande Nextcloud, ne modifiez pas manuellement les tables principales d'ownCloud et ne copiez pas de code SQL depuis une autre version. Communiquez l'avertissement, la version d'ownCloud, le type de base de données et les journaux pertinents à ownCloud ou au responsable de l'application.
Les commandes de base de données présentées dans le manuel ownCloud (telles que ` conversion` db:convert-typeou ` db:convert-mysql-charsetconversion`) servent à des tâches de conversion spécifiques ; ce ne sont pas des commandes génériques d’optimisation d’index. N’utilisez pas une commande de conversion pour tenter d’améliorer la vitesse des requêtes.
4. Analyser une requête lente à l'aide d'outils natifs de la base de données
Lorsque vous identifiez une requête SQL lente, utilisez les outils d'analyse fournis par votre base de données. MySQL et MariaDB proposent EXPLAIN`pip`, PostgreSQL également EXPLAIN, avec ses propres options et résultats. Commencez par un plan d'exécution qui explique la requête sans l'exécuter. Soyez prudent avec l'option `analyze` : certaines variantes de bases de données exécutent l'instruction, ce qui peut s'avérer risqué pour les écritures ou coûteux sur une base de données de production fortement sollicitée.
EXPLAIN SELECT ... FROM oc_filecache WHERE ...;
Vérifiez si le plan d'exécution lit beaucoup plus de lignes que celles renvoyées par la requête, si l'index attendu est pris en compte et si le tri ou la jointure prédomine. Un index non sélectionné par l'optimiseur n'est pas automatiquement manquant : si la requête renvoie de nombreuses lignes, une analyse complète peut s'avérer plus économique. Comparez la même charge de travail sur une copie de test représentative avant d'apporter des modifications spécifiques à la base de données. Le SQL et la structure des tables d'OwnCloud peuvent évoluer d'une version à l'autre ; un index qui semble utile aujourd'hui peut devenir redondant ou dangereux après une mise à niveau.
Consultez le plan d'exécution spécifique à la base de données pour la requête réellement lente avant d'envisager un index personnalisé.
5. Revérifiez le symptôme initial
Une fois la migration prise en charge ou la réparation d'index approuvée terminée, consultez à nouveau la vue d'ensemble de l'administrateur ownCloud et examinez les journaux du serveur et de la base de données pour détecter les erreurs. Répétez l'action utilisateur ou la tâche en arrière-plan qui était lente, en utilisant un volume de données et des conditions similaires. Comparez le temps de réponse, l'utilisation du processeur ou des E/S de la base de données, ainsi que le nombre de lignes examinées lorsque votre base de données fournit ces mesures. Ne signalez pas d'amélioration des performances suite à un seul test mineur ou au chargement d'une page sans rapport avec le problème.
Si l'avertissement disparaît mais que l'action reste lente, le goulot d'étranglement se situe probablement ailleurs : latence du stockage, processus PHP, allers-retours réseau, arriérés de tâches cron, verrouillage de fichiers ou mise en cache en mémoire. ownCloud recommande la mise en cache en mémoire et le verrouillage de fichiers transactionnels externes pour réduire la charge de la base de données. Ces paramètres concernent des opérations différentes de celles d'un index de base de données ; configurez-les donc conformément au manuel officiel et à votre topologie de déploiement.
Liste de contrôle rapide
Consignez la version d'ownCloud, le type de base de données, l'action concernée et tout avertissement de configuration précis.
Vérifiez la liste des commandes installéesocc ; distinguez les instructions ownCloud de celles de Nextcloud.
Effectuez et vérifiez une sauvegarde cohérente de la base de données et de la configuration avant toute intervention sur le schéma.
Utilisez les étapes de mise à niveau et de migration d'applications ownCloud prises en charge ; ne modifiez pas manuellement les tables principales sans instructions spécifiques à la version.
Utilisez les outils de plan de requête du fournisseur de base de données sur la requête réellement lente, puis répétez la même charge de travail pour vérifier le résultat.
Il n'existe pas d'ensemble d'index universel permettant d'accélérer systématiquement toutes les installations d'ownCloud 10. La méthode durable consiste à maintenir à jour le schéma pris en charge, à diagnostiquer la requête réelle, à ne modifier que les éléments documentés par le fournisseur ou le responsable de la maintenance, puis à vérifier la même charge de travail par la suite.