마 젠토 1.9 : 제품 가격표-작동 원리


9

마 젠토에는 가격 관리를위한 많은 테이블이 있습니다

그것은 나에게 보인다 :

  • 제품 / 카테고리 페이지에서 제품 가격은 catalog_product_flat 테이블 에서로드됩니다 .
  • 검색 페이지에서 _idx 테이블이 사용됩니다 (가격 범위 필터를 생각합니다).

데이터가있는 테이블

| 테이블 | 노트 |
| --------------------------------------------- | --- --------------------- |
| catalog_product_index_price | 데이터가 있음-메인 테이블 |
| catalog_product_index_price_idx | 데이터가 있습니다 |
| catalog_product_index_price_tmp | 데이터가 있습니다 |

데이터가없는 테이블

| 테이블 | 노트 |
| --------------------------------------------- | --- --------------------- |
| catalog_product_index_price_bundle_idx | 데이터 없음 |
| catalog_product_index_price_bundle_opt_idx | 데이터 없음 |
| catalog_product_index_price_bundle_opt_tmp | 데이터 없음 |
| catalog_product_index_price_bundle_sel_idx | 데이터 없음 |
| catalog_product_index_price_bundle_sel_tmp | 데이터 없음 |
| catalog_product_index_price_bundle_tmp | 데이터 없음 |
| catalog_product_index_price_cfg_opt_agr_idx | 데이터 없음 |
| catalog_product_index_price_cfg_opt_agr_tmp | 데이터 없음 |
| catalog_product_index_price_cfg_opt_idx | 데이터 없음 |
| catalog_product_index_price_cfg_opt_tmp | 데이터 없음 |
| catalog_product_index_price_downlod_idx | 데이터 없음 |
| catalog_product_index_price_downlod_tmp | 데이터 없음 |
| catalog_product_index_price_final_idx | 데이터 없음 |
| catalog_product_index_price_final_tmp | 데이터 없음 |
| catalog_product_index_price_opt_agr_idx | 데이터 없음 |
| catalog_product_index_price_opt_agr_tmp | 데이터 없음 |
| catalog_product_index_price_opt_idx | 데이터 없음 |
| catalog_product_index_price_opt_tmp | 데이터 없음 |

따라서 데이터가있는 3 개의 테이블 만있는 것처럼 보입니다.

  • catalog_product_index_price
  • catalog_product_index_price_idx
  • catalog_product_index_price_tmp

실제로 사용되는 유일한 테이블은 catalog_product_index_price 이며, 계층 탐색은 이 테이블을 사용하여 가격별로 제품을 필터링합니다. ( Mage_Catalog_Model_Resource_Layer_Filter_Price-> _ getPriceExpression () 참조 )

테이블 : catalog_product_index_price

| entity_id | customer_group_id | website_id | tax_class_id | 가격 | final_price | min_price | max_price | tier_price | group_price |

그것은 웹 사이트 / 고객 그룹의 모든 조합을 호스팅합니다. 내 순열 수학은 어쨌든 다음과 같이 가정합니다.

  • 100.000 제품
  • 2 개의 웹 사이트 (웹 사이트로 설정된 가격 속성 범위)
  • 10 개 고객 그룹

=> 100.000 * 2 * 10 = 2.000.000 행

다른 고객 그룹에 대해 다른 가격을 사용하지 않으면 DB에 많은 공간이 낭비되고 가격 재 색인은 매우 느려집니다. (기본적으로 각 제품에 대해 20 개의 행이 모두 동일한 값을 포함하므로)

질문 :

  1. 위의 모든 빈 테이블을 삭제하는 것이 안전합니까?
  2. 왜 데이터가있는 catalog_product_index_price 테이블이 3 개인데 실제로 1 개만 사용됩니까?

최적화 :

  1. 제품 가격이 모든 조합에 대해 모두 동일한 경우 인덱스 테이블의 행 수를 줄일 수 있습니까?

1
모든 테이블에 대해 대답 할 수는 없지만 catalog_product_index_price_bundle_x, catalog_product_index_price_cfg_x 및 catalog_product_index_price_downlod_x와 같은 일부 사이트에는 번들, 구성 가능 및 다운로드 가능한 제품이있는 경우에만 데이터가 있습니다. 나머지는 2 차 통화 등으로 최종 가격을 저장하는 데 사용될 수 있지만 긍정적이지 않습니다.
Eirik

답변:


2

위의 모든 빈 테이블을 삭제하는 것이 안전합니까?

이러한 빈 테이블은 Magento가 다시 색인을 생성하고 카탈로그에 지정된 제품 유형에 대한 제품이있을 때 채워집니다.
Magento가 재 인덱싱하는 동안 _idx 테이블을 제거하면 안전합니다.

왜 데이터가있는 3 개의 테이블이 있지만 실제로 1 개만 사용됩니까?

idx 테이블 및 tmp 테이블은 색인 작성에만 사용됩니다.

  • _tmp가 비어 있으며 다시 색인 작성하는 동안 채워집니다.
  • _idx는 실제 인덱스 테이블입니다.

미안 당신의 대답은 나에게 아무 말도하지 않습니다.
Fra

명확하지 않은 것에 대해 더 구체적으로 설명해 주시겠습니까?
Quisse

나는 그 테이블이 인덱스라는 것을 알고 있습니다. 인덱스를자를 수 있다는 것을 알고 있습니다 (당신은 할 수는 없지만 사실이 아닙니다. 질문에 대한 답변 답변이 아닌 의견을 게시해야합니다
Fra

도와 주셔서 죄송합니다. 답을 읽었습니까? U는 정말로 당신의 질문 옆에 내 답변을 배치해야합니다.
Quisse

이제 당신을 위해 해냈습니다. 질문을 해결하기위한 건설적인 대화를 할 수 있기를 바랍니다.
Quisse
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.