Jar*_*aro 10 indexing performance magento
我在保存类别期间正在提高性能,我发现一旦通过Magenti API或后端更新类别,就会调用以下更新查询
SQL: UPDATE `index_event` SET `event_id` = ?, `type` = ?, `entity` = ?, `entity_pk` = ?, `created_at` = ?, `old_data` = ?, `new_data` = ? WHERE (event_id='13066')
BIND: Array
(
[0] => 13066
[1] => save
[2] => catalog_category
[3] => 2867
[4] => 2011-09-22 13:50:54
[5] => a:4:{s:30:"Mage_Catalog_Model_Indexer_Url";N;s:40:"Mage_Catalog_Model_Category_Indexer_Flat";N;s:43:"Mage_Catalog_Model_Category_Indexer_Product";N;s:41:"Mage_CatalogSearch_Model_Indexer_Fulltext";N;}
[6] => a:11:{s:35:"cataloginventory_stock_match_result";b:0;s:34:"catalog_product_price_match_result";b:0;s:24:"catalog_url_match_result";b:1;s:30:"Mage_Catalog_Model_Indexer_Url";N;s:33:"catalog_product_flat_match_result";b:0;s:34:"catalog_category_flat_match_result";b:1;s:40:"Mage_Catalog_Model_Category_Indexer_Flat";N;s:37:"catalog_category_product_match_result";b:1;s:43:"Mage_Catalog_Model_Category_Indexer_Product";N;s:35:"catalogsearch_fulltext_match_result";b:1;s:41:"Mage_CatalogSearch_Model_Indexer_Fulltext";N;}
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我它意味着什么,将会发生什么?看起来某些索引操作被推送到队列但是什么时候执行?
Jür*_*len 21
您的假设"看起来某些索引操作被推送到队列"是正确的.
回答你的问题"但它什么时候执行?" :
有些Magento型号,比如
Mage_Core_Model_Store
Mage_Catalog_Model_Product
Mage_Catalog_Model_Category
Mage_CatalogInventory_Model_Stock_Item
Mage_Tag_Model_Tag
Mage_Tag_Model_Tag_Relation
Run Code Online (Sandbox Code Playgroud)
例如,队列索引事件.主要在删除之前和/或提交之后.
他们通过调用类logEvent()
或processEntityAction()
方法来完成此操作Mage_Index_Model_Indexer
.
如果他们logEvent()
直接调用,则索引事件将仅排队.甚至不会尝试重新索引.
如果他们调用processEntityAction()
,则索引事件也将排队,但Magento将在排队后立即尝试处理此索引事件.
还有Mage_Index_Model_Indexer::indexEvents()
一些模块调用了第三种方法.对前两者不同的是,这indexEvents()
并没有排队任何指数的事件,但将只尝试重新索引立即.
请注意,任何重建索引通processEntityAction()
和indexEvents()
只会发生,如果相应的索引类型的处理模式是Mage_Index_Model_Process::MODE_REAL_TIME
.
你可以通过这个来检查System -> Index Management
.如果Mode
列在保存时读取更新,则该索引设置为MODE_REAL_TIME
.
如果它改为读取手动更新,则设置为Mage_Index_Model_Process::MODE_MANUAL
,这意味着根本不会发生自动重建索引.
在后一种情况下,您需要手动触发重建索引过程以重新索引数据.这可以通过几种方法实现,例如通过在命令行上使用System -> Index Management -> Index -> Reindex data -> Submit
或使用Magento shell/indexer.php
,或者通过脚本编写由cron作业启动的索引器进程集合处理.