Optimizaci贸n en bases de datos de WordPress: Aumentando el rendimiento 馃殌

Uno de los principales retos que enfrentan los desarrolladores y administradores de sitios WordPress es la eficiencia y rapidez en la gesti贸n de datos. Hoy, te presentamos una serie de optimizaciones en las tablas MySQL que prometen mejorar significativamente la velocidad de tu sitio web en WordPress.

El foco principal: La tabla wp_postmeta

La tabla wp_postmeta suele ser la m谩s grande de tu base de datos en WordPress. Si no lo es, podr铆as estar frente a un problema. Es importante tambi茅n revisar las tablas wp_actionscheduler_actions y wp_actionscheduler_logs.

Cuando instalas WordPress por primera vez, se crean tablas en la base de datos. Tomando como ejemplo la tabla wp_postmeta, su estructura inicial es:

CREATE TABLE wp_postmeta (
meta_id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
post_id bigint(20) unsigned NOT NULL DEFAULT '0',
meta_key varchar(255) DEFAULT NULL,
meta_value longtext,
PRIMARY KEY (meta_id),
KEY post_id (post_id),
KEY meta_key (meta_key)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

驴Cu谩l es el problema?

  1. AUTO_INCREMENT ralentiza la mayor铆a de las consultas debido a que tiene que buscar en el 铆ndice secundario para encontrar el ID auto_incrementado, y luego buscar en los datos el ID real necesario.
  2. BIGINT y AUTO_INCREMENT son excesivos.
  3. meta_key o meta_value nunca ser谩n NULL.

Soluci贸n propuesta:

CREATE TABLE wp_postmeta (
post_id BIGINT UNSIGNED NOT NULL,
meta_key VARCHAR(255) NOT NULL,
meta_value LONGTEXT NOT NULL,
PRIMARY KEY(post_id, meta_key),
INDEX(meta_key)
) ENGINE=InnoDB;

En tablas existentes, podemos a帽adir claves de alto rendimiento que coincidan con las consultas m谩s comunes de WordPress. Por ejemplo, para wp_postmeta:

ALTER TABLE wp_postmeta ADD UNIQUE KEY meta_id (meta_id);
ALTER TABLE wp_postmeta DROP PRIMARY KEY;
ALTER TABLE wp_postmeta ADD PRIMARY KEY (post_id, meta_key, meta_id);
ALTER TABLE wp_postmeta DROP KEY post_id;
ALTER TABLE wp_postmeta DROP KEY meta_key;
ALTER TABLE wp_postmeta ADD KEY meta_key (meta_key, post_id);

Esto generar谩 nuevas claves de alto rendimiento. La comparativa quedar铆a:

TablaClaves est谩ndar de WPNuevas claves
wp_postmetameta_id: primary key
post_id
meta_key
post_id, meta_key, meta_id: primary key
meta_id: unique key
meta_key, post_id

Se puede hacer lo mismo para otras tablas principales:

wp_posts

ALTER TABLE wp_posts DROP KEY type_status_date;
ALTER TABLE wp_posts ADD KEY type_status_date (post_type, post_status, post_date, post_author, ID);
ALTER TABLE wp_posts DROP KEY post_author;
ALTER TABLE wp_posts ADD KEY post_author (post_author, post_type, post_status, post_date, ID);
TablaClaves est谩ndar de WPNuevas claves
wp_postspost_type, post_status, post_date,ID
post_author
post_type,post_status,post_date,post_author,ID
post_author,post_type,post_status,post_date,ID

wp_options

ALTER TABLE wp_options ADD UNIQUE KEY option_id (option_id);
ALTER TABLE wp_options DROP PRIMARY KEY;
ALTER TABLE wp_options ADD PRIMARY KEY (autoload, option_id);
ALTER TABLE wp_options DROP KEY autoload;
TablaClaves est谩ndar de WPNuevas claves
wp_optionsoption_id: primary key
option_name: unique key
autoload
autoload, option_id: primary key
option_name: unique_key
option_id: unique key

wp_usermeta

ALTER TABLE wp_usermeta ADD UNIQUE KEY umeta_id (umeta_id);
ALTER TABLE wp_usermeta DROP PRIMARY KEY;
ALTER TABLE wp_usermeta ADD PRIMARY KEY (user_id, meta_key, umeta_id);
ALTER TABLE wp_usermeta DROP KEY user_id;
ALTER TABLE wp_usermeta DROP KEY meta_key;
ALTER TABLE wp_usermeta ADD KEY meta_key (meta_key, user_id);
TablaClaves est谩ndar de WPNuevas claves
wp_usermetaumeta_id: primary key
user_id
meta_key
user_id, meta_key, umeta_id: primary key
umeta_id: unique key
meta_key, user_id

wp_termmeta

ALTER TABLE wp_termmeta ADD UNIQUE KEY meta_id (meta_id);
ALTER TABLE wp_termmeta DROP PRIMARY KEY;
ALTER TABLE wp_termmeta ADD PRIMARY KEY (term_id, meta_key, meta_id);
ALTER TABLE wp_termmeta DROP KEY term_id;
ALTER TABLE wp_termmeta DROP KEY meta_key;
ALTER TABLE wp_termmeta ADD KEY meta_key (meta_key, term_id);
TablaClaves est谩ndar de WPNuevas claves
wp_termmetameta_id: primary key
term_id
meta_key
term_id, meta_key, meta_id: primary key
meta_id: unique key
meta_key, term_id

Para aquellos interesados en realizar estos cambios de manera autom谩tica, existen plugins como 芦Index WP MySQL For Speed禄 que simplifican este proceso. Es fundamental que, antes de realizar cualquier cambio, se haga un respaldo de la base de datos para evitar problemas imprevistos.

Con estas optimizaciones, los sitios WordPress no solo ser谩n m谩s r谩pidos, sino tambi茅n m谩s eficientes en su gesti贸n de datos. 隆Una revoluci贸n en rendimiento a la vista!

Suscr铆bete a la newsletter

脷ltimos art铆culos

Scroll al inicio