2
當我有很多產品(3000和22000變種)時,添加新的庫存地點需要幾個小時,因爲Spree正在爲每個變種創建庫存項目。如何優化在Spree中添加新的庫存位置?
在此期間變體表被鎖定,整個系統無法使用。有沒有一些解決方法,或者它可以修復Spree的某個新版本?
我正在使用spree 2.0.3。
當我有很多產品(3000和22000變種)時,添加新的庫存地點需要幾個小時,因爲Spree正在爲每個變種創建庫存項目。如何優化在Spree中添加新的庫存位置?
在此期間變體表被鎖定,整個系統無法使用。有沒有一些解決方法,或者它可以修復Spree的某個新版本?
我正在使用spree 2.0.3。
我面臨同樣的問題,使用大於400K的變體,無法添加新的庫存位置。所以,我在ruby中創建一個腳本,併爲所有變體寫入一個插入語句到一個sql文件。你必須在不propagate_all_variants創建庫存位置
# lib/create_stock_items.rb
begin
file = File.open("stock_items.sql", "w")
rescue IOError => e
puts e
end
file.write("INSERT INTO spree_stock_items (stock_location_id, variant_id, backorderable) VALUES \n")
variants = Spree::Variant.all.pluck(:id)
lenght = variants.count
variants.each_with_index do |variant, index|
if index+1 == lenght
file.write("(#{stock_location_id}, #{variant}, false); \n")
else
file.write("(#{stock_location_id}, #{variant}, false), \n")
end
end
file.close
然後運行捆綁高管軌道亞軍的lib/create_stock_items.rb -e生產。這將在Rails根路徑中創建一個stock_items.sql文件,並最終直接在BD(rails dbconsole)上加載該sql。
我知道這是一個小黑客,但對我來說非常快速的解決方案。
不幸的是,創建與產品/變體/分類羣相關的庫存位置有幾個嚴重的性能問題。我用這個拉取請求改善了其中的一個,https://github.com/spree/spree/pull/4636然而,還有很多更多的優化可以做到。我不知道現在有什麼方法可以在沒有一些駭客(如禁用關聯觸摸)的情況下快速創建,這是一個直接創建事物的巨大SQL語句,或者花費一些時間來改善Spree的性能。 – gmacdougall