カテゴリフラットテーブルオプションはいつ使用する必要がありますか?


16

前の質問へのフォローアップとして、私は知りたい:

カテゴリフラットテーブルオプションはいつ使用する必要がありますか?

グーグル検索中に、「非常に多くのカテゴリがある場合有効にするアドバイスを見つけました。しかし、多くは何ですか?

製品のフラットテーブルをアクティブにすることは、パフォーマンスの観点から適切な決定であることは簡単に理解できますが、カタログにとっても同じくらい重要ですか?

そして、これからどのような意味がありますか?フラットカテゴリテーブルを有効にすると、カテゴリ製品のポジションを保存できなくなることがわかりました。少なくとも、フラットオプションを使用しない場合ほど簡単ではありません(マリウスに感謝します)。他に言及できるものはありますか?

前もって感謝します :)

回答:


10

サーバーにPHPMyAdminがインストールされている場合は、Magentoのテーブルを見ることができます。catalog_product_...とで始まるものがたくさんあることがわかりますcatalog_category_...

これらはすべて製品とカテゴリごとに使用されるため、呼び出すページごとに多くの複雑で重いクエリが実行されます。

MySQLの負荷を軽減し、ショップを高速化するために、Magentoはフラットテーブルを提供しています。たとえばcatalog_product_flat_1。このテーブルの構造を見ると、基本的な製品データがたくさんあることがわかります。たとえば、カテゴリ製品リストでは、クエリを実行する代わりに、このテーブルに対して1つのクエリのみを実行する必要があります。属性データを含む他の複数のテーブル。

ただし、このデータは他のテーブルのデータから集計されます。つまり、製品を保存するたびに、この製品データをコンパイルするためにいくつかindexesSystem > Configuration > Index Management)が更新されます。例えば開発中のようないくつかのケースでは、これは不要かもしれません。ページの読み込みに時間がかかる場合でも、すべての変更をすぐに確認したい場合。

結論として、一般にショップを立ち上げるときはいつでも、それらをオンにし、プログラミングの際には完全な製品またはカタログオブジェクトを使用せず、代わりにフラットインデックスによって提供されるデータを使用するようにしてください。


生産的な環境では常にフラットな製品テーブルをアクティブ化すると思います。しかし、フラットカテゴリテーブルについてはあまり確信がありませんでした。両方を常にアクティブにするということですか?あなたが持っているカタログの数に関係なく?
セルドウェラー

常にそれらをアクティブにすると、カテゴリが多いほど大きなメリットが得られますが、カテゴリが10個しかない場合でも、いくつかのクエリが保存されます。
サンダーマンジェル

4
常にフラットカタログエンティティをアクティブにする必要がありますが、理論的には機能しない場合があります。これは、製品リストで使用される多くの属性が必要で、mysqlの最大行制限を超えた場合に発生します。私はそれが一度だけ起こるのを見たことがあります。あまり心配する必要はありませんが、万が一それが起こった場合には、その理由を知ることができます。
マリウス

@Celldwellerはあなたの質問についてもっと情報を提供できますか?
サンダーマンジェル

0

カテゴリの数が多い場合、またはカテゴリのカスタムメイドの属性が多い場合は、クエリの複雑さが軽減されるため、良い選択です。負荷が大きいと、さらに大きなメリットがあることに注意してください。主な欠点は、カテゴリとflat_categoriesが非常に異なるインターフェイスを使用するため、多くの場合、有効なフラットカテゴリの場合、コードは非常に注意する必要があります。


そこに再びあります。多くの。;-)それで、「依存する」とも言うでしょうか?10個のカタログがある場合、フラットカテゴリテーブルをアクティブにしますか?それとも50?線を引くことさえ可能ですか?
セルドウェラー

フラットカタログを有効にしている間、コードの変更を処理するいくつかの例を使用して、ケースを把握する必要があります。
アヌラグハンデルヴァル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.