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


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.