With Magento's new multi-source inventory system, various new tables have been introduced into the database.

inventory_source_item contains the machine name of the source, SKU, quantity, and the status.

inventory_stock_x is a table that exists for each source, containing the SKU, quantity, and if it's salable.

Why does the second table exist, when the first could store all of that information?

1 Answer 1



Contains inventory levels for each source. A source is a physical location (like a warehouse).


Contains aggregated levels for each stock. A stock can consists of one or many sources.

For example, you can have 3 warehouses (sources) in GB and one stock called "Great Britain" which would sum up all your warehouses in the inventory_stock_x table.

  • Thanks, Olivier. I think I knew that in the back of my mind, but after trying to understand the abstracted DB tables I lost sight of the big picture.
    – Geat
    Dec 16, 2019 at 19:27
  • from where I can disable inventory_source_item zero entry. Jul 28, 2020 at 11:52
  • @YoYoRoshan what do you mean by "disable"? If you mean to delete, well this can be done by a simple SQL. If you mean to disable its usage by Magento, you will need to disable the "Inventory" module or write a plugin to disable its usage and overwrite it with what you want.
    – Olivier
    Jul 28, 2020 at 13:30
  • @Olivier Thanks for the quick reply, I mean to remove all zero entries from inventory_source_item without SQL. Jul 28, 2020 at 15:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.