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, restoring 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.62 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.

My site uses WooCommerce HPOS (High Performance Order Storage). Is this plugin still helpful?

Yes. WooCommerce still uses core WordPress tables for your shop’s products, posts, pages, and users. This plugin adds high-performance keys to those tables.

High Performance Order Storage, true to its name, stores your shop’s orders in a more efficient way. Formerly orders were stored in those same core WordPress tables.

Is this plugin compatible with some other specific plugin?

This plugin only changes database indexes. If the other plugin does not change database indexes, it is very likely compatible with this one.

Of course, if you find an incompatibility please open a support topic.

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.

How do I revert to WordPress’s standard keys, undoing the action of this plugin?

You can revert the keys from the Index MySQL Tool under the Tools menu, or use the wp-cli command wp index-mysql disable --all. Notice that if you deactivate or delete the plugin without doing this, the high-performance keys remain.

¿Cómo obtengo respuesta a otra pregunta?

Please see more questions and answers here.

Reseñas

4 de julio de 2024 2 respuestas
This is an excellent plugin. @olliejones, thank you for contributing this valuable resource to the community. We drew inspiration from this plugin and developed a custom solution by incorporating elements from it. I have a minor suggestion: while this plugin is powerful, it should be implemented with care. Adding a brief note advising users to test the plugin in a DEV/TEST environment before deploying it in production could help prevent potential issues like crashes. However, we did not encounter any problems, and everything worked smoothly. Lastly, a quick question for @olliejones: Are there specific reasons why WordPress does not include such optimized index keys within its core?
3 de junio de 2024 1 respuesta
Godaddy told me to higher mysql expert but all was fixed with this plugin. Thanks so much. hirizzi.com
11 de mayo de 2024 1 respuesta
Ever since I migrated 3 of my sites they were very slow and my host told me it was not their fault and I should optimize the database. After searching a bit I stumbled upon this plugin, I tried it out and now the websites are sooo fast this is insane. One of the sites has 80 000 articles and hundreds of users and I don’t have to buy a dedicated server anymore. Thank you so much !
8 de mayo de 2024
It really increases the speed of the site, you see it less if you have an already well optimized site, but you see it.Good job!
7 de mayo de 2024 1 respuesta
Does not meet the needs and is extremely poor to use
Leer todas las 77 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» está traducido en 1 idioma. 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.18

Security update.

1.4.17

Back out a miscellaneous bug fix from the previous version. It was an attempt to avoid a warning from Query Monitor’s hooks display.
Upload the full MariaDB / MySQL version information with monitors as well as metadata.

1.4.16

(no changes to keys)
WordPress 6.5 compatibility.
Support WordPress versions back to 4.2 (At MDDHosting’s request).
Avoid attempting to upgrade from storage engines except MyISAM and Aria.
WP-CLI upgrade, enable, and disable commands are idempotent now. They don’t generate errors when they find no tables to process.
Miscellaneous bug fixes