Post Top Ad

Your Ad Spot

miércoles, 26 de agosto de 2020

Gestión de índices de Magento

La indexación es importante para Magento 2 como para todos los sistemas que procesan grandes cantidades de datos en múltiples tablas. Facilita el desempeño de la plataforma. En este artículo, discutiremos los aspectos centrales de la administración de índices de Magento que debe conocer y también demostraremos cómo puede crear su propio índice personalizado.
¿Qué es la indexación en Magento 2?
Índices predeterminados en Magento 2
Terminología de indexación
Actualización del índice de Magento 2
Gestión de índices de Magento a través del panel de administración
Comandos de índice para Magento 2
Tablas de estado de índice en la base de datos
Mecanismo de indexación por horario, Mview
Indexación parcial y completa
Preguntas frecuentes sobre la gestión de índices de Magento

¿Qué es la indexación en Magento 2?

Un índice es una tabla de cierto formato en una base de datos. El procesamiento de índices de Magento convierte los datos para aumentar el rendimiento. Es necesario porque los datos que se requieren para el funcionamiento de una tienda en línea se almacenan en una estructura compleja de tablas. Por ejemplo, si desea conocer el precio actual del producto, implica conectar y procesar muchas tablas y sus conexiones.
A su vez, los índices almacenan datos parcialmente procesados ​​y formateados, lo que reduce la carga del servidor y aumenta la velocidad de la tienda. Sin embargo, la indexación es necesaria después de cualquier cambio de los datos a los que se aplica este índice.

Índices predeterminados en Magento 2

Hay varios índices listos para usar en Magento 2 Open Source :
NombreCARNÉ DE IDENTIDADClaseDescripción
Regla de producto de catálogocatalogrule_productMagento \ CatalogRule \ Model \ Indexer \ Product \ ProductRuleIndexer
Producto de regla de catálogocatalogrule_ruleMagento \ CatalogRule \ Model \ Indexer \ Rule \ RuleProductIndexer
Búsqueda de catálogocatalogseatch_fulltextMagento \ CatalogSearch \ Model \ Indexer \ Fulltext
Categoría Productoscatalog_category_productMagento \ Catálogo \ Modelo \ Indexador \ Categoría \ ProductoCrea la conexión categoría - productos
Cuadrícula del clientecustomer_gridMagento \ Framework \ Indexer \ Action \ EntityReestructura el índice Customer Grid
Cuadrícula de configuración de diseñodesign_config_gridMagento \ Theme \ Model \ Indexer \ Design \ Config
Categorías de Productocatalog_product_categoryMagento \ Catálogo \ Modelo \ Indexador \ Producto \ CategoríaCrea conexión producto - categorías
Producto EAVcatalog_product_attributeMagento \ Catálogo \ Modelo \ Indexador \ Producto \ EavReestructura la estructura EAV en una estructura plana.
Precio del productocatalog_product_priceMagento \ Catálogo \ Modelo \ Indexador \ Producto \ PrecioPrecalcula los precios de los productos
Valorescataloginventory_stockMagento \ CatalogInventory \ Model \ Indexer \ Stock
Magento 2 Commerce Edition incluye todos los índices de código abierto, así como algunos adicionales:
NombreCARNÉ DE IDENTIDADClaseDescripción
InventarioinventarioMagento \ InventoryIndexer \ Indexer \ InventoryIndexerÍndice de inventario de fuentes múltiples
Regla de producto / destinoTargettrule_product_ruleMagento \ TargetRule \ Model \ Indexer \ TargetRule \ Product \ RuleCrea conexión producto-regla
Regla / producto de destinoTargettrule_rule_productMagento \ TargetRule \ Model \ Indexer \ TargetRule \ Rule \ ProductoCrea una conexión entre reglas y productos
Regla de ventassalesrule_ruleMagento \ AdvancedSalesRule \ Model \ Indexer \ SalesRuleIndexación de reglas
Además de los índices enumerados anteriormente, también puede crear uno personalizado. Lo discutiremos en detalle a continuación.

Terminología de indexación de Magento 2

  • El diccionario son los datos regulares originales ingresados ​​en el sistema.
  • El índice es la representación de los datos originales para una lectura y búsqueda optimizadas. Debe actualizarse cuando haya cambios en el diccionario.
  • Indexer es un objeto que crea y actualiza un índice.

Actualización del índice de Magento 2

Para poder operar con datos actualizados, los índices deben actualizarse de vez en cuando. Hay tres formas de hacerlo:
  1. Actualizaciones programadas (lanzadas por cron);
  2. Actualización del índice de Magento al guardar (se inicia cuando los datos se han editado y guardado);
  3. Actualización manual (vía terminal).
Por el tipo de datos procesados, Magento reindex se puede iniciar como:
  • La reindexación completa procesa nuevamente todos los datos indexados. Siempre se puede iniciar manualmente a través de la consola.
  • La reindexación parcial procesa nuevamente solo los datos que se han modificado.
La lógica del funcionamiento del indexador de Magento se describe a continuación:
Diagrama de indexación de Magento 2

Gestión de índices de Magento a través del panel de administración

En el panel de administración, puede controlar los modos de índice y observar la información actual sobre los índices ( Sistema> Gestión de índices ).
Indexación de Magento 2
En la columna Modo , podemos ver cómo se actualiza el índice. En la columna Estado , podemos ver si se requiere reindexar ( Se requiere reindexar ) o no ( Listo ). En la columna Actualizada , puede ver la fecha de la última actualización.
En esta página, podemos cambiar el modo de reindexación. Para hacerlo, debe elegir el modo necesario en una casilla de verificación y presionar Enviar .
gestión del índice magento reindex magento 2

Las oportunidades predeterminadas para administrar y monitorear las operaciones de índices son bastante limitadas, pero existen múltiples módulos gratuitos para administrar y reorganizar índices desde el panel de administración de Magento 2.
Indexador 240px

Indexador para Magento 2

Optimice el proceso de indexación en su backend de Magento 2.
DESCARGA GRATIS

¿Cuáles son los comandos de índice para Magento 2?

No podemos iniciar la reindexación desde el panel de administración. Para hacerlo, necesitamos acceder al servidor a través de terminal. Si pones en php bin / magento indexer , verás la descripción del comando para indexar:
indexer: info Muestra indexadores permitidos.
indexador: reindex Reindexes
indexador de datos : restablecer Restablece el estado del indexador a
indexador no válido : modo de configuración Establece el tipo de modo de índice
indexador: modo de demostración Muestra el
indexador de modo de índice : estado Muestra el estado del indexador
Al ejecutar este comando, podemos ver cómo trabajar con todo el grupo de índices así como con algunos específicos agregando sus nombres como argumento.

indexador: información

Este comando le mostrará la lista de todos los índices como un nombre de código utilizado en el sistema. Podemos usar el código de índice como argumento para todos los comandos que se enumeran a continuación.
Aquí está el ejemplo de ejecución:
Índice de Magento 2

indexador: modo show

Este comando le mostrará los modos de indexación.
Magento 2

indexador: set-mode {tiempo real | horario} [indexador]

Este comando se puede utilizar para cambiar el modo de reindexación. conjuntos en tiempo real Actualización al guardar ; Schedule establece el modo de reindexación en Update by Schedule . Con el argumento del indexador , puede cambiar el modo de un índice específico. Sin argumento, el modo se establecerá para todos los índices.

indexador: estado

Este comando demuestra el estado del indexador. Es una forma más de definir si se requiere reindexar o si los datos están actualizados y no se requiere reindexar.
gestión de índices magento 2

indexador: reindex

Es el comando más utilizado que inicia la reindexación. Si no hay argumentos, todos los índices se volverán a indexar. Si usa el código de índice como un argumento [índice] , se iniciará la reindexación solo para este. Es muy conveniente ya que permite iniciar reindexar solo para los índices que lo requieran.

indexador: restablecer

A veces, puede ocurrir un error durante la reindexación y el proceso no puede finalizar. Por ejemplo, después de ejecutar el comando reindex, nos encontramos con esto:
Magento 2
Para solucionarlo, podemos pausar el índice con el comando reset. En esta situación, debe ejecutar el comando php bin / magento indexer: reset stock . Desbloqueará el proceso de reindexación.

Tablas de estado de índice en la base de datos

Las siguientes tablas en una base de datos se utilizan para el almacenamiento del estado del índice:
  • indexer_state
  • mview_state

Mecanismo de indexación por horario, Mview

Cuando hay cambios en el objeto de una base de datos para la que el sistema Magento 2 tiene índices, aparece un nuevo disparador en la tabla con el sufijo _cl, si existe dicha tabla. Si no existe tal tabla, se genera una nueva. Los archivos mview.xml son responsables de definir los datos cuyos cambios se rastrearán en la tabla _cl (registro de cambios).
Por ejemplo, Magento / Catalog / etc / mview.xml

A partir de este extracto, puede ver que se creará catalog_category_product_cl . Contendrá la información sobre los cambios en las tablas catalog_category_entity y catalog_category_entity_int .
Todas las tablas de registro de cambios se crean mediante una determinada regla INDEXER_TABLE_NAME + '_cl'. Las tablas contienen las columnas version_id como autoincrement y entity_id que contiene el identificador de objeto que debe volver a indexarse. Para cada tabla enumerada en los nodos de la tabla, se crean tres tipos de desencadenadores MYSQL DESPUÉS de que se crean: INSERT, UPDATE, DELETE.
Por ejemplo, para la tabla catalog_category_entity , se crearán los siguientes activadores:

El componente Mview verifica version_id en las tablas * _cl si es diferente del almacenado en la tabla mview_state . Si los números son diferentes, reindex se lanza.

Indexación parcial y completa

Aquí vamos a discutir la indexación parcial y completa en Magento 2.

Indexación parcial

La indexación parcial actualiza los índices solo en los objetos que se modificaron. La indexación parcial se produce con los modos de índice Actualizar al guardar y Actualizar por programación . Es un tipo de indexación donde se utilizan las tablas de registro de cambios que describimos anteriormente.

Indexación completa

Algunas extensiones de Magento 2 requieren una indexación completa, ya que algunos índices pueden dejar de ser válidos. La indexación completa se inicia por programación cron o manualmente .

Preguntas frecuentes sobre la gestión de índices de Magento

Cómo crear un índice personalizado

Para ello crearemos un módulo personalizado. En primer lugar, el archivo registration.php :
Igor Dragun

Asóciese con nosotros

Analicemos cómo hacer crecer su negocio. Obtenga una cuota gratis.
Habla con Igor

Y el archivo etc / module.xml :

Entonces, ahora definimos nuestro índice. Necesitamos crear un archivo etc / indexer.xml para ello:

En este archivo, definimos un nuevo indexador con atributos:
id es un nuevo identificador de índice único. Es especialmente necesario para lanzar reindex a través de la terminal.
view_id es un identificador en el archivo mview.xml .
la clase  posee ciertos métodos de procesamiento (executeFull, executeList, executeRow)
El indexador simple debe contener los siguientes elementos:
título de un índice que se mostrará en la cuadrícula del índice
descripción de un índice que se mostrará en la cuadrícula del índice
Luego, creamos un archivo etc / mview.xml . Es necesario detectar cambios en los objetos de la tabla y activar los indexadores.

En este archivo, definimos el identificador de nuestro mview y la clase donde se lanzará el método execute () si hay cambios en los datos. En el nodo de suscripciones , definimos las tablas que contienen el nombre de la tabla y la columna cuyo valor se transferirá al método execute () si se cambia el valor. Entonces, cuando el valor de entity_id se transferirá al método Belvg \ CronIndexer \ Model \ Indexer \ Example :: execute () si los valores se cambian en la tabla catalog_product_entity .
En los archivos indexer.xml y mview.xml , hemos definido la clase Belvg \ CronIndexer \ Model \ Indexer \ Example donde deberían estar los métodos para cambiar el procesamiento de datos. Ahora, necesitamos crear Model / Indexer / Example.php

 

¿Cómo hacer que Magento 2 indexe automáticamente a una hora determinada?

Entonces, necesitamos cambiar la frecuencia de indexación a través de cron. De forma predeterminada, la indexación se realiza cada minuto. Puede verlo usted mismo abriendo el archivo vendor / magento / module-indexer / etc / crontab.xml .

Estamos interesados ​​principalmente en la etiqueta <job name = “indexer_reindex_all_invalid”> . Cinco asteriscos indican que todos los índices no válidos se actualizan cada minuto. Los asteriscos se dan de acuerdo con esta tabla:
* * * * * comando a ejecutar
|
+ —– Día de la semana (0 - 7) (Domingo = 0 o 7)
+ ——- Mes (1 - 12)
+ ——— Día del mes (1 - 31)
+ ———– Hora (0 - 23)
+ ————- Minuto (0 - 59)
También puede configurar los valores numéricos, con el asterisco simplemente significa "cada minuto (hora, día, etc.)". Por lo tanto, si desea actualizar los índices de coronas solo una vez al día a una hora determinada, puede escribir, por ejemplo, esto: 0 4 * * *. Esta entrada indicará: 0 minutos - 4 horas - todos los días (4 am todos los días).
Pero no podemos realizar cambios en los archivos que contiene la carpeta del proveedor. Para ello, deberá crear su propio módulo. Podemos usar el módulo creado antes de Belvg_CronIndexer .
Y ahora en la carpeta etc crearemos un archivo crontab.xml con el siguiente contenido:

Así es como redefinimos el tiempo; ahora, la reindexación de índices no válidos se realizará no cada minuto, sino una vez al día.
Todo esto tiene que ver con el tema de la gestión de índices en Magento 2. Esperamos que este artículo le haya resultado útil. Si tiene algún comentario o pregunta, déjelo a continuación.

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

outbrain

Páginas