คำถามติดแท็ก bulk

2
การปรับปรุงประสิทธิภาพการอัปเดตเป็นกลุ่มใน PostgreSQL
ใช้ PG 9.1 บน Ubuntu 12.04 ขณะนี้เราใช้เวลาถึง 24 ชั่วโมงในการเรียกใช้ชุดคำสั่ง UPDATE จำนวนมากบนฐานข้อมูลซึ่งเป็นรูปแบบ: UPDATE table SET field1 = constant1, field2 = constant2, ... WHERE id = constid (เราแค่เขียนทับฟิลด์ของวัตถุที่ระบุด้วย ID) ค่ามาจากแหล่งข้อมูลภายนอก (ยังไม่ได้อยู่ในฐานข้อมูลในตาราง) ตารางมีดัชนีไม่กี่ข้อและไม่มีข้อ จำกัด ของรหัสต่างประเทศ ไม่มีการกระทำใด ๆ จนกว่าจะสิ้นสุด ใช้เวลา 2 ชั่วโมงในการนำเข้าpg_dumpฐานข้อมูลทั้งหมด ดูเหมือนว่าพื้นฐานนี้เราควรตั้งเป้าหมายอย่างสมเหตุสมผล ขาดการผลิตโปรแกรมที่กำหนดเองซึ่งสร้างชุดข้อมูลสำหรับ PostgreSQL เพื่อนำเข้าอีกครั้งมีอะไรที่เราสามารถทำได้เพื่อให้ประสิทธิภาพการอัพเดทจำนวนมากใกล้เคียงกับการนำเข้าหรือไม่ (นี่คือพื้นที่ที่เราเชื่อว่าต้นไม้ที่ผสานโครงสร้างบันทึกการจัดการดี แต่เราสงสัยว่ามีอะไรที่เราสามารถทำได้ภายใน PostgreSQL) ความคิดบางอย่าง: วางดัชนีที่ไม่ใช่ ID ทั้งหมดและสร้างใหม่ในภายหลังหรือไม่ การเพิ่ม …

2
วิธีที่มีประสิทธิภาพที่สุดในการลบแถวจำนวนมากออกจาก postgres
ฉันสงสัยว่าวิธีที่มีประสิทธิภาพมากที่สุดคือการลบจำนวนแถวขนาดใหญ่ออกจาก PostgreSQL กระบวนการนี้จะเป็นส่วนหนึ่งของงานที่เกิดซ้ำทุกวันเพื่อนำเข้าข้อมูลจำนวนมาก (ส่วนที่แทรก + ลบ) ลงในตาราง อาจมีหลายพันแถวที่อาจลบเป็นล้านแถว ฉันมีไฟล์ของคีย์หลักหนึ่งรายการต่อบรรทัด ตัวเลือกสองตัวที่ฉันคิดว่ามีอยู่ตามลำดับด้านล่าง แต่ฉันไม่ทราบ / เข้าใจ internals ของ PostgreSQL มากพอที่จะทำการตัดสินใจอย่างชาญฉลาดซึ่งจะดีที่สุด ดำเนินการDELETEค้นหาสำหรับแต่ละแถวในไฟล์โดยใช้WHEREคีย์หลักอย่างง่าย(หรือจัดกลุ่มการลบเป็นกลุ่มnโดยใช้ส่วนIN()คำสั่ง) นำเข้าคีย์หลักเข้าสู่ตารางชั่วคราวโดยใช้COPYคำสั่งแล้วลบออกจากตารางหลักโดยใช้การเข้าร่วม ข้อเสนอแนะใด ๆ จะได้รับการชื่นชมมาก!

3
ทำไม 'โหลดข้อมูล INFILE' เร็วกว่าคำสั่ง INSERT ปกติ?
ฉันได้อ่านบทความที่กล่าวถึงเราสามารถบรรลุ60,000 แทรกต่อวินาทีโดยใช้LOAD DATA IN FILEคำสั่งที่อ่านจากไฟล์ csv และแทรกข้อมูลลงในฐานข้อมูล ทำไมมันควรแตกต่างจากเม็ดมีดทั่วไป? แก้ไข: ฉันลดการเดินทางไป - กลับโดยเรียกเพียงINSERTคำสั่งเดียว: INSERT INTO tblname VALUES (NULL,2,'some text here0'),(NULL,2,'some text here1') ,(NULL,2,'some text here2'),(NULL,2,'some text here3') .....,(NULL,2,'some text here3000'); แล้วเรื่องนี้ล่ะ
22 mysql  import  bulk 

2
OracleBulkCopy ทำอะไรเป็นพิเศษโดยเฉพาะและฉันจะเพิ่มประสิทธิภาพได้อย่างไร
ในการสรุปข้อมูลเฉพาะ: เราจำเป็นต้องทำขั้นตอนประมาณ 5 ล้านแถวในฐานข้อมูลผู้จำหน่าย (Oracle) ทุกอย่างทำงานได้อย่างยอดเยี่ยมสำหรับแถวที่มีขนาด 500k โดยใช้OracleBulkCopy(ODP.NET) แต่เมื่อเราพยายามที่จะขยายขนาดสูงสุด 5M ประสิทธิภาพการทำงานจะเริ่มช้าลงเมื่อทำการรวบรวมข้อมูลเมื่อมันมาถึงเครื่องหมาย 1M จะช้าลงเรื่อย ๆ เมื่อโหลดแถวมากขึ้น หมดเวลาหลังจาก 3 ชั่วโมงหรือมากกว่านั้น ฉันสงสัยว่ามันเกี่ยวข้องกับคีย์หลักบนโต๊ะ แต่ฉันได้สืบค้นฟอรัม Oracle และ Stack Overflow เพื่อดูข้อมูลและสิ่งที่ฉันอ่านขัดแย้งมาก (เช่นกันโพสต์จำนวนมากดูเหมือนจะขัดแย้งกัน ) . ฉันหวังว่าใครบางคนสามารถตั้งค่าการบันทึกตรงคำถามที่เกี่ยวข้องอย่างใกล้ชิดเกี่ยวกับกระบวนการ: ที่ไม่OracleBulkCopyระดับธรรมดาหรือใช้โดยตรงเส้นทางโหลด? มีวิธีที่ฉันสามารถยืนยันสิ่งนี้ไม่ทางใดก็ทางหนึ่งได้หรือไม่? สมมติว่ามันไม่ใช้โดยตรงเส้นทางโหลด: มันเป็นความจริงว่า Oracle จะตั้งค่าดัชนีทั้งหมดจะใช้ไม่ได้ในระหว่างการโหลดและทำให้พวกเขากลับมาออนไลน์หลังจากนั้น? ฉันได้อ่านแถลงการณ์หลายฉบับเกี่ยวกับเอฟเฟกต์นี้ แต่ไม่สามารถยืนยันได้อีก ถ้า # 2 เป็นจริงแล้วมันควรสร้างความแตกต่างใด ๆ ที่ดัชนีอยู่บนตารางก่อนที่ฉันจะเริ่มต้นการดำเนินการคัดลอกจำนวนมาก? ถ้าเป็นเช่นนั้นทำไม เกี่ยวข้องกับ # 3 มีความแตกต่างในทางปฏิบัติโดยทั่วไประหว่างการโหลดจำนวนมากกับดัชนีที่ใช้ไม่ได้กับการลดลงดัชนีจริงก่อนที่จะโหลดและสร้างใหม่ในภายหลังหรือไม่ หาก # …
14 oracle  bulk 

3
สร้างตารางจากไฟล์ CSV พร้อมส่วนหัว
ฉันกำลังหาวิธีในการสร้างตาราง MySQL ใหม่โดยอิงจากเนื้อหาของ CSV ที่ระบุเท่านั้น ไฟล์ CSV ที่ฉันจะใช้มีคุณสมบัติดังต่อไปนี้ "|" คั่น แถวแรกระบุชื่อคอลัมน์ (ส่วนหัว) เช่นกัน "|" คั่น ชื่อคอลัมน์และคำสั่งซื้อไม่ได้รับการแก้ไข จำนวนคอลัมน์ไม่คงที่ ไฟล์มีขนาดใหญ่ (1 ล้านแถว / 50 คอลัมน์) ใน Excel ทั้งหมดนี้ค่อนข้างง่าย แต่ด้วย MySQL มันดูเหมือนจะไม่ (ไม่มีโชคกับ Google) ข้อเสนอแนะใด ๆ เกี่ยวกับสิ่งที่ฉันควรจะดู?
12 mysql  csv  import  bulk 

1
วิธีที่ดีที่สุดในการนำเข้าข้อมูลจำนวนมากอีกครั้งด้วยเวลาหยุดทำงานน้อยที่สุด
ฉันต้องการนำเข้าประมาณ 500,000 รายการที่มีข้อมูลการค้นหา IP (การอ้างอิงแบบอ่านอย่างเดียว) ประมาณสัปดาห์ละครั้ง (คอลัมน์ int / bigint เพียงสามครั้ง) ฉันไม่ต้องการกังวลเกี่ยวกับการรวมข้อมูลกับตารางที่มีอยู่ฉันต้องการล้างข้อมูลเก่าและนำเข้าใหม่ แบบสอบถามที่ใช้งานได้ดีในการเรียกใช้ข้อมูลจะยังคงทำงานต่อไป (เราไม่ได้รับสิ่งเหล่านี้จำนวนมากและเป็นที่ยอมรับสำหรับพวกเขาที่จะทำงานช้าลงเล็กน้อยในขณะที่การนำเข้าเกิดขึ้น แต่ต้องเพิ่มขึ้นทุกวันตลอด 24 ชั่วโมง หมดเวลา "ไม่ใช่ตัวเลือก) สิ่งที่พยายามจนถึงตอนนี้ SSIS: ฉันได้สร้างแพ็คเกจ SSIS ที่ตัดทอนตารางและการนำเข้าออก - ใช้เวลาประมาณ 30 วินาทีในการเรียกใช้ (ยาวเกินไปจริง ๆ ) ตารางชั่วคราว: การนำเข้าสู่ตารางชั่วคราวการตัดและคัดลอกข้ามนั้นใช้เวลาประมาณ 30 วินาที BCP: การนำเข้าจำนวนมากก็ค่อนข้างช้าเกินไป (ด้วยเหตุผลบางอย่างมันช้ากว่า SSIS (แม้ว่าจะไม่มีดัชนีที่จะรักษาไว้) - ฉันคิดว่ามันเป็นเรื่องเกี่ยวกับการทำธุรกรรม char-> int / bigint: / โต๊ะกระจก ดังนั้นในขณะนี้ฉันสงสัยเกี่ยวกับการอ่านตารางผ่านมุมมองนำเข้าข้อมูลลงในตารางกระจกและเปลี่ยนมุมมองให้ชี้ไปที่ตารางนี้ ... …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.