Magento 1.9: Ürün Fiyat tabloları - nasıl çalışır?


9

Magento fiyatları yönetmek için birçok masaya sahiptir

Bana öyle geliyor ki:

  • ürün / kategori sayfalarında ürün fiyatları catalog_product_flat tablolarından yüklenir .
  • arama sayfalarında _idx tablosu kullanılır (Bence fiyat aralığı filtresi).

Verileri içeren tablo

| Tablo | Notlar |
| --------------------------------------------- | --- --------------------- |
| catalog_product_index_price | verilere sahip - ana tablo |
| catalog_product_index_price_idx | verisi var |
| catalog_product_index_price_tmp | verisi var |

Veri içermeyen tablo

| Tablo | Notlar |
| --------------------------------------------- | --- --------------------- |
| catalog_product_index_price_bundle_idx | veri yok |
| catalog_product_index_price_bundle_opt_idx | veri yok |
| catalog_product_index_price_bundle_opt_tmp | veri yok |
| catalog_product_index_price_bundle_sel_idx | veri yok |
| catalog_product_index_price_bundle_sel_tmp | veri yok |
| catalog_product_index_price_bundle_tmp | veri yok |
| catalog_product_index_price_cfg_opt_agr_idx | veri yok |
| catalog_product_index_price_cfg_opt_agr_tmp | veri yok |
| catalog_product_index_price_cfg_opt_idx | veri yok |
| catalog_product_index_price_cfg_opt_tmp | veri yok |
| catalog_product_index_price_downlod_idx | veri yok |
| catalog_product_index_price_downlod_tmp | veri yok |
| catalog_product_index_price_final_idx | veri yok |
| catalog_product_index_price_final_tmp | veri yok |
| catalog_product_index_price_opt_agr_idx | veri yok |
| catalog_product_index_price_opt_agr_tmp | veri yok |
| catalog_product_index_price_opt_idx | veri yok |
| catalog_product_index_price_opt_tmp | veri yok |

Yani veri içeren sadece 3 tablo var gibi görünüyor:

  • catalog_product_index_price
  • catalog_product_index_price_idx
  • catalog_product_index_price_tmp

Kullanılan tek gerçek tablo catalog_product_index_price'dir , katman navigasyonu ürünleri fiyata göre filtrelemek için kullanır. (bkz. Mage_Catalog_Model_Resource_Layer_Filter_Price -> _ getPriceExpression () )

Tablolar: catalog_product_index_price

| varlık_kimliği | müşteri_grubu_kimliği | website_id | tax_class_id | fiyat | final_price | min_price | max_price | tier_price | grup_fiyat |

Web sitelerinin / müşteri grubunun tüm kombinasyonlarına ev sahipliği yapıyor Benim permütasyon matematik zaten varsayalım:

  • 100.000 ürün
  • 2 web sitesi (Web sitesine ayarlanmış bir fiyat özelliği kapsamı)
  • 10 müşteri grubu

=> 100.000 * 2 * 10 = 2.000.000 satır

Farklı müşteri grupları için farklı fiyatlar kullanmazsanız, DB'de çok fazla alandan feragat edersiniz ve fiyat reindex çok yavaş olur. (Çünkü temel olarak her ürün için 20 satırın tümü aynı değerleri içerecektir)

Sorular:

  1. Yukarıdaki tüm boş tabloları silmek güvenli midir?
  2. Neden verilerle 3 tablo catalog_product_index_price var ama sadece 1 kullanılıyor?

Optimizasyon:

  1. Ürün fiyatları tüm kombinasyonlar için aynı olduğunda, endeks tablosundaki satır miktarını azaltmak mümkün olabilir mi?

1
Tüm tablolara gelince cevap veremem ancak catalog_product_index_price_bundle_x, catalog_product_index_price_cfg_x ve catalog_product_index_price_downlod_x gibi bazı sitelerde yalnızca paketlenmiş, yapılandırılabilir ve indirilebilir ürünler varsa veriler olacaktır. Diğerleri nihai fiyatı ikincil para birimleri vb. İle depolamak için kullanılabilir, ancak bunun üzerinde olumlu değilim.
Eirik

Yanıtlar:


2

Yukarıdaki tüm boş tabloları silmek güvenli midir?

Bu boş tablolar, Magento reindexes ve katalogunda belirtilen ürün tipine sahip ürünler olduğunda doldurulur.
Magento, reindex sırasında bunları yeniden oluşturacak _idx tablosunu kaldırmak güvenli olmalıdır.

Neden veri içeren 3 tablo var ama sadece 1 gerçekte kullanılıyor?

İdx tablosu ve tmp tablosu yalnızca dizinleme için kullanılır:

  • _tmp boş ve reindex sırasında doldurulur
  • _idx gerçek dizin tablosudur

üzgünüm cevabın bana hiçbir şey söylemiyor.
Fra

Net olmayan şeyler hakkında daha açık olabilir misiniz?
Quisse

Bu tablonun indeks olduğunu biliyorum, indeksi kısaltabileceğinizi biliyorum (yapamayacağınızı söylüyorsunuz ama bu doğru değil, sadece sonra yeniden dizine eklemeniz gerekiyor) yeni bir şey söylemiyorsunuz .... soruya bir cevap değil bir yorum göndermek gerekir
Fra

Yardım etmeye çalıştığım için üzgünüm, cevabımı bile okudun mu? Cevaplarımı sorularınızın yanına koymanız gerekiyor.
Quisse

Şimdi senin için yaptım. Umarım soruyu çözmek için yapıcı bir diyalog kurabiliriz.
Quisse
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.