MySQL dedicado vs SQLite por tenant: eligiendo el aislamiento de base de datos en WordPress
Elegir cómo aislar los datos de cada tenant es la decisión más importante en un proyecto multi-tenant de WordPress. Esto establece el límite máximo del aislamiento, la sobrecarga operativa mínima y la facilidad con la que puedes mover un tenant más adelante. GrabWP Tenancy Pro te ofrece tres opciones de base de datos por tenant, y la respuesta correcta depende del tenant, no de ningún dogma. Esta guía explica qué aísla cada opción, cuándo debes usar cada una y por qué nunca estás atado a tu primera elección.
Las tres opciones y qué aislamiento ofrece cada una

GrabWP Tenancy Pro soporta tres formas de almacenar los datos de un tenant, en orden ascendente según su nivel de aislamiento.
MySQL compartido con prefijos de tabla únicos. Cada tenant vive en la misma base de datos MySQL, separado por un prefijo de tabla único. Las tablas del Tenant A y las del Tenant B se encuentran una al lado de la otra, y se distinguen solo por sus nombres. Esto es un aislamiento parcial: los datos están separados lógicamente pero ubicados físicamente juntos, compartiendo una base de datos, un pool de conexiones y el mismo radio de impacto. Es la opción con menor sobrecarga operativa y el único modo de aislamiento en el plugin gratuito GrabWP Tenancy (combinado con uploads aislados).
Base de datos MySQL dedicada por tenant. Cada tenant tiene su propia base de datos MySQL. Esto ofrece un aislamiento de datos completo sin riesgo de cruce entre tenants: una consulta en un tenant no puede acceder a las tablas de otro tenant porque están en bases de datos separadas, a menudo con credenciales independientes. Además, mantienes todas las funciones de MySQL, incluyendo las herramientas estándar de backup, replicación y monitoreo.
Base de datos SQLite por tenant. Los datos de cada tenant viven en su propio archivo SQLite. Esto también proporciona un aislamiento de datos completo sin riesgo de cruce entre tenants, pero sin tener que aprovisionar un servidor de base de datos. La librería de integración de SQLite viene incluida dentro de Pro, por lo que no hay que instalar un plugin por separado, y la opción de SQLite aislado siempre está disponible. Los nombres de archivo usan un hash por tenant por seguridad y compatibilidad, y el manejo de errores de SQLite suprime los errores HTML detallados mientras guarda en los logs las consultas fallidas.
En resumen: tanto MySQL dedicado como SQLite ofrecen un aislamiento completo. El prefijo compartido sacrifica el aislamiento para obtener la menor sobrecarga operativa. Tu verdadera elección, la mayoría de las veces, será entre los dos motores de aislamiento completo.
Cuándo SQLite por tenant es la decisión correcta
SQLite es la opción más simple de todas. No hay un servidor de base de datos que instalar, asegurar, afinar o mantener en funcionamiento. Un tenant es un solo archivo, lo que hace que el aprovisionamiento sea casi instantáneo y la portabilidad sea trivial: copiar, clonar o archivar un tenant es una operación de archivos, no el típico proceso de dump y restore de una base de datos. La clonación de tenants funciona con bases de datos en SQLite, por lo que levantar un nuevo tenant a partir de uno existente sigue siendo muy rápido y autocontenido.
Elige SQLite por tenant cuando:
- Los tenants son pequeños o de baja concurrencia. SQLite destaca cuando las escrituras no son muy concurrentes. Para sitios corporativos, micrositios de clientes, portafolios y tenants de bajo tráfico, es más que suficiente.
- La portabilidad importa. Un único archivo con hash por tenant es fácil de mover entre servidores, hacer snapshots o transferir. Ningún estado de base de datos del lado del servidor viaja con él.
- Quieres un aprovisionamiento mínimo. No hay usuarios de MySQL, ni pasos para crear la base de datos, ni credenciales de conexión que gestionar por tenant. El motor está incluido en Pro y listo para usar.
SQLite es la opción por defecto más pragmática para flotas con muchos tenants pequeños donde la simplicidad operativa y la portabilidad por tenant superan el rendimiento bruto de escrituras concurrentes.
Cuándo gana MySQL dedicado
MySQL dedicado es la opción más sólida para tenants con mucho tráfico y escrituras. MySQL está diseñado para conexiones y escrituras concurrentes, así que un tenant con muchos comentarios, actividad de checkout en WooCommerce, publicaciones frecuentes o muchos usuarios conectados simultáneamente necesita su propia base de datos MySQL en lugar de un solo archivo.
Elige MySQL dedicado por tenant cuando:
- El tenant tiene muchas escrituras o tráfico alto. Las escrituras concurrentes son exactamente la razón de ser de un servidor de base de datos real. SQLite serializa las escrituras, MySQL no.
- Dependes de herramientas estándar. Los backups point-in-time, la replicación, las réplicas de lectura, los logs de consultas lentas y todo el ecosistema de herramientas de administración y monitoreo de MySQL funcionan a la perfección. Si tu equipo de operaciones ya administra MySQL, una base de datos dedicada por tenant encajará en sus rutinas actuales.
- Necesitas credenciales y cuotas por tenant. Las bases de datos separadas facilitan la limitación del acceso y te permiten gestionar cada tenant de forma aislada a nivel de servidor.
Sigues obteniendo un aislamiento de datos completo, igual que con SQLite, pero con la capacidad de rendimiento y la madurez operativa de un servidor de base de datos completo. El precio a pagar es el aprovisionamiento: cada tenant necesita una base de datos y, por lo general, sus propias credenciales.
Cuándo el prefijo compartido es aceptable
El aislamiento por prefijo compartido no es incorrecto, es un intercambio deliberado. Te ofrece la menor sobrecarga de todas las opciones: una base de datos, una conexión y ningún aprovisionamiento por tenant más allá de un prefijo. Eso es genuinamente útil en el contexto adecuado.
El prefijo compartido es aceptable cuando:
- Los tenants son de bajo riesgo y de confianza. Sitios internos, entornos de staging o tenants bajo un mismo propietario donde la barrera de seguridad o legal entre ellos es flexible.
- Estás optimizando para densidad y simplicidad. Agrupar muchos tenants pequeños en una sola base de datos mantiene el tamaño reducido y la configuración al mínimo.
- Estás usando el plugin gratuito. El plugin base GrabWP Tenancy incluye prefijo compartido y uploads aislados, lo cual es un excelente punto de partida para validar un modelo multi-tenant antes de actualizar.
Sé honesto sobre lo que esto significa: aislamiento parcial. Los datos están separados lógicamente pero comparten una base de datos físicamente, por lo que no tienes el nivel de riesgo nulo entre tenants que sí te da una base de datos dedicada o un archivo SQLite. Si tus tenants son clientes independientes con requisitos reales de aislamiento, cámbiate a un motor de aislamiento completo.
No estás atado: migración entre bases de datos
El detalle más liberador de toda esta decisión es que tu primera elección no es permanente. GrabWP Tenancy Pro soporta la migración entre bases de datos, permitiéndote hacer un restore de un tenant a través de distintos motores. Puedes mover un tenant entre MySQL compartido, MySQL dedicado y SQLite en cualquier dirección.
Eso cambia por completo la importancia de la decisión. Comienza un nuevo tenant en SQLite por simplicidad y, cuando su tráfico y volumen de escrituras crezcan, migralo a una base de datos MySQL dedicada. Consolida un grupo de bases de datos dedicadas sin mucha actividad de vuelta a archivos SQLite para reducir tu carga operativa. Sube de nivel un tenant con prefijo compartido a un aislamiento completo una vez que pase de prueba a producción. Como la migración es un proceso de restore entre motores, solo estás eligiendo un punto de partida, no algo definitivo.
Combina esto con backups y clonación de tenants, y cada tenant se convierte en una unidad portátil que puedes mover, hacer snapshots y reubicar según cambien sus necesidades. Para la parte de backups de este flujo de trabajo, revisa nuestra estrategia de backup de tenants para un WordPress multi-tenant, y para conocer el modelo de aislamiento más amplio sin Multisite, mira cómo aislar sitios de clientes en WordPress sin Multisite.
Un marco de decisiones
Sigue esta breve lista y detente en la primera opción que encaje:
- ¿Los tenants necesitan un aislamiento completo sin riesgo de cruce entre ellos? Si la respuesta es no (son internos, de confianza o de bajo riesgo), el prefijo compartido es aceptable y la opción más barata. Si es sí, continúa.
- ¿El tenant tiene muchas escrituras, tráfico alto o tus operaciones dependen de herramientas de MySQL? Si es sí, usa una base de datos MySQL dedicada por tenant. Las escrituras concurrentes y las herramientas estándar son su punto fuerte.
- ¿El tenant es más pequeño, tiene baja concurrencia y tus prioridades son la simplicidad y la portabilidad? Si es sí, usa SQLite por tenant. Sin un servidor que aprovisionar, un solo archivo con hash por tenant y muy fácil de mover o clonar.
- ¿No estás seguro o esperas que el tenant crezca? Empieza con SQLite por simplicidad y migra a MySQL dedicado más adelante. La migración entre bases de datos significa que tu elección es reversible.
Un patrón muy práctico para una flota mixta: usa SQLite por defecto para la gran mayoría de tus tenants pequeños, MySQL dedicado para el grupo de sitios con más demanda y prefijo compartido solo para los sitios internos de confianza. Como puedes migrar entre motores, puedes dejar que cada tenant empiece de forma sencilla y se gane el salto a un motor más robusto cuando la carga lo justifique.
Empieza ahora
El plugin gratuito GrabWP Tenancy te da aislamiento por prefijo compartido y uploads aislados para validar tu configuración multi-tenant. Cuando necesites un aislamiento completo por tenant, motores de MySQL dedicado o SQLite y migración entre bases de datos, GrabWP Tenancy Pro desbloquea las tres opciones de base de datos por $9.99/month. Adapta el motor a cada tenant y mueve a los tenants entre motores cada vez que sus necesidades cambien.
Preguntas frecuentes
- ¿Es seguro usar SQLite por tenant en producción para WordPress?
- Sí, para las cargas de trabajo adecuadas. SQLite por tenant te ofrece un aislamiento de datos completo porque cada tenant vive en su propio archivo de base de datos, sin necesidad de aprovisionar un servidor. Se adapta mejor a tenants pequeños con baja concurrencia y facilita su portabilidad. Para tenants con mayor tráfico y muchas escrituras, una base de datos MySQL dedicada maneja mejor las escrituras concurrentes y las herramientas estándar. GrabWP Tenancy Pro soporta ambos, por lo que puedes elegir el motor que mejor se adapte a cada tenant.
- ¿Puedo mover un tenant de SQLite a MySQL más adelante?
- Sí. GrabWP Tenancy Pro soporta la migración entre bases de datos, permitiéndote hacer un restore de un tenant entre distintos motores de base de datos, ya sea MySQL compartido, MySQL dedicado o SQLite. No estás atado a tu primera elección, por lo que puedes comenzar un tenant en SQLite y moverlo a una base de datos MySQL dedicada cuando su tráfico crezca.
- ¿Qué aislamiento ofrece realmente un prefijo de tabla compartido?
- Una base de datos MySQL compartida con prefijos de tabla únicos mantiene las tablas de cada tenant separadas lógicamente dentro de una misma base de datos, lo cual es la opción con menor sobrecarga operativa pero también el aislamiento más débil. Una base de datos MySQL dedicada o un archivo SQLite por tenant te da un aislamiento de datos completo sin ningún riesgo de cruce entre tenants. El plugin gratuito GrabWP Tenancy viene con aislamiento por prefijo compartido; MySQL dedicado y SQLite son funciones de la versión Pro.
Editorial standards: Our content is written by WordPress experts with hands-on multi-tenancy experience. Articles are fact-checked and regularly updated to ensure accuracy.