استخدم مسار التحميل الجماعي الأصلي (native bulk-load) لقاعدة البيانات (COPY في Postgres، في MySQL)، وقسّم الملف إلى قطع تُحمَّل في بفهارس وقيود ، ثم أعِد بناء الفهارس مرّة واحدة وادمج — واجعل المهمّة كلها كي يستأنف الانهيار دون تكرار الصفوف.
استخدم مسار التحميل الجماعي الأصلي (native bulk-load) لقاعدة البيانات (COPY في Postgres، في MySQL)، وقسّم الملف إلى قطع تُحمَّل في بفهارس وقيود ، ثم أعِد بناء الفهارس مرّة واحدة وادمج — واجعل المهمّة كلها كي يستأنف الانهيار دون تكرار الصفوف.
LOAD DATA100M-row CSV
│ split by byte offset
▼
[chunk 1] [chunk 2] ... [chunk N] N parallel workers
│ │ │
└──── COPY / LOAD DATA (no indexes) ────▶ staging_table (UNLOGGED)
│
rebuild indexes + validate
│
INSERT ... SELECT (upsert) into target
INSERT ساذج لكل صفّ يدفع جولة ذهاب وإياب، وتحليلاً (parse)، وكتابة WAL/redo، وتحديث فهرس مئة مليون مرة. حتى بمعدّل 1 مللي ثانية لكلٍّ، هذا أكثر من يوم. المسارات الجماعية تنتصر بتوزيع كل هذا: COPY يدفّق الصفوف في رسالة بروتوكول واحدة، ويجمّع WAL على دفعات، ويتخطّى التخطيط لكل جملة. على عتاد حقيقي، COPY واحد يعمل بمعدّل 100 ألف إلى 500 ألف صفّ/ثانية مقابل بضعة آلاف لـ INSERT.
UNLOGGED في Postgres يتخطّى WAL كلياً)، لا مباشرة في الجدول الحيّ. هذا يعزل التحميل عن القرّاء ويتيح التحقّق قبل النشر.CREATE INDEX مرّة واحدة — بناء فهرس بالجملة (مفروزاً) أرخص بكثير من 100 مليون تحديث تدريجي.COPY. الـ throughput يتوسّع مع I/O والـ CPU حتى تُشبِع القرص أو WAL. طابِق N مع الأنوية/IOPS لا "أكبر عدد ممكن".INSERT ... ON CONFLICT DO NOTHING/UPDATE (upsert) كي لا تُدرِج إعادة التشغيل مرتين.يتحقّق المُحاور مما إذا كنت تعرف أن المسار الجماعي موجود ولماذا هو أسرع بمراتب — لا صيغة COPY. الجيد: "استخدم COPY". الرائع: "COPY في جدول انتظار UNLOGGED، فهارس مُسقَطة، قطع متوازية، إعادة بناء بعدها، upsert للنشر، قابل للاستئناف بمعرّف القطعة." الفخّ الكلاسيكي هو حلقات INSERT (أو saveAll في ORM) والمفاجأة أنها تستغرق ساعات؛ والفخّ الثاني هو التحميل مباشرة في الجدول الحيّ وحجب الإنتاج.
maintenance_work_mem/مساحة مؤقتة؛ بناء فهرس لـ 100 مليون صفّ قد يفيض إلى القرص.مكتبة من أسئلة مقابلات تقنية المعلومات مع إجابات مفصّلة — من المبتدئ إلى المتقدم.
تبرع