Index WP MySQL For Speed

Descripción

¿Cómo utilizo este plugin?

Después de instalar y activar este plugin, visita la Herramienta Index MySQL en el menú de herramientas. Desde ahí puedes pulsar el botón de Añadir claves ahora. Si tienes tablas grandes úsalo con WP-CLI para evitar tiempos de espera. Mira la sección de WP-CLI para saber más.

¿Qué hace por mi sitio?

Este plugin trabaja para hacer que tu base de datos MySQL funcione más eficientemente añadiendo claves de alto rendimiento a las tablas que elijas. Bajo petición, analiza el uso que tu sitio hace de tu base de datos MySQL para detectar qué operaciones de la base de datos son más lentas. Es muy útil para sitios grandes: sitios con muchos usuarios, entradas, páginas y/o productos.

Puedes usarlo para restaurar las claves por defecto de WordPress si es necesario.

¿De qué va todo esto?

¿Dónde almacena WordPress todo eso que hace que tu sitio sea genial? ¿Dónde están tus páginas, entradas, productos, medios, usuarios, campos personalizados, metadatos y todo tu valioso contenido? Todos esos datos están en el sistema de gestión de bases de datos relacionales MySQL. (Muchos proveedores de alojamiento y servidores utilizan la bifurcación MariaDB del software MySQL; funciona exactamente igual que el propio MySQL).

A medida que tu sitio crece, tus tablas MySQL crecen. Las tablas gigantes pueden ralentizar la carga de las páginas, frustrar a los usuarios e incluso perjudicar su posicionamiento en los motores de búsqueda. Además, las importaciones masivas pueden llevar cantidades absurdas de tiempo. ¿Qué puedes hacer al respecto?

Puedes instalar y utilizar un plugin limpiador de bases de datos para deshacerte de datos antiguos no deseados y reorganizar tus tablas. Eso las hace más pequeñas y, por tanto, más rápidas. Esa es una tarea buena y necesaria. Sin embargo, esa no es la tarea de este plugin. Puedes, si tu proveedor de hosting lo admite, instalar y usar un plugin de caché de objetos persistente para reducir el tráfico a tu base de datos. Esa tampoco es la tarea de este plugin.

Este plugin añade claves de base de datos (también llamadas índices) a tus tablas MySQL para facilitar que WordPress encuentre la información que necesita. Todos los sistemas de gestión de bases de datos relacionales almacenan su información en tablas de larga duración. Por ejemplo, WordPress almacena tus entradas y resto de contenido en una tabla llamada wp_posts, y los campos personalizados de las entradas en otra tabla llamada wp_postmeta.

  1. Mantener todos esos datos organizados.
  2. Encontrar rápidamente los datos que necesita.

To do its second job, MySQL uses database keys. Each table has one or more keys. For example, wp_posts has a key to let it quickly find posts when you know the author. Without its post_author key MySQL would have to scan every one of your posts looking for matches to the author you want. Our users know what that looks like: slow. With the key, MySQL can jump right to the matching posts.

En un nuevo sitio WordPress con un par de usuarios y una docena de entradas, las claves no importan mucho. A medida que el sitio crece las claves empiezan a importar, y mucho. Los sistemas de gestión de bases de datos están diseñados para que sus claves se actualicen, ajusten y modifiquen a medida que crecen las tablas. Están diseñados para permitir que las claves evolucionen sin cambiar el contenido de las tablas subyacentes. En las organizaciones con grandes bases de datos, añadir, eliminar o modificar claves no cambia los datos subyacentes. Es una tarea de mantenimiento rutinaria en muchos centros de datos. Si el cambio de claves hiciera que las bases de datos perdieran datos, los desarrolladores de MySQL y MariaDB oirían aullar no sólo a ti y a mí, sino a muchos usuarios de peso. (Por supuesto, deberías hacer una copia de seguridad de tu instancia de WordPress).

Mejores claves permiten que el código de WordPress funcione más rápido sin ningún cambio en el código. La experiencia con grandes sitios muestra que muchas ralentizaciones de MySQL pueden mejorarse con mejores claves. El código es poesía, los datos son tesoros, y las claves de base de datos son la grasa que hace que el código y los datos trabajen juntos sin problemas.

¿A qué tablas añade claves el plugin?

Este plugin añade y actualiza claves en estas tablas de WordPress.

  • wp_comments
  • wp_commentmeta
  • wp_posts
  • wp_postmeta
  • wp_termmeta
  • wp_users
  • wp_usermeta
  • wp_options

Sólo necesitas ejecutar este plugin una vez para obtener sus beneficios.

How can I monitor my database’s operation?

On the Index MySQL page (from your Tools menu on your dashboard), you will find the «Monitor Database Operations» tab. Use it to request monitoring for a number of minutes you choose.

Puedes vigilar

  • either the site (your user-visible pages) or the dashboard, or both.
  • all pageviews, or a random sample. (Random samples are useful on very busy sites to reduce monitoring overhead.)

Una vez recopilada la información de monitorización, puedes ver las consultas capturadas y ordenarlas por el tiempo que tardan. O puedes guardar la información del monitor en un archivo y mostrársela a alguien que sepa de operaciones con bases de datos. O puedes subir el monitor a los servidores del plugin para que los autores puedan verlo.

Es una buena idea monitorizar durante un intervalo de cinco minutos en un momento del día en que tu sitio esté ocupado. Una vez completada la monitorización, puedes examinarla para determinar qué operaciones de la base de datos te están ralentizando más.

Please consider uploading your saved monitors to the plugin’s servers. It’s how we learn from your experience to keep improving. Push the Upload button on the monitor’s tab.

WP-CLI command line operation

This plugin supports WP-CLI. When your tables are large this is the best way to add the high-performance keys: it doesn’t time out.

Give the command wp help index-mysql for details. A few examples:

  • wp index-mysql status shows the current status of high-performance keys.
  • wp index-mysql enable --all adds the high-performance keys to all tables that don’t have them.
  • wp index-mysql enable wp_postmeta adds the high-performance keys to the postmeta table.
  • wp index-mysql disable --all removes the high-performance keys from all tables that have them, restore WordPress’s default keys.
  • wp index-mysql enable --all --dryrun writes out the SQL statements necessary to add the high-performance keys to all tables, but does not run them.
  • wp index-mysql enable --all --dryrun | wp db query writes out the SQL statements and pipes them to wp db to run them.

Note: avoid saving the –dryrun output statements to run later. The plugin generates them to match the current state of your tables.

¿Qué novedades trae la última versión?

Desde la primera versión nuestros usuarios nos han contado muchas más oportunidades para acelerar sus operaciones de WooCommerce y el núcleo. Hemos añadido claves a las tablas meta para ayudar con la búsqueda de contenido, y a la tabla users para buscar personas por sus nombres visibles. Y ahora puedes subir monitores guardados para que podamos ver tus consultas más lentas. Usaremos esa información para mejorar futuras versiones. ¡Gracias, queridos usuarios!

El plugin ahora gestiona correctamente las actualizaciones de versión de WordPress: no altera tus claves de alto rendimiento.

We have added the –dryrun switch to the WP-CLI interface for those who want to see the SQL statements we use.

¿Por qué utilizar este plugin?

Tres motivos (quizá cuatro):

  1. para reducir la huella de carbono.
  2. para reducir la huella de carbono.
  3. para reducir la huella de carbono.
  4. para ahorrar tiempo a la gente.

En serio, los microwatios hora de electricidad ahorrados por las tecnologías de las webs más rápidas se acumulan rápidamente, especialmente a la escala global de WordPress.

Agradecimientos

  • Michael Uno for Admin Page Framework.
  • Marco Cesarato for LiteSQLParser.
  • Allan Jardine for Datatables.net.
  • Japreet Sethi for advice, and for testing on his large installation.
  • Rick James for everything.
  • Jetbrains por sus herramientas IDE, especialmente PhpStorm. Es difícil imaginar tratar de navegar por una base de código épica sin sus herramientas.

Capturas

  • Utiliza «Herramientas > Index MySQL» para ver el panel de control.
  • Elige tablas y añade claves de alto rendimiento.
  • Empieza a supervisar las operaciones de la base de datos y consulta los monitores guardados.
  • Visualiza un monitor guardado para ver las consultas lentas a la base de datos.
  • Acerca del plugin.
  • Usa WP CLI para ejecutar las operaciones del plugin.

Instalación

Puede instalar este plugin visitando «Plugins > Añadir nuevo» en el escritorio de tu sitio, luego buscando Index WP MySQL For Speed y siguiendo el flujo de trabajo de instalación habitual.

When you activate it, it will copy a php source file into the must-use plugins directory, wp-content/mu-plugins. Some sites’ configurations prevent the web server from writing files into that directory. In that case the plugin will still work correctly. But, after WordPress core version upgrades you may have to revisit the Tools > Index MySQL page and correct the keying on some tables. Why? The mu-plugin prevents core version updates from trying to change keys.

Composer

Si configuras tu instalación de WordPress utilizando composer, puedes instalar este plugin en tu configuración de nivel superior de WordPress con el comando

composer require "wpackagist-plugin/index-wp-mysql-for-speed":"^1.4"

Durante la instalación de composer el plugin puede copiar automáticamente los archivos de origen necesarios (mira la sección anterior) al directorio de plugins imprescindibles. Si quieres que pase eso, debes incluir estos scripts en tu archivo de nivel superior composer.json.

 "scripts": {
         "install-wp-mysql-mu-module": [
                 "@composer --working-dir=wordpress/wp-content/plugins/index-wp-mysql-for-speed install-mu-module"
         ],
         "post-install-cmd": [
                 "@install-wp-mysql-mu-module"
         ],
         "post-update-cmd": [
                 "@install-wp-mysql-mu-module"
         ]
     },

FAQ

¿Debo hacer una copia de seguridad de mi sitio antes de utilizarlo?

Sí. Ya lo sabías.

I don’t see any changes to my database speed. Why not?

  • Just installing and activating the plugin is not enough to make it work. Don’t forget to visit the Index MySQL Tool under the Tools menu. From there you can press the Add Keys Now button.
  • On a modestly sized site (with a few users and a few hundred posts) your database may be fast enough without these keys. The speed improvements are most noticeable on larger sites with many posts and products.

Utilizo un prefijo de tabla de base de datos no estándar. ¿Funcionará?

Yes. Some WordPress databases have nonstandard prefixes. That is, their tables are named something_posts, something_postmeta, and so forth instead of wp_posts and wp_postmeta. This works with those databases.

My WordPress host offers MariaDB, not MySQL. Can I use this plugin?

Sí.

¿Qué versiones de MySQL y MariaDB admite?

MySQL versiones 5.5.62 y superiores, 5.6.4 y superiores, 8 y superiores. MariaDB versiones 5.5 y superiores.

¿Qué motor de almacenamiento de bases de datos admite?

Sólo InnoDB. Si tus tablas usan MyISAM (el motor de almacenamiento más antiguo) o el formato de filas COMPACT más antiguo, este plugin ofrece actualizarlas por ti.

¿Qué tablas y claves modifica el plugin?

Please read this.

Is this safe? Can I add high-performance keys and revert back to WordPress standard keys safely?

Yes. it is safe to add keys and revert them. Changing keys is a routine database-maintenance operation.

Como ya sabes, debes mantener copias de seguridad de tu sitio: otros factores pueden causar la pérdida de datos.

Recibo un error fatal al intentar añadir claves. ¿Cómo puedo solucionarlo?

A veces el plugin Index WP MySQL For Speed para WordPress genera errores cuando lo usas para añadir claves. Estos pueden tener este aspecto o similar:

Fatal error: Uncaught ImfsException: [0]: Index for table 'wp_postmeta' is corrupt; try to repair it

En primer lugar, que no cunda el pánico. Esto (normalmente) no significa que tu sitio se haya corrompido. Simplemente significa que tu servidor MariaDB o MySQL no fue capaz de añadir las claves a esa tabla en particular. Tu sitio seguirá funcionando, pero no obtendrás el beneficio de las claves de alto rendimiento en esa tabla en particular. Las tablas muy grandes suelen ser las causantes de este tipo de error. Es muy probable que te hayas quedado sin espacio temporal en disco en tu máquina servidor de base de datos MariaDB o MySQL. El servidor de base de datos hace una copia temporal de una tabla cuando añades claves a ella; eso te permite añadir las claves sin bloquear a tus usuarios.

It’s possible to correct this problem by changing your MariaDB or MySQL configuration. Instructions are here.

¿Qué ocurre con mis tablas y claves durante una actualización de la versión de WordPress?

Si el plugin se activa durante una actualización de la versión de WordPress, evita que el flujo de trabajo de actualización elimine sus claves de alto rendimiento (Versión 1.4.7).

My site has thousands of registered users. My Users, Posts, and Pages panels in my dashboard are still load slowly even with this plugin.

We have another plugin to handle lots of users, Index WP Users For Speed. Due to the way WordPress handles users, just changing database keys is not enough to solve those performance problems.

¿Cómo puedo activar el almacenamiento en caché de objetos persistentes en mi sitio?

Persistent object caching can help your site’s database performance by reducing its workload. You can read about it here. If your hosting provider doesn’t offer redis or memcached cache-server technology you can try using our SQLite Object Cache plugin for the purpose.

¿Por qué ha aumentado el tamaño de mis tablas al añadir claves de alto rendimiento?

La codificación de bases de datos funciona haciendo copias de los datos de tus tablas organizadas de forma que sea fácil acceder a ellos aleatoriamente. Tu servidor MariaDB o MySQL mantiene automáticamente las copias de tus datos a medida que insertas o actualizas filas en cada tabla. Y, la tarea de codificación ajusta la cantidad de espacio libre en cada bloque de datos de su tabla en preparación para la inserción de nuevas filas. Cuando hay espacio libre disponible, la inserción de nuevas filas no requiere divisiones de bloques relativamente lentas. Las tablas que llevan mucho tiempo en uso suelen necesitar nuevo espacio libre en muchos bloques. Al añadir claves, es normal que aumente el tamaño de las tablas. Es el compromiso más antiguo de la informática: tiempo frente a espacio.

¿Serán válidas las nuevas claves para los nuevos datos de las tablas?

. Una vez que las claves de alto rendimiento están en su lugar MariaDB y MySQL las mantienen automáticamente a medida que actualizas, borras o insertas filas de datos en tus tablas. No hay necesidad de hacer nada para aplicar las claves a los nuevos datos: el software DBMS lo hace por ti.

¿Cómo obtengo respuesta a otra pregunta?

Please see more questions and answers here.

Reseñas

28 de noviembre de 2023
I have been using WordPress since 2004 and have always struggled with optimizing sites for maximum speed. Currently, I run a dedicated AMD EPYC server with 128 GB RAM on LiteSpeed Enterprise with CyberPanel web manager. All my sites have Redis object cache enabled. I was able to bring down my server load and speed up my biggest WordPress sites with over 10,000 pages, and 2 million page views a month with the "Index WP MySQL For Speed" plugin. WordPress performance team should concentrate on actual database optimizations instead SQLite(not many people use this in the real world). I highy recommend this plugin for big sites, WooCommerce and sites with many users. Great job!
24 de noviembre de 2023
My WordPress-powered sites aren't popular and don't have a lot of posts yet. Still, I noticed a difference in speed immediately.
13 de noviembre de 2023 1 respuesta
TLDR; Massively increases site speed in terms of database queries. Install it, you won't regret it!Long review (because authors deserve it): My use case is a a high post site (400k posts targeting a few million by next year). 300k monthly uniques, increasing 10% monthly. I use the WP REST api to post articles and was frequently getting 50x errors when uploading images/posts. This plugin saved me! To give you an idea of performance gain:Virtual Server: Quad core, 8gb RAMBefore this plugin: upload 2x posts simultaneously and server would give 50x errors. All 4 CPU cores were maxed out and server had stopped responding!With plugin and table indexing activated: I can now upload 5x 2,000 word posts, with images, simultaneously and CPU usage doesn't even max out one core!Plugin has saved me spending 100+ on dedicated hardware, which would have cost thousands annually. Authors should really think about adding a premium version with even more performance gain ;)I would pay in a heartbeat!
6 de septiembre de 2023
It's great to see a plugin like this created and maintained to such a high standard. Thank you Ollie
25 de agosto de 2023
We had caching through nginx handling most pages, but for logged in users or GET queries pages took 10-15s to load even with no load on the machine. I tried messing with thread pools, memcached/redis, and various other things before installing Query Monitor and seeing that a single query to the postmeta table (which only had 260k entries!) would take 2-3 seconds by itself. After installing this plugin and creating a key for that single table, our pages now load in half a second. Thanks so much!
20 de agosto de 2023
This plugin its simply amazing i cant thank you guys enough. I have a server with 12 Intel Processor Cores. 32 GB of RAM and like 150 sites over it. It optimized my server from like 400% use of CPU by MariaDB service to max 30%. It should be included with wordpress core
Leer todas las 60 reseñas

Colaboradores y desarrolladores

«Index WP MySQL For Speed» es un software de código abierto. Las siguientes personas han colaborado con este plugin.

Colaboradores

«Index WP MySQL For Speed» ha sido traducido a 1 idioma local. Gracias a los traductores por sus contribuciones.

Traduce «Index WP MySQL For Speed» a tu idioma.

¿Interesado en el desarrollo?

Revisa el código , echa un vistazo al repositorio SVN o suscríbete al registro de desarrollo por RSS.

Registro de cambios

1.4.12

(no changes to keys)
Change max_statement_time session variable if necessary to avoid «Query execution was interrupted» errors.
Do ANALYZE TABLE after each rekeying operation.

1.4.13

(no changes to keys)
Support MariaDB 11.x in version-detection code.

1.4.14

(no changes to keys)
Handle database version 55853 (no schema changes).
Deal with php 8.2 deprecations.