Si considero cambiar mis tablas de base de datos de WordPress a InnoDB, ¿tendrá algún efecto en la forma en que funciona WordPress?

2

Encontré una excelente publicación aquí sobre cómo optimizar WordPress para grandes instalaciones .

Uno de los pasos se refiere a lighthttpd que suena excelente pero actualmente no es compatible con DirectAdmin. La última vez que me metí con una instalación que no era de DA, logré romper mi servidor y tuve que pagarle a un profesional para que lo arreglaran ...

Uno de sus otros pasos es ALTER todas mis tablas MySQL para usar el motor InnoDB en lugar de MyISAM.

Esto me atrae porque parece que soluciona algunos de los los principales problemas He estado teniendo , es decir, bloqueos de tablas. El siguiente es un ejemplo de SHOW PROCESSLIST; de MySQL que incluye sentencias de SQL:

| 17181 | my_db | localhost | my_db | Query   | 35117 | Waiting for table level lock | SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'boraras-brigittae' AND wp_po |
| 17182 | my_db | localhost | my_db | Query   | 35118 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17183 | my_db | localhost | my_db | Query   | 35117 | Waiting for table level lock | SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'boraras-brigittae' AND wp_po |
| 17184 | my_db | localhost | my_db | Query   | 35117 | Waiting for table level lock | SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'boraras-brigittae' AND wp_po |
| 17185 | my_db | localhost | my_db | Query   | 35041 | Waiting for table level lock | SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'akysis-vespa' AND wp_posts.p |
| 17186 | my_db | localhost | my_db | Query   | 35050 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('images','profiledotline-gif') A |
| 17187 | my_db | localhost | my_db | Query   | 35050 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('images','picarrow-gif') AND (po |
| 17188 | my_db | localhost | my_db | Query   | 35043 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17189 | my_db | localhost | my_db | Query   | 35041 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('m','marginal') AND (post_type = |
| 17190 | my_db | localhost | my_db | Query   | 34989 | Waiting for table level lock | SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'piaractus-brachypomus' AND w |
| 17191 | my_db | localhost | my_db | Query   | 34989 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('w','wet-dry-filter') AND (post_ |
| 17192 | my_db | localhost | my_db | Query   | 34990 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID FROM wp_posts  WHERE 1=1  AND wp_posts.post_type = 'post' AN |
| 17193 | my_db | localhost | my_db | Query   | 34954 | Waiting for table level lock | SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'corydoras-sterbai' AND wp_po |
| 17194 | my_db | localhost | my_db | Query   | 34954 | Waiting for table level lock | SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'piaractus-brachypomus' AND w |
| 17195 | my_db | localhost | my_db | Query   | 34955 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID FROM wp_posts  WHERE 1=1  AND wp_posts.post_type = 'post' AN |
| 17196 | my_db | localhost | my_db | Query   | 34954 | Waiting for table level lock | SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'piaractus-brachypomus' AND w |
| 17197 | my_db | localhost | my_db | Query   | 34897 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID FROM wp_posts  WHERE 1=1  AND wp_posts.post_type = 'post' AN |
| 17198 | my_db | localhost | my_db | Query   | 34955 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID FROM wp_posts  WHERE 1=1  AND wp_posts.post_type = 'post' AN |
| 17199 | my_db | localhost | my_db | Query   | 34898 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17200 | my_db | localhost | my_db | Query   | 34897 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID FROM wp_posts  WHERE 1=1  AND wp_posts.post_type = 'post' AN |
| 17201 | my_db | localhost | my_db | Query   | 34898 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums','lofiversion','index-ph |
| 17202 | my_db | localhost | my_db | Query   | 34897 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums') AND (post_type = 'page |
| 17204 | my_db | localhost | my_db | Query   | 34897 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17205 | my_db | localhost | my_db | Query   | 34897 | Waiting for table level lock | SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'sawbwa-resplendens' AND wp_p |
| 17206 | my_db | localhost | my_db | Query   | 34897 | Waiting for table level lock | SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'badis-sp-buxar' AND wp_posts |
| 17207 | my_db | localhost | my_db | Query   | 34898 | Waiting for table level lock | SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'melanotaenia-boesemani' AND  |
| 17208 | my_db | localhost | my_db | Query   | 34898 | Waiting for table level lock | SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'betta-prima' AND wp_posts.po |
| 17209 | my_db | localhost | my_db | Query   | 34865 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums') AND (post_type = 'page |
| 17210 | my_db | localhost | my_db | Query   | 34897 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID FROM wp_posts  WHERE 1=1  AND wp_posts.post_type = 'post' AN |
| 17211 | my_db | localhost | my_db | Query   | 34898 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17213 | my_db | localhost | my_db | Query   | 34864 | Waiting for table level lock | SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'piaractus-brachypomus' AND w |
| 17214 | my_db | localhost | my_db | Query   | 34864 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID FROM wp_posts  WHERE 1=1  AND wp_posts.post_type = 'post' AN |
| 17215 | my_db | localhost | my_db | Query   | 34864 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('knowledge-base') AND (post_type |
| 17216 | my_db | localhost | my_db | Query   | 34865 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID FROM wp_posts  WHERE 1=1  AND wp_posts.post_type = 'post' AN |
| 17217 | my_db | localhost | my_db | Query   | 34864 | Waiting for table level lock | SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'piaractus-brachypomus' AND w |
| 17218 | my_db | localhost | my_db | Query   | 34864 | Waiting for table level lock | SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'badis-sp-buxar' AND wp_posts |
| 17219 | my_db | localhost | my_db | Query   | 34864 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums','lofiversion','index-ph |
| 17220 | my_db | localhost | my_db | Query   | 34864 | Waiting for table level lock | SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'betta-prima' AND wp_posts.po |
| 17221 | my_db | localhost | my_db | Query   | 34864 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID FROM wp_posts  WHERE 1=1  AND wp_posts.post_type = 'post' AN |
| 17222 | my_db | localhost | my_db | Query   | 34865 | Waiting for table level lock | SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'piaractus-brachypomus' AND w |
| 17223 | my_db | localhost | my_db | Query   | 34864 | Waiting for table level lock | SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'piaractus-brachypomus' AND w |
| 17224 | my_db | localhost | my_db | Query   | 34865 | Waiting for table level lock | SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'hemichromis-lifalili' AND wp |
| 17225 | my_db | localhost | my_db | Query   | 34864 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17226 | my_db | localhost | my_db | Query   | 34862 | Waiting for table level lock | SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'apistogramma-borellii' AND w |
| 17227 | my_db | localhost | my_db | Query   | 34863 | Waiting for table level lock | SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'melanotaenia-lacustris' AND  |
| 17228 | my_db | localhost | my_db | Query   | 34862 | Waiting for table level lock | SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'melanotaenia-lacustris' AND  |
| 17229 | my_db | localhost | my_db | Query   | 34861 | Waiting for table level lock | SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'mikrogeophagus-altispinosus' |
| 17230 | my_db | localhost | my_db | Query   | 34861 | Waiting for table level lock | SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.ID = 25503 AND wp_posts.post_type = 'atta |
| 17231 | my_db | localhost | my_db | Query   | 34803 | Waiting for table level lock | SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'piaractus-brachypomus' AND w |
| 17232 | my_db | localhost | my_db | Query   | 34803 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID FROM wp_posts  WHERE 1=1  AND wp_posts.post_type = 'post' AN |
| 17233 | my_db | localhost | my_db | Query   | 34803 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('knowledge-base') AND (post_type |
| 17234 | my_db | localhost | my_db | Query   | 34803 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17235 | my_db | localhost | my_db | Query   | 34803 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums') AND (post_type = 'page |
| 17236 | my_db | localhost | my_db | Query   | 34803 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID FROM wp_posts  WHERE 1=1  AND wp_posts.post_type = 'post' AN |
| 17237 | my_db | localhost | my_db | Query   | 34803 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums') AND (post_type = 'page |
| 17238 | my_db | localhost | my_db | Query   | 34788 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('m','migrate') AND (post_type =  |
| 17239 | my_db | localhost | my_db | Query   | 34788 | Waiting for table level lock | SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'hemichromis-lifalili' AND wp |
| 17240 | my_db | localhost | my_db | Query   | 34788 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17241 | my_db | localhost | my_db | Query   | 34788 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums') AND (post_type = 'page |
| 17242 | my_db | localhost | my_db | Query   | 34788 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID FROM wp_posts  WHERE 1=1  AND wp_posts.post_type = 'post' AN |
| 17243 | my_db | localhost | my_db | Query   | 34788 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17244 | my_db | localhost | my_db | Query   | 34788 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums','lofiversion','index-ph |
| 17245 | my_db | localhost | my_db | Query   | 34788 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17246 | my_db | localhost | my_db | Query   | 34788 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17247 | my_db | localhost | my_db | Query   | 34788 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums') AND (post_type = 'page |
| 17248 | my_db | localhost | my_db | Query   | 34788 | Waiting for table level lock | SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'geophagus-brokopondo' AND wp |
| 17249 | my_db | localhost | my_db | Query   | 34788 | Waiting for table level lock | SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'hyphessobrycon-amandae' AND  |
| 17253 | my_db | localhost | my_db | Query   | 34788 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID FROM wp_posts  WHERE 1=1  AND wp_posts.post_type = 'post' AN |
| 17255 | my_db | localhost | my_db | Query   | 34786 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('knowledge-base') AND (post_type |
| 17260 | my_db | localhost | my_db | Query   | 34786 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('s','silver-sand') AND (post_typ |
| 17262 | my_db | localhost | my_db | Query   | 34786 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums') AND (post_type = 'page |
| 25505 | root      | localhost | NULL      | Query   |     2 | NULL                         | SHOW PROCESSLIST   

He habilitado slow-query-log y el resultado (que se ha ejecutado a través de un script de análisis) se puede encontrar aquí .

Sin embargo, como he intentado ALTER mis tablas, se ha producido el siguiente error en wp_posts : ERROR 1214 (HY000) at line 14: The used table type doesn't support FULLTEXT indexes

Por lo tanto, mis preguntas son un tanto triples, pero solo una:

  • ¿Puedo usar InnoDB y conservar los ÍNDICES DE TEXTO COMPLETO que parece que WordPress usa?
  • ¿Usar InnoDB ayudará a aliviar los problemas que he tenido con los bloqueos de tablas?
  • ¿Puedo usar InnoDB sin tener un efecto adverso en mi instalación de WordPress? *

* Tengo innumerables complementos que incluyen W3 Total Cache, Simple Forums, AdRotate y muchos más.

    
pregunta dunc 18.07.2012 - 22:48

2 respuestas

2

Aquí hay mucha información sobre cómo cambiar a InnoDB

enlace

Hay varias cosas en que pensar:

  • InnoDB es útil para enfrentarte a la contención, es decir, cuando tienes tablas que se escriben y se leen
  • InnoDB no no admite los índices FULLTEXT, por lo que los complementos que dependen de ellos se romperán o funcionarán lentamente.
  • Puede elegir qué tablas convertir a InnoDB (no es una oferta de todo o nada) en algunos de mis sitios, wp_comments es la única tabla que es InnoDB debido a la naturaleza masiva de comentarios en esos sitios.

Sin embargo, parece que tienes más problemas fundamentales que deben resolverse antes de que te preocupes por cambiar a InnoDB.

  • usted realmente necesita registrar sus consultas lentas y luego EXPLAIN ellas para comprender lo que está sucediendo. Es posible que solo necesite optimizar tablas o agregar índices adicionales. Es muy probable que algunos de sus complementos están ejecutando consultas que están forzando búsquedas secuenciales en su base de datos. Averigüe y agregue índices para acelerarlos, si ese es el caso.
  • Una vez hecho esto, puede mirar la optimización de Apache o cambiar a una configuración más avanzada (por ejemplo, nginx + PHP-FPM).
  • Comprueba tu almacenamiento en caché. Si el sitio no está cambiando mucho, la mayoría del contenido se debe servir desde el caché en lugar de llegar a la base de datos. Descubre por qué esto no está sucediendo.

En resumen, no parece que realmente hayas llegado a las causas fundamentales del problema. Hasta que tengas un mejor control sobre eso, cualquier cosa que hagas será un poco aleatoria.

    
respondido por el anu 19.07.2012 - 01:27
2

Hace poco jugué con una pila Ubuntu LAMP y una instalación de WordPress y observé cómo cambiar a InnoDB o NGINX.

Sólo para establecer la escena, tuve el complemento de Next Gen Gallery en ejecución y noté que las tablas eran "diferentes". Así que pensé en investigar el cambio a InnoDB.

¿Puedo usar InnoDB sin tener un efecto adverso en mi instalación de WordPress?
Lo primero es lo primero, no cambies a InnoDB, se romperán las cosas de una manera que no puedes imaginar. Y estás intentando optimizar tu sitio web y no tener que comenzar todo de nuevo. Es mejor trabajar con lo que tienes primero.

Si desea ver qué sucede, configure un sitio de prueba y use una exportación de su base de datos actual, con todos los mismos complementos, etc. Se generará un error de conexión en la base de datos y tendrá que ir a SQLyog o Sequel Pro y restaurar desde una copia de seguridad de SQL.

Optimización
He configurado un sitio que se escala a través de dos 2 DB utilizando hyperDB 3 servidores front-end, carga equilibrada y un CDN. Se probó la carga a 2000 concurrentes / 30000 visitantes por día.

Todo esto se gestiona muy bien con W3 Total Cache, un servidor MemCached, Hyper DB y CDN. Estoy usando el perfil mysql predeterminado para un sitio web mediano.

En mi caso, tengo suerte, el contenido cambia solo semanalmente, por lo que puedo guardarlo todo.

Apache Max Connections Los perfiles predeterminados para Apache permitirán 150 clientes máx. Y 1000 solicitudes máx. Por lo tanto, si tiene 150 visitantes, podría tener 150,000 solicitudes en su único servidor.

Establezca esto en 5 o 15 clientes máx. para comenzar con el aumento de las solicitudes máximas a 2000 (lo que significa que antes de que Apache genere un nuevo proceso)

Establezca hilos de reserva en 1 o 2: esta es la reserva de memoria que Apache mantiene en reserva.

Establezca el tiempo de espera de Keep Alive en 15, lo que significa 15 segundos, por lo que si la misma solicitud llega a Apache, no se inicia un nuevo hilo

vea enlace

sin memoria: apache / database / timeout
Lo que he aprendido acerca de las tablas bloqueadas es que las sesiones de la base de datos permanecen activas por mucho tiempo y esto hace que se quede sin memoria. De la experiencia dolorosa. es un golpe combinado de uno / dos: crees que necesitas más conexiones de base de datos, por lo que aumentas estas y el efecto de rebote se está quedando sin memoria en la base de datos.

¿No dijo por qué no puede almacenar más caché y reducir las solicitudes de base de datos? También está el servidor DB en una caja diferente de apache, lo que hace una gran diferencia.

mqsql.cnf
esto estará vacío de forma predeterminada ... haga un análisis en creo usr / share / doc / mysql-server-5.0 / examples / my-medium.cnf.gz

Sé que empecé con my-small.cnf y después de separar la base de datos de Apache, todo se estabilizó

Caché de PHP alternativo (APC)
En referencia a sus 5 pasos de optimización esenciales enlace
Probablemente encontrará que APC no se está ejecutando en su servidor. ¿Qué le dice W3 Total Cache cuando va a WordPress > Rendimiento > General y haga clic en Comprobación de compatibilidad: ¿cuáles son los resultados?

Finalmente ... esto es lo que el sitio que configuro también es idéntico ...
enlace

    
respondido por el Damien 18.07.2012 - 23:36

Lea otras preguntas en las etiquetas