Entendiendo la DB de WordPress

Dificultad del post: facilmediadificil
[Total: 3   Promedio: 5/5]
base de datos wordpress

Vamos a empezar por el principio: voy a intentar hacer un post que es bastante necesario para los usuarios medios/avanzados de WordPress que hacen mantenimientos de sus sitios o de los sitios web WordPress de sus clientes. Hoy vamos a intentar entender la base de datos de WordPress, su estructura, sus tablas y sus puntos débiles.

Como dije en el primer párrafo: empecemos por el principio.

WordPress es un CMS desarrollado en PHP que guarda los datos y ciertas partes de la configuración en una base de datos MySQL o MariaDB. Evidentemente, la base de datos es muy importante, ya que contiene lo más importante de un sitio web: EL CONTENIDO.

wordpress db

  • ¿Dónde se guarda tu contraseña de usuario? En la base de datos.
  • ¿Dónde se guarda la configuración de Yoast SEO? En la base de datos.
  • ¿Dónde se guardan tus posts y páginas? En la base de datos.
  • ¿En WooCommerce, dónde se guardan tus pedidos? En la base de datos.
  • ¿Dónde se guarda…? Bueno, no voy a seguir porque podría estar así todo el día.

En resumen, la DB de WordPress es muy importante y, en muchos casos, es necesario entenderla y saber qué podemos borrar y qué no.
La base de datos de WordPress se va llenando de “mierda” con el tiempo y poco a poco puede complicarnos ciertas labores básicas. Por ejemplo, con las copias de seguridad o con “slow queries” cada vez que algún plugin realiza una consulta un poco compleja a la base de datos.

Vamos a desglosar este artículo en los siguientes puntos o secciones, pero empezaremos por la teoría.

Icono suscripción Newsletter

¿Quieres
recibir mis articulos?

No te pierdas todos mis trucos para WordPress, CMS, Marketing Digital y WPO.

 

Base de datos de WordPress

Como he dicho, vamos a empezar con la teoría.

WordPress, de forma nativa, puede trabajar con bases de datos MySQL y también con MariaDB, ya que es un fork de MySQL y son totalmente compatibles. Además, mediante librerías externas también podemos hacer que WordPress funcione con SQLite, muy útil para casos en los que el hosting no ofrece la posibilidad de tener bases de datos MySQL.

wordpress db

Cuando instalamos WordPress, la instalación base crea las tablas necesarias en la base de datos MySQL o MariaDB. Las tablas que se crean son 12 y son las siguientes:

  • wp_commentmeta: Contiene metadatos de los comentarios del blog, guardados en la tabla wp_comments.
  • wp_comments: Contiene los comentarios, es decir, el contenido de los comentarios del blog.
  • wp_links: Aquí se guardan los enlaces si la funcionalidad está activada. Antiguamente siempre venía activada al instalar WordPress.
  • wp_options: Es una de las tablas más importantes de WordPress, ya que guarda toda la configuración e incluso algunos plugins pueden guardar datos de contenido ahí. En el 99% de los casos, las slow queries ocurren en consultas realizadas a esta tabla en instalaciones muy “saturadas”.
  • wp_postmeta: Contiene metadatos relacionados con los posts de la tabla wp_posts. En algunas ocasiones, cuando usamos themes o plantillas muy “completas”, se puede llenar muy rápido con datos irrelevantes y causar slow queries también.
  • wp_posts: Almacena el contenido de los posts, páginas y cualquier custom-post que se registre en la instalación de WordPress. Por ejemplo, los productos de un WooCommerce.
  • wp_termmeta: Contiene los metadatos de las categorías y etiquetas. En algunos casos, esta tabla también ha sido protagonista de problemas y errores que provocaban altos consumos de recursos de CPU.
  • wp_terms: Contiene las categorías y las etiquetas de la instalación WordPress.
  • wp_term_relationships: Almacena la asociación entre los posts y las categorías y etiquetas con las que están relacionados.
  • wp_term_taxonomy: Aquí se guardan las descripciones de las etiquetas y categorías, es decir, es una tabla relacionada con wp_terms.
  • wp_usermeta: Contiene metadatos de los usuarios registrados en la instalación de WordPress y que podemos encontrar en wp_users.
  • wp_users: Contiene los datos de los usuarios que tenemos en WordPress.

Las tablas las he puesto con el prefijo por defecto, “wp_”, pero podríamos sustituirlo por otro y, de hecho, es lo recomendable para mejorar la seguridad del CMS.

Este es el esquema generado con MySQL WorkBench de la base de datos por defecto de un WordPress con los distintos tipos de campos de datos:

wordpress db

Adicionalmente, cuando un plugin necesita guardar datos en la base de datos de WordPress (algo muy común) puede hacerlo en las tablas existentes o, por el contrario, crear tablas nuevas en la DB. Esto depende del tipo de datos que vaya a guardar el plugin.

Para que te hagas una idea, cuando instalamos WooCommerce en WordPress se añaden las siguientes tablas:

  • wp_wc_download_log
  • wp_wc_product_meta_lookup
  • wp_wc_tax_rate_classes
  • wp_wc_webhooks
  • wp_woocommerce_api_keys
  • wp_woocommerce_attribute_taxonomies
  • wp_woocommerce_downloadable_products_permissions
  • wp_woocommerce_log
  • wp_woocommerce_order_itemmeta
  • wp_woocommerce_order_items
  • wp_woocommerce_payment_tokementa
  • wp_woocommerce_paypal_tokens
  • wp_woocommerce_sessions
  • wp_woocommerce_shipping_zones
  • wp_woocommerce_shipping_zone_locations
  • wp_woocommerce_shipping_zone_methods
  • wp_woocommerce_tax_rates
  • wp_woocommerce_tax_rate_locations

Como ves, se añaden muchas más tablas a la base de datos MySQL de WordPress. Cuando esas tablas se empiezan a llenar y a acumular datos, es cuando la base de datos de WordPress empieza a coger peso.

base de datos wordpress

En el caso de WooCommerce, existe un problema mayor. A pesar de ser la solución para ecommerce más utilizada del mundo, con una cuota de mercado aplastante frente a la competencia, WooCommerce es un plugin para WordPress y depende de la arquitectura de WordPress para muchas cosas, como la base de datos.

En una tienda online WooCommerce todos los productos se meten en la tabla wp_posts y wp_postmeta, exactamente igual que si metemos entradas al blog. Por esta razón, cuando trabajamos con grandes catálogos de productos en WooCommerce podemos tener problemas con las consultas lanzadas a la base de datos para obtener los listados de los productos.

Existen plugins como Premmerce WooCommerce Performance Optimizer que sirven para crear índices de ciertas tablas de la base de datos que suelen almacenar muchos datos, con el fin de que las consultas SQL realizadas a esas tablas sean mucho más rápidas.

 

Optimizar la base de datos de WordPress

¿Y cuál es la razón por la que podemos querer optimizar el tamaño de la base de datos de WordPress? Ya que no podemos modificar la estructura de la base de datos de WordPress, lo que debemos hacer es aligerar la base de datos innecesarios.

base de datos wordpress

¿Cómo podemos optimizar la base de datos MySQL o MariaDB de un WordPress?

Existen varias formas, algunas manuales y otras automáticas. Evidentemente, las manuales requieren conocimientos más o menos avanzados sobre SQL y la estructura propia de la base de datos. Las formas automáticas se realizan mediante plugins para WordPress.

Antes de nada, vamos a aclarar ciertas cosas que nos podemos encontrar en la base de datos de WordPress y que podemos limpiar en algunos casos para conseguir reducir el tamaño:

  • Transients: Los transients son datos que se guardan en la tabla wp_options de WordPress y que funcionan como cache en base de datos para el funcionamiento de algunos plugins y themes. El problema de los transients es que, en instalaciones muy complejas, suelen acumularse muchos y, si no se borran, se quedan almacenados dando problemas con el tamaño y la complejidad.
  • Revisiones y borradores guardados: El editor de WordPress guarda borradores y revisiones de los posts y páginas (y otros custom-posts) abiertos cada cierto tiempo. Por un lado, las revisiones y borradores pueden servirnos de ayuda si tenemos algún problema de pérdida de datos aunque, por otro lado, ocupan espacio en la base de datos de WordPress.
  • Objetos de las papeleras: Normalmente los objetos que están en la papelera son porque no los queremos, así que podemos vaciar por completo las papeleras para liberar espacio en la base de datos de WordPress.
  • Trackbacks y Pingbacks: Los trackbacks y pingbacks pueden ser útiles para mucha gente, pero no para la mayoría. Actualmente, los pingbacks y trackbacks están desuso y casi siempre están desactivados. Sin embargo, en caso de tener alguno antiguo en nuestro WordPress podemos borrarlo de las tablas de la base de datos.
  • Metadatos huérfanos: Para la tabla wp_users, para la tabla wp_comments y para la tabla wp_posts existen tablas META que guardan metadatos del contenido de las tablas anteriormente mencionadas. En algunos casos, pueden quedarse metadatos huérfanos que debemos limpiar para evitar que ocupen espacio innecesario en la base de datos.

Vamos a mostrar métodos automáticos para optimizar la DB de WordPress, es decir, mediante plugins para WordPress. Finalmente, hablaremos de los métodos manuales para limpiar algunos elementos de la base de datos MySQL / MariaDB de WordPress.

Tal vez te pueda interesar también este videotutorial simple que he publicado en mi canal de Youtube:

 

Plugin WP Optimize para WordPress

El plugin WP Optimize para WordPress es uno de los plugins más conocidos para limpiar y optimizar la base de datos de WordPress.

Se trata de un plugin gratuito y que, actualmente, tiene algunas funcionalidades añadidas relacionadas con el WPO general de WordPress.

base de datos wordpress

Aunque también nos hará un listado completo de las tablas de la base de datos de WordPress, detectando las tablas huérfanas (de plugins desactivados) y permitiéndonos borrarlas para ahorrar espacio en la base de datos:

base de datos wordpress

Como he dicho, es un plugin de los más conocidos y de los más utilizados. Aunque reconozco que su limpiador no es el más potente, su funcionalidad para detectar tablas huérfanas es de las más útiles y potentes, ya que normalmente las tablas huérfanas con el paso del tiempo suelen traer bastantes problemas.

Si quieres más información acerca del plugin WP Optimize para WordPress, puedes hacer clic aquí: https://es.wordpress.org/plugins/wp-optimize/

 

Plugin Advanced Database Cleaner para WordPress

Se trata de un plugin con una muy buena interfaz y por eso quiero mencionarlo, aunque la versión gratuita se encuentra bastante limitada en todos los sentidos.

La versión gratuita de Advanced Database Cleaner para WordPress nos permitirá limpiar el contenido basura de las tablas de la base de datos, pero no nos dejará detectar tablas huérfanas o detectar distintos tipos de contenidos dentro de la tabla wp_options con el fin de optimizarla.

Como puedes ver en la siguiente imagen, su configuración se encuentra organizada en pestañas y listados:

base de datos wordpress

En la versión profesional de pago podremos gestionar las tareas programadas de la instalación de WordPress (algo que yo hago con Advanced Cron Manager en WordPress). También podremos gestionar la tabla wp_options y lo que se guarda en ella, además de detectar y permitirnos gestionar tablas y opciones huérfanas.

Simplemente añadir que, si quieres más información acerca de la versión gratuita, puedes encontrar su ficha en el repositorio de plugins de WordPress: https://es.wordpress.org/plugins/advanced-database-cleaner/

Si quieres más información acerca de la versión de pago, puedes encontrarla aquí: https://sigmaplugin.com/downloads/wordpress-advanced-database-cleaner

 

Plugin WP Rocket para WordPress

Finalmente, como siempre, vuelvo a hablar de WP Rocket para WordPress. Aunque es un plugin de cache, también tiene un módulo de optimización de la base de datos de WordPress que podemos aprovechar, pese a que es mucho más simple que cualquiera de las dos opciones que hemos comentado anteriormente.

base de datos wordpress

Como he dicho, se trata de un optimizador bastante básico. Tanto es así que yo, en mis clases de WPO, me lo suelo saltar ya que no lo tengo ni como opción.

Pero si usas WP Rocket y tienes pánico a instalar muchos plugins en tu WordPress, su limpiador de bases de datos puede ayudarte.

Si quieres más información acerca de WP Rocket para WordPress: https://alvarofontela.com/wprocket

También quiero mencionar, antes de acabar, que la herramienta de limpieza y optimización de base de datos de uno de los competidores de WP Rocket, Swift Performance, es algo más completa.

 

Plugin WP-DBManager para WordPress

WP-DBManager es un plugin gratuito muy simple que nos permitirá realizar algunas acciones interesantes en la base de datos de WordPress.

Ofrece bastante información sobre la base de datos y las tablas:

base de datos wordpress

Nos permite optimizar y reparar la base de datos MySQL o MariaDB, así como eliminar tablas que nosotros queramos, como las que guardan logs o registros que no son necesarios para el funcionamiento normal de WordPress:

base de datos wordpress

Evidentemente, todo esto también lo podemos realizar de igual forma con phpMyAdmin, pero resulta bastante útil poder hacerlo directamente con un plugin para WordPress.

Si quieres más información acerca de WP-DBManager, puedes encontrarla en la ficha del plugin en el repositorio de plugins de WordPress: https://es.wordpress.org/plugins/wp-dbmanager/

 

Optimización manual mediante consultas SQL

Todos los plugins anteriormente mencionados funcionan de una forma relativamente fácil, ya que simplemente ejecutan sentencias SQL en la base de datos.

Para ejecutar consultas SQL podemos hacerlo de distintas formas. Por un lado, podemos utilizar la herramienta PHPMyAdmin que tienen el 99,9% de los hosting:

optimizar base de datos de wordpress

La pestaña “SQL” que puedes ver en la imagen anterior es la que nos permitirá ejecutar sentencias SQL directamente en el servidor MySQL / MariaDB.

Empezamos con la eliminación de revisiones del editor de WordPress, con esta sentencia SQL las borraremos todas de la base de datos de WordPress:

Las revisiones normalmente, si no las utilizamos, sobran todas y solo ocupan espacio.

Con esta otra sentencia eliminarás todos los comentarios marcados como SPAM que hay en la base de datos de WordPress:

Y con esta otra sentencia SQL puedes borrar todos los comentarios que no han sido aprobados:

Con esta otra sentencia podemos limpiar los tags que no tienen ningún post asociado, lo cual es muy útil cuando hay una cantidad brutal de etiquetas / tags y no podemos seleccionarlas de forma manual:

Con esta otra sentencia SQL eliminarás todos los pingbacks y trackbacks que tenga la base de datos de WordPress. Muy útil si ya los tienes previamente desactivados:

Con este código eliminarás TODOS los transients que existan dentro de la base de datos de WordPress, en la tabla wp_options:

Es recomendable borrar los transients cada cierto tiempo para evitar que se sobrecargue la base de datos con contenido temporal.

Finalmente, también podemos optimizar la base de datos de WordPress con la función de optimización de phpMyAdmin:

optimizar base de datos de wordpress

Para ello, como puedes ver en la imagen anterior, seleccionamos todas las tablas de la DB de WordPress y seleccionamos la opción de optimizar en el desplegable.

 

Crear índices en la base de datos de WordPress

Una forma de optimizar la velocidad de carga al hacer consultas a la base de datos de WordPress es utilizando índices.

Realmente, un “índice” es lo que indica la palabra. Funciona como el índice de un libro y nos permiten encontrar contenido de forma más rápida dentro de una base de datos. Por eso, reduce los tiempos de respuesta de las consultas y también el consumo de recursos.

En instalaciones WordPress muy grandes se suelen utilizar índices en la tabla wp_options.

optimizar base de datos de wordpress

Podemos hacer esto de forma manual o utilizando plugins que nos mantendrán actualizado el índice sin que nosotros tengamos que mantenerlo.

Existen distintos plugins gratuitos para mantener un índice de todas las opciones que tengan el parámetro “autoload” en la tabla wp_options. Las opciones con el parámetro “autoload” son cargadas por la función wp_load_alloptions() y que se cargan en TODO el sitio web de forma global, aunque en algunas partes no son necesarias.

El problema es que, cuantos más registros tenga la tabla wp_options de WordPress, más registros tendrán el campo “autoload” en activado. Como resultado, tendremos problemas de slow queries en las cargas.

El plugin Add Index To Autoload te permitirá mantener un índice de las tablas con autoload de wp_options: https://wordpress.org/plugins/add-index-to-autoload/

Si quieres implementar de forma manual un índice para la tabla wp_options y los parámetros con autoload, puedes seguir el siguiente manual: https://guides.wp-bullet.com/add-mysql-index-wordpress-wp_options-table/

 

Optimizar la base de datos de WooCommerce

Cuando trabajamos con WordPress + WooCommerce, uno de los problemas que nos encontramos al trabajar con grandes catálogos es que tenemos problemas con las consultas grandes a la base de datos.

Como he dicho antes, el problema en gran parte viene por la arquitectura que tiene una tienda online creada con WooCommerce, donde los productos se guardan en la tabla donde se guardarían los posts en WordPress.

Existen plugins que nos permiten crear índices de la DB para la tabla wp_options y el parámetro autoload, pero también existe un plugin que nos permite crear índices de las tablas de contenido con el fin de acelerar un poco las consultas cuando tenemos en un WooCommerce un catalogo muy grande de productos.

optimizar base de datos de wordpress

El plugin Premmerce WooCommerce Performance Optimizer es un complemento que teóricamente, entre otras cosas, ajusta ciertas cosas en la forma en la que se cargan los productos desde la DB en WooCommerce con el fin de acelerar la carga.

La teoría dice que se consiguen mejores resultados, aunque tampoco puedo garantizar una mejoría ya que no lo he probado con webs lo suficientemente grandes. Estos son los tests que hizo su desarrollador y que nos ofrece en su blog oficial: https://premmerce.com/testing-online-store-500k-products-powered-woocommerce/

Puedes encontrar más información sobre Premmerce WooCommerce Performance Optimizer y su utilización en el post que he publicado sobre cómo optimizar WooCommerce y su WPO: https://alvarofontela.com/wpo-optimizar-woocommerce-tienda-online/

 

Reparar la base de datos de WordPress

Existen distintos métodos para reparar una base de datos de WordPress con daños o inconsistencia de datos.

¿Cómo puede dañarse una base de datos MySQL o MariaDB de WordPress? Pues fácil, una de las razones suele ser las constantes caídas del servidor MySQL / MariaDB hasta que algo se dañe.

Con phpMyAdmin podemos reparar la base de datos de WordPress:

optimizar base de datos de wordpress

Pero WordPress también trae un mecanismo de reparación de la base de datos que podemos activar desde el wp-config.php con el siguiente parámetro:

Si no sabes editar el wp-config.php de tu WordPress, puedes ver el siguiente vídeotutorial:

Después de añadir el parámetro al wp-config.php, nos vamos al navegador e introducimos la URL de tu sitio web como en este ejemplo:

Lo que obtendremos es un asistente que nos permitirá reparar o reparar y optimizar la base de datos MySQL.

optimizar base de datos de wordpress

Y esto es un ejemplo de caso en el que algunas tablas se reparan y otras no pueden repararse por distintas razones:

optimizar base de datos de wordpress

Cualquiera de estos dos métodos para reparar la DB de WordPress no son infalibles y, en muchos casos, es necesario jugar con las copias de seguridad existentes y reimplantar ciertas tablas para conseguir devolver la integridad a la base de datos y la consistencia a los datos.

 

Optimizar un servidor MySQL o MariaDB

Para finalizar, vamos a hablar de las optimizaciones que podemos hacer de un servidor de base de datos MySQL o MariaDB.

Existen unos cuantos parámetros que podemos tocar, sobre todo para adaptar el funcionamiento del servidor a las necesidades de la aplicación o aplicaciones que se ejecutan.

Cuando me toca optimizar servidores con webs muy pesadas y exigentes, normalmente utilizo el script MySQL Tuner, desarrollado en Perl.

optimizar base de datos de wordpress

Con el script MySQL Tuner analizo el rendimiento y la utilización del servicio MySQL o MariaDB durante las últimas 24 horas con un funcionamiento normal. Posteriormente, lo ejecuto para ver qué cambios tengo que hacer en los parámetros del archivo de configuración my.conf.

Si quieres más información acerca del script MySQL Tuner, puedes encontrarla aquí: https://github.com/major/MySQLTuner-perl

Como digo siempre en mis ponencias y en mis clases de WPO, para mí el primer paso para optimizar las consultas y el funcionamiento general de la base de datos es optimizar el funcionamiento del servidor MySQL o MariaDB mediante la configuración y correcta parametrización de los archivos de configuración.

En el caso de un servidor de hosting compartido especializado en WordPress, como los servidores de Raiola Networks, los parámetros de configuración de MariaDB están correctamente configurados para funcionar con la mayoría de CMS, especialmente el query_cache y los diferentes caches que se pueden configurar en el motor de base de datos.

Icono suscripción Newsletter

¿Quieres
recibir mis articulos?

No te pierdas todos mis trucos para WordPress, CMS, Marketing Digital y WPO.

Tal vez te interese...

Álvaro Fontela
Álvaro Fontela
Soy ponente en eventos de marketing digital, consultor WordPress y co-fundador de Raiola Networks, amante del mundo del motor (coches japoneses) y tecnófilo empedernido.

25 respuestas

  1. Muy interesante artículo. Soy usuario entre novato e intermedio de WordPress, con un sitio web en desarrollo y los datos que aportas en el artículo me han resultado útiles. Muchas gracias.

  2. Hola Alvaro… Como normalmente te sigo y creo que eres un crack jajaja. Y aunque no viene a cuento con este artículo, el Wp Rocket esta haciendo mal las redicciones de URL al «/» …. Aunque el canonical está en la URLs, por ejemplo, puedes ver que tienes https://alvarofontela.com/entendiendo-base-datos-mysql-wordpress sin «/» y se carga el artículo, y el https://alvarofontela.com/entendiendo-base-datos-mysql-wordpress/ por separado y se carga….

    Los bichos de Wp Rocket no han dicho nada, pero desde https://docs.wp-rocket.me/article/131-redirection-to-enforce-trailing-slash-on-urls que fue publicado el 10 de Octubre de este año. (POR CIERTO, SI UTILIZÁIS EL PLUGIN, entre jpg|png|jpeg|css|xml|txt|js|….añadir también la extensión |ico| que parece mentira que hagan estos errores los de Wp Rocket en no tener en cuenta el Favicon).

    Es para que tengas conocimiento, aquí cada cual que adopte la opción oportuna. Un saludo y gracias por el buen contenido de la web, Pau

    1. Muchas gracias por avisar Pau, voy a revisar, pero en mi caso el problema viene por otro lado, por Nginx, ya que hace una semana y poco hice un cambio de servidor y creo que me olvide de ajustar el tema de los slash en Nginx para que redireccion de sin slash a con slash siempre.

      Un saludo y muchas gracias.

  3. Hola. Consulta. Al instalar wordpress localhost, no me aparece el cartel de finalizada la instalación…sino uno de conexion critica. Las 12 tablas se generan en la base de datos, pero la wp_users está vacia. Le inserto un usuario y clave en en wp_users para poder acceder luego por localhost/ , logro entrar pero no me aparece el dashboard…solo aparece mi pagina en blanco. Probe en 2 portatiles y me pasa lo mismo. Podrás guiarme ?

    1. Hola Pablo, es un caso bastante raro, pero sin saber mas datos no puedo ayudarte.

      Si puedes, envíame a través del formulario de contacto el error exacto y el stack que estas usando, ya que no es el típico error que suelen dar las instalaciones de WordPress, tiene que ser algo del stack por instalarlo en local…

  4. Muy buen contenido y muy bien desmenuzado, Álvaro!

    La verdad es que los temas de BD y otros aspectos técnicos de WP no son mi fuerte y este post me lo guardo en la lista de Musts.

    Un abrazo, compañero!

  5. Hola. La explicacion esta muy interesante. Me saco muchas dudas. Pero tengo una pregunta. Si quiero manejar mis propias bases de datos que ya tengo creadas para mi sistema comercial con tablas de articulos clientes proveedores y demas. Se puede conectar wordpress a esa base de dato y hacer consultas o carga de datos.? Gracias.

    1. Hola Sergio, con PHP siempre podrías hacerlo, pero debes tener cuidado con las actualizaciones y con distintos procedimientos «complejos», ya que al núcleo de WordPress no le «gusta» que se lo salten (y evidentemente esas consultas no puedes hacerlas a través del núcleo de WordPress.

      Lo que puedes hacer es crear un API PHP para esas tablas de clientes, proveedores y demás, y partir de ahí con una conexión desde WordPress.

      1. Alvaro. Muchas gracias por la informacion brindada. Esa era mi gran duda. Bueno vamos a ver q hacemos porque necesito si o si interactuar con mis bases de datos q ya tengo en funcionamiento desde mis sistemas q no son web.
        Gracias.

  6. Buenas te doy un 10 al artículo. Impresionante.
    Tuve un problema gordo de low queries en mi hosting compartido .
    Hice limpieza de la BD a través Perfmatters y desactivó pinkbacks, revisiones, etc.. (por cierto gracias a tu recomendación)
    Además desactivé el cron de WP y el Heartbeat como me sugirieron y me lo resolvió.

    ¿Faltaría algo más?
    Por otro lado quisiera algún sistema o plugin para monitorizar la BD.
    He indagado en el post que recomiendas y me llevan al servicio New Relic , que tal lo ves?
    https://guides.wp-bullet.com/add-mysql-index-wordpress-wp_options-table/

    1. Hola Isa, puedes utilizar el plugin Query Monitor para ver las slow queries y dependiendo de lo que te diga, puedes tomar decisiones: https://alvarofontela.com/query-monitor-solucionar-detectar-problemas-wordpress/

      New Relic esta muy bien, pero es arma pesada, es decir, requiere la instalación de una extensión PHP (que en un hosting compartido no puedes hacerlo), requiere una cuenta en New Relic, que no es barata, etc…
      New Relic es ideal para hacer debug en instalaciones MUY complejas, donde hay muchas capas de ejecución y New Relic permite ir por partes con un monitor externo.

      1. Una consulta Alvaro: me toca idear una tienda online para un amigo comerciante y, al mismo tiempo, un software de facturación e inventario para su negocio, y me pregunto si es posible integrar ambos con los recursos de WordPress, principalmente desde PHP/MySql/ que es donde me puedo defender mejor. Desde ya, agradezco cualquier orientación al respecto ya que las opciones que encontré en la web son muy variadas y «sofisticadas», pero creo que ninguna cumple con ésos requisitos; lo que me da a pensar que quizás esté pidiendo demasiado. Gracias y perdón por extenderme tanto. Saludos.

        1. Hola Leonardo, depende completamente del programa que utilices para eso.

          A nivel TPV, existen POS para WooCommerce que funcionan bastante bien (https://alvarofontela.com/configurar-tpv-pos-woocommerce/), pero si buscas algo mas potente a nivel contabilidad, depende del software que utilices.

          WooCommerce tiene una REST API para este tipo de conexión por webservice, pero como te he dicho, depende del software, y es el software quien tiene que darte la solución para la conexión.

  7. Hola! Mi duda es algo compleja. Tengo Tutor LMS en mi wordpress y necesito estar duplicando cursos, lecciones, combinándolos, etc., pero esas funciones no existen en el plugin, y para duplicar un curso con todo su contenido tengo qué volver a hacerlo desde cero. ¿Habrá alguna forma de hacerlo duplicando segmentos de la base de datos? Lo he intentado pero solo se duplican los titulos sin el contenido. Lo mismo pasa si uso el plugin Duplicate Page. No importa si tengo que tomar varias horas de curso, pero si me pudieras recomendar algo te lo agradeceré enormemente! Saludos!

    1. Bufff, Juan, es un tema complejo si, no conozco como funciona Tutor LMS, pero si guarda los datos en la tabla de posts, no solo tendrías que clonar los datos de posts, sino postmeta, y ahí esta el problema, ya que es una tabla difícil de limpiar, imaginate para clonar…eso es la puta jungla…

      Se me ocurre una cosa…desconozco el plugin ya que nunca lo he usado, pero… ¿tiene función de importar y exportar? Si la tiene, podrías exportar el curso con sus lecciones y después volver a importarlo. Siempre teniendo en cuenta que no sobreescriba el actual y que no cause ningún problema de duplicado.

      1. Ok! Eso me aclara más el asunto. No tiene función de importar y exportar los cursos ni lecciones, tiene pero solo es para los cuestionarios. Voy a estar respaldando la base de datos antes de cada cambio, y trataré de duplicar los postmeta. ¿Será igual que duplicar los post? ¿O habrá algún plugin externo que pueda hacer esto?si no, por lo que me dices, creo que será más fácil seguir como hasta ahora, volviendo a hacer cada curso desde cero. Te agradezco enormemente, te felicito por tu página, y ojalá conozcas algún plugin así. Saludos!

        1. Pues no te se decir si seria como los posts, la tabla postmeta es un puto circo, no hay una coherencia «real» porque los posts y las paginas es facil saber que tienen X campos de forma nativa, pero un custom_post como pueden ser en este caso las lecciones, los cuestionarios y los cursos, pueden tener tantos metacampos como le salga de las narices al autor del plugin, entonces es fácil dejarse cosas atrás.

          Si la pregunta es: «¿es posible hacerlo?» Si, es posible, pero o te miras la documentación, o lo consultas con el autor para que te pase un desglose de lo que hace en la DB o haces prueba error.

  8. Hola Álvaro:
    Excelente post, como es costumbre en ti. Un plugin que también utilizo para limpiar la base de datos es «Plugins Garbage Collector», que permite eliminar las tablas remanentes creadas por plugins ya desinstalados.
    ¡Saludos!

    1. Hola Ramiro, antes de nada, muchas gracias por tus palabras.

      No conocía ese plugin, lo acabo de probar y mola mucho, yo antes la limpieza de tablas la hacia manualmente con phpMyAdmin, pero este plugin facilita mucho el asunto.

  9. Buenas, excelente artículo.
    Soy nuevo en WordPress y deseo poder leer y escribir sobre mis propias tablas desde mi sitio realizado en WordPress. Tengo bastante experiencia con SQL, MySQL y phpMyAdmin. Me podría dar alguna sugerencia? Quizas un plugin?

    1. Hola Pablo, depende de lo que quieras hacer te puede servir un CRUD o no, de todas formas, lo que te recomiendo siempre y cualquier plugin que uses lo va a hacer, es pasar por el núcleo de WordPress para comunicarte con las tablas, ya que comunicarse externamente con MySQL o MariaDB puede causarte problemas en el futuro.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Share on twitter
Share on facebook
Share on linkedin