Tại sao Magento có chỉ số chứng khoán?


12

Tôi có thể hơi thiển cận nhưng tôi không thể tìm thấy lý do đằng sau Magento có chỉ số chứng khoán khi cataloginventory_stock_statuscataloginventory_stock_status_idxcó cấu trúc giống hệt nhau.

Sự khác biệt duy nhất tôi có thể tìm thấy ở cấp độ bảng là:

  1. Có một sự thay đổi nhỏ về số lượng hàng
  2. cataloginventory_stock_status có 3 ràng buộc khóa ngoại không tìm thấy trên bảng chỉ mục.

Tôi cho rằng sẽ có một số lý do liên quan đến việc khóa hoặc một số quy trình nhất định nơi nó sẽ ảnh hưởng đến việc thanh toán nhưng không thể tìm thấy thông tin về lý do tại sao.


Rất thú vị!
Paras Sood

Câu trả lời:


10

Quá trình lập chỉ mục ghi các giá trị lúc đầu trong _idxbảng để nó không can thiệp vào các hành động đọc trên bảng chính trong khi nó đang chạy.
Khi tất cả các giá trị được chèn vào_idx bảng thì tất cả các giá trị được sao chép vào bảng chính.

Hãy nhìn xem như thế nào Mage_CatalogInventory_Model_Resource_Indexer_Stock::reindexAll.
Cũng xem ý kiến ​​của tôi trong mã dưới đây:

public function reindexAll()
{
    $this->useIdxTable(true); //tell the indexer to use the _idx table
    $this->beginTransaction();
    try {
        $this->clearTemporaryIndexTable(); //clear data from the _idx table

        foreach ($this->_getTypeIndexers() as $indexer) {
            $indexer->reindexAll(); //reindex everything in the _idx table
        }

        $this->syncData(); //clear the main table and insert the values from the _idx table.
        $this->commit();
    } catch (Exception $e) {
        $this->rollBack();
        throw $e;
    }
    return $this;
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.