রিপোর্ট_ভিউ_ড্রোড_প্রডাক্ট_আইডিএক্স ছাঁটাই করতে ঠিক আছে


12

আমি টেবিলগুলির তালিকাটি পড়ছিলাম যা কেটে ফেলা ঠিক আছে ( /programming/12205714/list-of-tables-to-safely-truncate-in-magento ) এবং আমি দেখতে পেলাম না

report_viewed_product_index

টেবিলটি বিশাল এবং এটি ডেটাবেস পুনরুদ্ধার করতে খুব দীর্ঘ সময় নেয়। এই ডেটাটি কাটা বা কমপক্ষে পুরানো ডেটা সরিয়ে ফেলা নিরাপদ?


1
আকর্ষণীয় প্রশ্ন, বিটিডব্লিউ। কিছুক্ষণ আগে আমিও একই কথা ভাবলাম :)
— আন্না ভেলক্ল

উত্তর:


17

আমি যতদূর দেখতে / জানতে পারি এই টেবিলটি ইভেন্টের অন্তর্ভুক্ত log_log_clean_after।

আপনি যদি ফাইলটির নিচে সন্ধান করেন app/code/core/Mage/Reports/etc/config.xmlতবে নীচের স্নিপেটটি দেখতে পাবেন।

<events>
    <log_log_clean_after>
        <observers>
            <reports>
                <class>reports/event_observer</class>
                <method>eventClean</method>
            </reports>
        </observers>
    </log_log_clean_after>
</events>

এই পদ্ধতিটি সমস্ত প্রতিবেদন ইভেন্টগুলি পরিষ্কার করে এবং তারপরে পণ্যটি দেখেছে এবং টেবিলগুলি তুলনা করে।

public function eventClean(Varien_Event_Observer $observer)
{
    /* @var $event Mage_Reports_Model_Event */
    $event = Mage::getModel('reports/event');
    $event->clean();

    Mage::getModel('reports/product_index_compared')->clean();
    Mage::getModel('reports/product_index_viewed')->clean();

    return $this;
}

আপনি যদি নিশ্চিত হন যে লগক্লিন ক্রোন সেটআপ রয়েছে তবে রিপোর্টগুলিও এটি দিয়ে পরিষ্কার করা উচিত should


চমৎকার উত্তর, ডেভিড :)
— আনা ভলক্ল

12

আমি কিছু সময় আগে এটিতে কিছু গবেষণা রেখেছিলাম কারণ আমাদের সেই টেবিলটি নিয়েও সমস্যা ছিল। report_viewed_product_indexসম্প্রতি দেখা পণ্যগুলির জন্য ব্যবহৃত হয়। আপনি যদি এই বৈশিষ্ট্যটি ব্যবহার না করেন: যান এবং কেটে দিন :-)

আপনি যদি সম্প্রতি দেখা পণ্যগুলির কার্যকারিতা ব্যবহার করেন তবে আপনার ক্রোনটি সঠিকভাবে সেট আপ হয়েছে কিনা তা পরীক্ষা করে দেখুন। log/visitorসারণীতে আর অস্তিত্ব নেই এমন দর্শকদের জন্য প্রবেশদ্বারগুলি log_log_clean_afterইভেন্টে স্বয়ংক্রিয়ভাবে সরানো উচিত ।

পরিষ্কার পদ্ধতিটি যেখান Mage_Reports_Model_Resource_Product_Index_Viewedথেকে Mage_Reports_Model_Resource_Product_Index_Abstractএটি ঘটে তার জন্য উত্তরাধিকার সূত্রে প্রাপ্ত ।

/**
 * Clean index (visitor)
 *
 * @return Mage_Reports_Model_Resource_Product_Index_Abstract
 */
public function clean()
{
while (true) {
    $select = $this->_getReadAdapter()->select()
        ->from(array('main_table' => $this->getMainTable()), array($this->getIdFieldName()))
        ->joinLeft(
            array('visitor_table' => $this->getTable('log/visitor')),
            'main_table.visitor_id = visitor_table.visitor_id',
            array())
        ->where('main_table.visitor_id > ?', 0)
        ->where('visitor_table.visitor_id IS NULL')
        ->limit(100);
    $indexIds = $this->_getReadAdapter()->fetchCol($select);

    if (!$indexIds) {
        break;
    }

    $this->_getWriteAdapter()->delete(
        $this->getMainTable(),
        $this->_getWriteAdapter()->quoteInto($this->getIdFieldName() . ' IN(?)', $indexIds)
    );
}
return $this;
}

নিজের পক্ষে খুব খারাপ কোনও উত্তর নয়;)
— ডেভিড ম্যানার্স

হুম, আমরা visitor_id সঙ্গে রেকর্ডের অনেক report_viewed_product_index মধ্যে শূন্য আছে - এটা যে এই রেকর্ড সরানো হবে না বলে মনে হয়
— Jiri Chmiel
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.