ปรับปรุงประสิทธิภาพ INSERT ต่อวินาทีของ SQLite
การเพิ่มประสิทธิภาพของ SQLite นั้นยุ่งยาก ประสิทธิภาพการแทรกจำนวนมากของแอพพลิเคชั่น C สามารถเปลี่ยนจาก 85 เม็ดต่อวินาทีไปเป็นมากกว่า 96,000 เม็ดต่อวินาที! พื้นหลัง:เรากำลังใช้ SQLite เป็นส่วนหนึ่งของแอปพลิเคชันเดสก์ท็อป เรามีข้อมูลการกำหนดค่าจำนวนมากที่เก็บไว้ในไฟล์ XML ที่มีการแยกวิเคราะห์และโหลดลงในฐานข้อมูล SQLite เพื่อการประมวลผลเพิ่มเติมเมื่อเริ่มต้นแอปพลิเคชัน SQLite นั้นเหมาะสำหรับสถานการณ์นี้เพราะมันรวดเร็วไม่ต้องมีการกำหนดค่าพิเศษและฐานข้อมูลจะถูกเก็บไว้ในดิสก์เป็นไฟล์เดียว เหตุผล: ตอนแรกฉันรู้สึกผิดหวังกับการแสดงที่ฉันได้เห็น ปรากฎว่าประสิทธิภาพของ SQLite อาจแตกต่างกันอย่างมีนัยสำคัญ (ทั้งสำหรับการแทรกจำนวนมากและการเลือก) ขึ้นอยู่กับวิธีการกำหนดค่าฐานข้อมูลและวิธีการที่คุณใช้ API ไม่ใช่เรื่องง่ายที่จะคิดออกว่าตัวเลือกและเทคนิคทั้งหมดเป็นอย่างไรดังนั้นฉันจึงคิดว่าควรสร้างรายการวิกิชุมชนนี้เพื่อแบ่งปันผลลัพธ์กับผู้อ่าน Stack Overflow เพื่อช่วยคนอื่น ๆ ในการตรวจสอบปัญหาเดียวกัน การทดลอง:แทนที่จะพูดถึงเคล็ดลับประสิทธิภาพในแง่ทั่วไป (เช่น"ใช้ธุรกรรม!" ) ฉันคิดว่ามันดีที่สุดในการเขียนรหัส C และวัดผลกระทบของตัวเลือกต่างๆ เราจะเริ่มด้วยข้อมูลง่ายๆ: ไฟล์ข้อความที่คั่นด้วยแท็บ TAB ขนาด 28 MB (ประมาณ 865,000 บันทึก) ของตารางการขนส่งที่สมบูรณ์สำหรับเมืองโตรอนโต …