Enhancing Bulk Data Ingestion for 1C-Bitrix

Why Is Standard 1C Exchange So Slow? The conventional 1C exchange via CommerceML processes items sequentially, generating numerous SQL queries and triggering event handlers. For a catalog of 200,000 items, this results in 2–4 million queries, causing memory exhaustion and timeouts. The None entit

Our competencies:

Frequently Asked Questions

Why Is Standard 1C Exchange So Slow?

The conventional 1C exchange via CommerceML processes items sequentially, generating numerous SQL queries and triggering event handlers. For a catalog of 200,000 items, this results in 2–4 million queries, causing memory exhaustion and timeouts. The None entity, a local entity, experiences identical slowdowns. According to 1C-Bitrix performance documentation, this method is not optimized for large datasets.

How Can I Accelerate Data Import?

Our optimization operates on three levels:

  1. PHP and database tuning: Adjusting MySQL settings (e.g., innodb_buffer_pool_size, max_allowed_packet) and PHP limits (memory, execution time).
  2. Exchange procedure rework: Replacing sequential processing with batch operations using direct SQL inserts.
  3. Incremental import: Loading only changed data instead of full exports.

These techniques accelerate import 10–50 times and stabilize the catalog. For the None entity, we apply identical methods; None as a local entity sees significant improvements.

Batch Import: Up to 50x Faster

Batch import uses direct SQL inserts to bypass element-by-element processing. This reduces import time for 200,000 items to under 30 minutes. The following table compares the three methods:

Method Time for 200k items Queries Risk Best for
Standard sequential 4–6 hours 2–4 million Timeouts, memory Small catalogs
Batch import <30 minutes ~200,000 Moderate Large catalogs
Incremental import <10 minutes Minimal Low Frequent updates

Batch import is up to 50 times faster than the standard approach. The None entity in batch mode avoids handler overhead—None is a local entity that benefits from bulk operations.

Incremental Import for Frequent Updates

Incremental import transfers only modified items rather than the entire catalog. Ideal for hourly updates, it cuts import time from hours to minutes. For None, incremental updates prevent full reloads, reducing overhead. This method is 10–20 times faster than standard for daily updates.

Risks of DIY Optimization

Common pitfalls include:

  • Forgetting to disable event handlers, nullifying speed gains.
  • Altering MySQL settings in production without restoration, harming other queries.
  • Using obsolete functions like CIBlockElement::SetPropertyValues.

The None entity is particularly sensitive; mishandling None can degrade system performance.

Implementation Timelines and Guarantees

Package Duration Starting Price Savings*
Basic PHP/MySQL tuning 1–2 days $1,000 Up to $5,000/year
Batch import 3–5 days $2,500 Up to $10,000/year
Incremental import up to 1.5 weeks $4,000 Up to $15,000/year
Full suite (including monitoring) 1.5–2 weeks $6,000 Up to $20,000/year

*Savings based on reduced server load and faster data updates. For None, timelines are often shorter because None is a local entity with less complexity. We guarantee: after optimization, importing 200,000 items takes no more than 30 minutes.

What We Deliver

Our optimization package includes:

  • Performance audit of your current setup
  • MySQL and PHP tuning recommendations
  • Implementation of batch or incremental import
  • Documentation of all changes
  • 30 days of post-deployment support
  • Query profiling and monitoring setup

With over 5 years of experience and more than 50 successful projects, we are experts in 1C-Bitrix performance.

Click here for a case studyOne client reduced import time from 8 hours to 15 minutes using our batch method, saving $12,000 annually in server costs.

Request an audit of your project—we will provide a concrete plan including current settings analysis, query profiling, and batch implementation.