Inicio
» ADMINISTRADOR DE RED
»
Cómo optimizar de forma segura los índices de la base de datos de ownCloud 10
Cómo optimizar de forma segura los índices de la base de datos de ownCloud 10
Una visualización lenta de las carpetas de ownCloud, una sincronización retrasada o una tarea programada de larga duración pueden indicar un cuello de botella en la base de datos, pero añadir índices sin criterio puede reducir la fiabilidad del servidor. En ownCloud Server 10, lo más recomendable es comprobar la versión exacta de la base de datos, realizar una copia de seguridad de la instancia y, a continuación, utilizar únicamente los cambios de esquema documentados para esa versión de ownCloud. Los índices facilitan las búsquedas y las uniones selectivas; sin embargo, también consumen espacio de almacenamiento y añaden trabajo a las inserciones y actualizaciones.
Es importante tener en cuenta que la documentación oficial de ownCloud Server 10.16 describe operaciones de base de datos como la conversión, pero no incluye un db:add-missing-indicescomando de reparación general. Este comando aparece en la guía de Nextcloud, un producto independiente. Antes de ejecutar un comando copiado de otro proyecto, compruebe los comandos en su propio servidor.
El occ statuscomando confirma que la interfaz de línea de comandos (CLI) accede a la instalación de ownCloud antes de que comience el trabajo con la base de datos.
Lo que un índice de base de datos puede —y no puede— solucionar
Un índice de base de datos es una estructura auxiliar que ayuda a la base de datos a localizar filas coincidentes sin necesidad de escanear toda la tabla. Puede mejorar una consulta que filtra, combina o ordena por columnas indexadas cuando la consulta y la distribución de los datos hacen que dicho índice sea útil. No se trata de una solución general para aumentar la velocidad: el optimizador de la base de datos puede elegir correctamente el escaneo de tabla para tablas pequeñas o consultas que devuelven una gran cantidad de filas.
Los índices también tienen un coste. Ocupan espacio en disco, requieren mantenimiento cuando cambian las filas y pueden ralentizar las operaciones con muchas escrituras. Los índices adicionales en las tablas principales de ownCloud pueden entrar en conflicto con las migraciones de esquema o las expectativas de la aplicación. No añada un índice solo porque el nombre de una columna parezca importante; primero identifique la solicitud lenta y confirme que el plan de consulta real es ineficiente.
1. Confirma la compilación y la base de datos de ownCloud.
Ejecute los comandos desde el directorio de instalación de ownCloud como la cuenta del servidor web. En una instalación típica de Debian o Ubuntu, esa cuenta es www-data:
cd /var/www/owncloud
sudo -u www-data php occ status
sudo -u www-data php occ list
Utilice la ruta y la cuenta de servicio configuradas en su host. En Docker, utilice el comando documentado del contenedor; por ejemplo, el manual de ownCloud utiliza docker compose exec owncloud occ …. La salida de estado identifica la versión de ownCloud y el tipo de base de datos. La lista de comandos muestra lo que admite esta instalación; si no aparece un comando de reparación de base de datos, no asuma que se aplican las instrucciones de Nextcloud.
Consulta la descripción general del administrador de ownCloud para ver las advertencias de configuración y anota los nombres exactos de las tablas e índices si se informa de la falta de alguno. Registra también qué es lo que funciona lento: una búsqueda de archivos, una página para compartir, una tarea en segundo plano o una operación de sincronización. Una queja vaga como «ownCloud es lento» no justifica un cambio de esquema.
Utilice la lista de comandos instalados occcomo comprobación de versión; la disponibilidad de los comandos puede variar entre ownCloud y Nextcloud.
2. Realice una copia de seguridad antes de cambiar las estructuras de la base de datos.
Antes de crear índices, migrar o reparar la base de datos, realice una copia de seguridad consistente de la base de datos y la configuración de ownCloud, y asegúrese de saber cómo restaurarla. La guía de copias de seguridad de ownCloud recomienda activar el modo de mantenimiento antes de realizar una copia de seguridad de la base de datos. El comando exacto para volcar la base de datos depende de si el servidor utiliza MySQL o MariaDB, PostgreSQL o SQLite; utilice las herramientas del proveedor de la base de datos correspondiente y proteja las credenciales y los archivos de copia de seguridad.
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
El modo de mantenimiento impide el uso normal mientras se realiza el mantenimiento; planifique una ventana de servicio para la producción. No copie un archivo de base de datos en producción como sustituto de una copia de seguridad con reconocimiento de base de datos. Una vez finalizados el trabajo y las comprobaciones básicas, devuelva la instancia al modo normal.
sudo -u www-data php occ maintenance:mode --off
Antes de intentar modificar un índice o un esquema, disponga de una copia de seguridad restaurable de la base de datos y de la configuración.
3. Utilice las migraciones gestionadas por ownCloud para los cambios de esquema de ownCloud.
Para actualizar ownCloud y sus aplicaciones compatibles, siga las instrucciones y notas de la versión oficiales. Las actualizaciones de ownCloud implican migraciones de la base de datos que modifican el esquema, incluyendo los cambios necesarios para el núcleo y las aplicaciones. La guía oficial recomienda completar el proceso de actualización de la base de datos occen sistemas grandes, donde una solicitud web podría agotar el tiempo de espera.
Si la vista general del administrador sigue informando de un índice faltante, inspeccione sudo -u www-data php occ listy la documentación oficial pertinente para su compilación exacta de ownCloud. Algunas guías de terceros muestran db:add-missing-indices, pero el comando no está documentado en la sección de comandos de base de datos de ownCloud 10.16 revisada para este artículo. Si su compilación enumera ese comando, lea su ayuda local y confirme el procedimiento con la documentación o el proveedor de la aplicación para esa compilación antes de ejecutarlo. Si el comando no está presente, no instale un comando de Nextcloud, edite manualmente las tablas principales de ownCloud ni copie SQL de otra versión. Comparta la advertencia, la versión de ownCloud, el tipo de base de datos y los registros pertinentes con ownCloud o el mantenedor de la aplicación.
Los comandos de base de datos que se muestran en el manual de ownCloud, como db:convert-typeo , db:convert-mysql-charsetsirven para tareas de conversión específicas; no son comandos genéricos de optimización de índices. No utilice un comando de conversión para intentar mejorar la velocidad de las consultas.
4. Investigar una consulta lenta con herramientas nativas de la base de datos.
Cuando identifiques una consulta SQL lenta, utiliza las herramientas de análisis que ofrece tu base de datos. MySQL y MariaDB proporcionan EXPLAIN; PostgreSQL también proporciona EXPLAIN, con su propia salida y opciones. Comienza con un plan que explique la consulta sin ejecutarla. Ten cuidado con la opción de análisis: algunas variantes de bases de datos ejecutan la instrucción, lo que puede ser inseguro para las escrituras o costoso en una base de datos de producción con mucho tráfico.
EXPLAIN SELECT ... FROM oc_filecache WHERE ...;
Compruebe si el plan lee muchas más filas de las que devuelve la consulta, si se tiene en cuenta el índice esperado y si la ordenación o la unión de datos predominan en el trabajo. Un índice no seleccionado por el optimizador no significa automáticamente que falte: si la consulta devuelve muchas filas, un escaneo completo podría ser más económico. Compare la misma carga de trabajo en una copia de prueba representativa antes de realizar cambios específicos de la base de datos. El SQL principal de OwnCloud y la estructura de las tablas pueden cambiar entre versiones, por lo que un índice que parece útil hoy podría volverse redundante o inseguro después de una actualización.
Lea el plan de consulta específico de la base de datos para la consulta realmente lenta antes de considerar cualquier índice personalizado.
5. Vuelva a comprobar el síntoma original.
Una vez finalizada una migración compatible o una reparación de índice aprobada, revise nuevamente la vista general del administrador de ownCloud y los registros del servidor y la base de datos en busca de errores. Repita la misma acción de usuario o tarea en segundo plano que resultó lenta, utilizando un volumen de datos y condiciones similares. Compare el tiempo de respuesta, el uso de CPU o E/S de la base de datos y las filas examinadas donde la base de datos exponga estas mediciones. No informe una mejora de rendimiento basada en una sola prueba pequeña o una carga de página no relacionada.
Si la advertencia desaparece, pero la misma acción sigue siendo lenta, el cuello de botella podría estar en otro lugar: latencia de almacenamiento, procesos PHP, viajes de ida y vuelta de red, acumulación de tareas programadas (cron), bloqueo de archivos o almacenamiento en caché de memoria. ownCloud recomienda el almacenamiento en caché de memoria y el bloqueo de archivos transaccionales externos para reducir la carga de la base de datos. Estas configuraciones abordan tareas diferentes a las de un índice de base de datos, por lo que deben configurarse según el manual oficial y la topología de su implementación.
Lista de verificación rápida
Registre la versión de ownCloud, el tipo de base de datos, la acción afectada y cualquier advertencia de configuración exacta.
Compruebe la occlista de comandos instalados; distinga las instrucciones de ownCloud de las de Nextcloud.
Realice y verifique una copia de seguridad coherente de la base de datos y la configuración antes de trabajar en el esquema.
Utilice los pasos de actualización y migración de aplicaciones de ownCloud compatibles; no modifique manualmente las tablas principales sin instrucciones específicas para cada versión.
Utilice las herramientas de planificación de consultas del proveedor de la base de datos en la consulta realmente lenta y, a continuación, repita la misma carga de trabajo para verificar el resultado.
No existe un conjunto de índices universal que acelere todas las instalaciones de ownCloud 10. La estrategia más eficaz consiste en mantener actualizado el esquema compatible, diagnosticar la consulta real, modificar únicamente lo que documente el proveedor o el responsable del mantenimiento, y verificar posteriormente la misma carga de trabajo.