現在、EE 1.13.0.2から1.14.1.0にアップグレードしているときにこの問題が発生しています。これは、cronjobsで製品属性と在庫を一括更新するときに発生します。1.13では、ジョブはそれぞれ〜3秒と〜90秒かかります。1.14では、約10分になり、長さを知りたくありません。
PATCH_SUPEE-4945_EE_1.14.0.1_v2.sh
遅い製品の保存に関するEEパッチがあります。サポートにリクエストすることができます。
私が見つけた別のヒントは、まだ0に設定されていない行のみを更新することでした(もちろん、コアファイルを一時的に変更して、影響があるかどうかをテストします)。
diff --git a/app/code/core/Enterprise/CatalogSearch/Model/Index/Action/Fulltext/Refresh.php b/app/code/core/Enterprise/CatalogSearch/Model/Index/Action/Fulltext/Refresh.php
index c6273a1..95e6d4c 100644
--- a/app/code/core/Enterprise/CatalogSearch/Model/Index/Action/Fulltext/Refresh.php
+++ b/app/code/core/Enterprise/CatalogSearch/Model/Index/Action/Fulltext/Refresh.php
@@ -668,7 +668,7 @@ class Enterprise_CatalogSearch_Model_Index_Action_Fulltext_Refresh
protected function _resetSearchResults()
{
$adapter = $this->_getWriteAdapter();
- $adapter->update($this->_getTable('catalogsearch/search_query'), array('is_processed' => 0));
+ $adapter->update($this->_getTable('catalogsearch/search_query'), array('is_processed' => 0), array('is_processed != 0'));
$adapter->delete($this->_getTable('catalogsearch/result'));
$this->_app->dispatchEvent('enterprise_catalogsearch_reset_search_result', array());
diff --git a/app/code/core/Mage/CatalogSearch/Model/Resource/Fulltext.php b/app/code/core/Mage/CatalogSearch/Model/Resource/Fulltext.php
index ee8b1c3..1d89146 100755
--- a/app/code/core/Mage/CatalogSearch/Model/Resource/Fulltext.php
+++ b/app/code/core/Mage/CatalogSearch/Model/Resource/Fulltext.php
@@ -299,7 +299,7 @@ class Mage_CatalogSearch_Model_Resource_Fulltext extends Mage_Core_Model_Resourc
public function resetSearchResults()
{
$adapter = $this->_getWriteAdapter();
- $adapter->update($this->getTable('catalogsearch/search_query'), array('is_processed' => 0));
+ $adapter->update($this->getTable('catalogsearch/search_query'), array('is_processed' => 0), array('is_processed != 0'));
$adapter->delete($this->getTable('catalogsearch/result'));
Mage::dispatchEvent('catalogsearch_reset_search_result');
そして最後に、is_processed
列にインデックスを追加することを推奨しました:
ALTER TABLE `database`.`catalogsearch_query` ADD INDEX `IDX_CATALOGSEARCH_QUERY_IS_PROCESSED` (`is_processed`) COMMENT '';
私はそれらすべてを試してみましたが、それらはマイナーなパフォーマンスの改善をもたらしましたが、EE 1.13のパフォーマンスに近いものはありませんでした。
(表面上で)簡単な修正は、追加することです
if (!$this->_isFulltextOn()) {
return $this;
}
execute()
これらのクラスの最初に:
- Enterprise_CatalogSearch_Model_Index_Action_Fulltext_Refresh
- Enterprise_CatalogSearch_Model_Index_Action_Fulltext_Refresh_Changelog
- Enterprise_CatalogSearch_Model_Index_Action_Fulltext_Refresh_Row
その場合、Solrが使用されるように構成されているため、次のコードは実行されません。コアチームがこの方法を1.14で非推奨にしたので、それは醜いので、できるだけコストをかけないようにします。
私はこれを昨日から調査しているだけなので、適切な解決策をフォローアップできることを願っています。
更新09.02.2015
xdebugプロファイルダンプを作成して、MagentoとSolrの間の通信がほとんどの時間を占めることを確認しSystem > Configuration > Advanced > Index Management > Index Options > Catalog Search Index
ましたUpdate on Save
。カタログ検索インデックスを設定Update when scheduled
すると、速度が大幅に向上します。
2015年3月3日更新
その間、エンタープライズサポートは、なぜ$this->_isFulltextOn()
が廃止されるのかを説明しました。
現在のmysql_fulltextインデクサーをリファクタリングして実際のインデックス作成作業をカプセル化し、新しいMviewベースのインデクサーモデルを使用するようにカタログ検索SOLRインデックスを調整したため、$ this-> _ isFulltextOn()を実行メソッドから削除しました。
Enterprise_CatalogSearchモジュールは、変更ログを部分的な再インデックスに利用する新しいインデクサーモデルを実装しました。現在、SOLRがカタログ検索エンジンとして使用されている場合、catalogsearch_fulltextインデクサーは古いインデクサーモデルを使用するようにフォールバックします。SOLRがカタログ検索エンジンとして設定されている場合、Enterprise_CatalogSearchモジュールで新しいインデクサーモデルを利用します。
したがって、商人が製品の保存中に全文索引をスキップしたい場合は、スケジュールモードで更新するように索引モードを変更するように依頼してください。
したがって、公式の解決策は、インデックスモードをに変更することUpdate when scheduled
です。数週間問題なく使用しています。cronが毎分実行されている場合、検索が更新されるまでわずかな遅延が発生します。