บทความนี้จะแนะนำปัญหาเชิงปฏิบัติที่ผู้ดูแลระบบมักเผชิญในระหว่างกระบวนการเตรียมใช้งานฐานข้อมูล - วิธีนำเข้าข้อมูลจำนวนมากเข้าสู่ระบบฐานข้อมูล ในระหว่างกระบวนการเตรียมใช้งานฐานข้อมูล ปัญหาในทางปฏิบัติที่ผู้ดูแลระบบต้องเผชิญคือวิธีการนำเข้าข้อมูลจำนวนมากเข้าสู่ระบบฐานข้อมูล เครื่องมือนำเข้าและส่งออกข้อมูลความจุขนาดใหญ่บางอย่างมีอยู่ในฐานข้อมูล SQL Server เพื่อให้ผู้ดูแลระบบฐานข้อมูลใช้ ตัวอย่างเช่น ผู้ดูแลระบบสามารถใช้เครื่องมือยูทิลิตี้ bcp เพื่อส่งออกข้อมูลในปริมาณมาก และนำเข้าข้อมูลในปริมาณมาก และสร้างไฟล์ที่จัดรูปแบบได้ ตัวอย่างเช่น สามารถใช้คำสั่งการแทรกจำนวนมากเพื่อนำเข้าข้อมูลความจุสูงได้โดยตรงจากไฟล์ข้อมูลไปยังตารางฐานข้อมูลหรือมุมมองที่ไม่แบ่งพาร์ติชัน เป็นต้น
แม้ว่ายูทิลิตี้เหล่านี้จะมีให้ในฐานข้อมูล SQL Server อย่างไรก็ตามผู้ดูแลระบบยังคงต้องระมัดระวังในการทำงานนี้ในการทำงานจริง โดยเฉพาะอย่างยิ่ง ในระหว่างกระบวนการนำเข้าและส่งออกข้อมูลที่มีความจุสูง คุณจะต้องใส่ใจกับประเด็นต่อไปนี้
1. พยายามใช้เครื่องมือที่ระบบจัดให้เพื่อนำเข้าและส่งออกข้อมูลความจุสูง
เครื่องมือเชิงปฏิบัติหลายอย่างที่ผู้เขียนกล่าวถึงข้างต้นมีคุณสมบัติทั่วไป กล่าวคือ เครื่องมือเหล่านี้จะดำเนินการปรับแต่งข้อมูลความจุขนาดใหญ่ให้เหมาะสมในระหว่างกระบวนการนำเข้า ตัวอย่างเช่น จะทำให้รูปแบบของข้อมูลบางอย่างเป็นมาตรฐาน ประหยัดเวลาในการนำเข้าและส่งออก เป็นต้น อย่างไรก็ตาม เมื่อใช้เครื่องมือเหล่านี้ มีความแตกต่างอย่างหนึ่งจากเครื่องมือนำเข้าและส่งออกข้อมูลทั่วไปอื่นๆ นั่นคือ การดำเนินการนำเข้าที่มีความจุขนาดใหญ่ไม่รองรับการนำเข้าข้อมูลในไฟล์ที่คั่นด้วยเครื่องหมายจุลภาค ซึ่งมักเรียกว่าไฟล์ข้อความ แม้ว่าผู้ดูแลระบบยังสามารถใช้เครื่องมืออื่นเพื่อนำเข้าข้อมูลความจุสูงในรูปแบบไฟล์ได้ในขณะนี้ แต่โดยทั่วไปฉันไม่แนะนำสิ่งนี้ เนื่องจากเครื่องมืออื่นๆ ไม่รองรับฟังก์ชันการปรับให้เหมาะสมในระหว่างกระบวนการนำเข้า ด้วยเหตุนี้ ผู้เขียนจึงแนะนำให้ใช้เครื่องมืออื่นๆ เช่น ACCESS และเครื่องมือระดับกลางอื่นๆ เพื่อแปลงข้อมูลในไฟล์ข้อความเป็นรูปแบบตารางธรรมดาก่อน จากนั้นจึงใช้เครื่องมือด้านบนเพื่อนำเข้าข้อมูลเข้าสู่ระบบ แม้ว่าสิ่งนี้จะเพิ่มภาระงาน แต่ก็สามารถรับประกันคุณภาพของข้อมูลความจุสูงได้ ด้วยเหตุนี้ ในการทำงานจริงของฉัน หากผู้ใช้ประสบปัญหาประเภทนี้ ฉันขอแนะนำอย่างยิ่งให้พวกเขาใช้เครื่องมือที่ระบบจัดเตรียมไว้เพื่อนำเข้าและส่งออกข้อมูลความจุสูง
นอกจากนี้ การใช้ไฟล์ที่จัดรูปแบบเพื่อปรับปรุงมาตรฐานของข้อมูลความจุขนาดใหญ่ก็เป็นทางเลือกที่ดีเช่นกัน เครื่องมือนำเข้าและส่งออกความจุขนาดใหญ่หลายรายการที่กล่าวถึงข้างต้นรองรับการใช้ไฟล์รูปแบบพิเศษเพื่อจัดเก็บข้อมูลรูปแบบของแต่ละฟิลด์ในไฟล์ข้อมูลต้นฉบับ ไฟล์รูปแบบยังสามารถมีข้อมูลเกี่ยวกับตารางฐานข้อมูลที่เกี่ยวข้องได้ ไฟล์รูปแบบสามารถใช้เพื่อให้ข้อมูลการจัดรูปแบบทั้งหมดที่จำเป็นในการส่งออกข้อมูลจำนวนมากและนำเข้าข้อมูลจำนวนมากไปยังอินสแตนซ์ฐานข้อมูล ในแง่ของคนทั่วไป ไฟล์รูปแบบให้วิธีที่ยืดหยุ่นในการตีความรูปแบบของข้อมูลในไฟล์ข้อมูลระหว่างการนำเข้า และเพื่อจัดรูปแบบข้อมูลในไฟล์ข้อมูลระหว่างการส่งออก ความยืดหยุ่นนี้ช่วยลดความจำเป็นในการเขียนโค้ดพิเศษเพื่อตีความข้อมูลหรือจัดรูปแบบข้อมูลใหม่เพื่อให้ตรงกับความต้องการพิเศษของฐานข้อมูลหรือแอปพลิเคชันภายนอก หากใช้ไฟล์ที่จัดรูปแบบอย่างยืดหยุ่น ผู้ใช้สามารถส่งออกหรือนำเข้าข้อมูลความจุสูงในรูปแบบที่ต้องการได้โดยตรง โดยไม่ต้องปรับรูปแบบเพิ่มเติมในภายหลัง
2. เลือกโหมดการดำเนินการบันทึกฐานข้อมูลที่เหมาะสม
ดังที่ทุกคนทราบดีว่าการเปลี่ยนแปลงใด ๆ ที่ทำโดยผู้ใช้ในฐานข้อมูลจะถูกบันทึกไว้ในบันทึกที่เกี่ยวข้อง การนำเข้าและส่งออกข้อมูลจำนวนมากก็ไม่มีข้อยกเว้น อย่างไรก็ตาม เนื่องจากข้อมูลความจุขนาดใหญ่มีขนาดค่อนข้างใหญ่ จึงจะใช้ฟังก์ชันบันทึกธุรกรรมที่ค่อนข้างใหญ่ ด้วยเหตุนี้ ผู้เขียนแนะนำว่าก่อนที่ผู้ใช้จะนำเข้าข้อมูลที่มีความจุสูง วิธีที่ดีที่สุดคือเลือกโหมดการดำเนินการบันทึกฐานข้อมูลที่เหมาะสม แนวทางของผู้เขียนคือหากผู้ใช้ต้องการนำเข้าข้อมูลที่มีความจุสูง วิธีที่ดีที่สุดคือเลือกโหมดการกู้คืนบันทึกที่มีความจุสูง รอจนกว่างานนำเข้าจะเสร็จสิ้น จากนั้นกลับสู่โหมดดั้งเดิม
สาเหตุหลักมาจากในโหมดบันทึกความจุสูง การรองรับงานนำเข้าข้อมูลความจุสูงค่อนข้างดี เมื่อเปรียบเทียบกับโมเดลการกู้คืนที่บันทึกไว้อื่นๆ (เช่น โมเดลการกู้คืนแบบเต็ม) โมเดลการกู้คืนที่บันทึกไว้ในจำนวนมากจะบันทึกการดำเนินการจำนวนมากเพียงเล็กน้อยเท่านั้น ด้วยเหตุนี้ โมเดลการกู้คืนการดำเนินการบันทึกที่มีความจุสูงจึงปกป้องการดำเนินการจำนวนมากจากความล้มเหลวของฮาร์ดแวร์ ให้ประสิทธิภาพที่ดีขึ้น และใช้พื้นที่บันทึกน้อยที่สุด ดังนั้น การใช้การกู้คืนที่บันทึกไว้จำนวนมากจะช่วยป้องกันไม่ให้บันทึกธุรกรรมมีพื้นที่ไม่เพียงพอ เนื่องจากการกู้คืนที่บันทึกไว้จำนวนมากไม่ได้แทรกบรรทัดบันทึก โหมดการดำเนินการบันทึกจำนวนมากนี้เหมาะมากสำหรับฐานข้อมูลที่ใช้โมเดลการกู้คืนแบบเต็ม โมเดลการกู้คืนที่บันทึกจำนวนมากมีประโยชน์เมื่อดำเนินการจำนวนมากบนตารางที่ไม่มีดัชนี
อย่างไรก็ตาม โหมดการดำเนินการบันทึกความจุขนาดใหญ่ก็มีความเสี่ยงเช่นกัน โมเดลการกู้คืน เช่น บันทึกจำนวนมากจะเพิ่มความเสี่ยงต่อการสูญหายของข้อมูลสำหรับการดำเนินการคัดลอกจำนวนมากเหล่านี้ เนื่องจากโหมดการทำงานที่บันทึกจำนวนมากจะป้องกันไม่ให้ระบบฐานข้อมูลบันทึกการเปลี่ยนแปลงที่ทำกับแต่ละธุรกรรมทีละรายการ หากการสำรองข้อมูลบันทึกประกอบด้วยการดำเนินการบันทึกจำนวนมาก คุณจะไม่สามารถกู้คืนไปยังช่วงเวลาหนึ่งในการสำรองข้อมูลบันทึกนั้นได้ คุณสามารถกู้คืนได้เฉพาะการสำรองข้อมูลบันทึกทั้งหมดเท่านั้น นอกจากนี้ ในรูปแบบการกู้คืนที่บันทึกจำนวนมาก หากการสำรองข้อมูลบันทึกครอบคลุมการดำเนินการจำนวนมากใดๆ การสำรองข้อมูลบันทึกจะมีบันทึกบันทึกและหน้าข้อมูลที่เปลี่ยนแปลงโดยการดำเนินการจำนวนมาก นี่เป็นสิ่งสำคัญสำหรับการบันทึกผลลัพธ์ของการดำเนินการบันทึกจำนวนมาก พื้นที่ข้อมูลที่ผสานสามารถทำให้การสำรองข้อมูลบันทึกมีขนาดใหญ่มาก นอกจากนี้ การสำรองข้อมูลบันทึกจำเป็นต้องเข้าถึงไฟล์ข้อมูลที่มีธุรกรรมบันทึกจำนวนมาก หากไม่สามารถเข้าถึงไฟล์ฐานข้อมูลที่ได้รับผลกระทบ บันทึกธุรกรรมจะไม่ได้รับการสำรองข้อมูล และการดำเนินการทั้งหมดที่กระทำในบันทึกนี้จะหายไป ดังนั้น โหมดการสำรองข้อมูลบันทึกความจุขนาดใหญ่จึงไม่ใช่โหมดบันทึกที่ปลอดภัย
3. พิจารณาว่าคุณจำเป็นต้องลบดัชนีของตารางชั่วคราวก่อนหรือไม่
ดัชนีเป็นไฟล์พิเศษและบทบาทในฐานข้อมูลมีความสำคัญมาก พูดง่ายๆ ก็คือ หากเปรียบเทียบฐานข้อมูลกับหนังสือ ดัชนีก็จะเหมือนกับสารบัญของหนังสือ ดัชนีประกอบด้วยตัวชี้อ้างอิงไปยังบันทึกทั้งหมดในตารางข้อมูล ไม่ต้องสงสัยเลยว่าดัชนีสามารถปรับปรุงประสิทธิภาพของฐานข้อมูลได้ แต่การจัดทำดัชนีไม่สามารถส่งผลดีต่อทุกโอกาสได้ ในกรณีพิเศษบางประการ จะลดประสิทธิภาพของการดำเนินการบางอย่าง เช่น การนำเข้าข้อมูลที่มีความจุสูง
ดัชนีสามารถเพิ่มความเร็วในการดำเนินการดึงข้อมูลได้ แต่สามารถทำให้การดำเนินการแก้ไขข้อมูลช้าลงได้ เนื่องจากทุกครั้งที่มีการแก้ไขหรือแทรกบันทึกข้อมูล ดัชนีจะต้องถูกรีเฟรช กล่าวอีกนัยหนึ่ง หากมีการแทรกหนึ่งล้านบันทึก ดัชนีจะต้องรีเฟรชหนึ่งล้านครั้ง จะเห็นได้ว่าเมื่อมีการนำเข้าข้อมูลที่มีความจุสูง ดัชนีจะใช้ทรัพยากรฐานข้อมูลจำนวนมาก ส่งผลให้ประสิทธิภาพของฐานข้อมูลลดลง หากมีดัชนีในตารางปลายทาง จะไม่เพียงส่งผลต่อความเร็วของการนำเข้าข้อมูลปริมาณมากไปยังฐานข้อมูล แต่ยังลดประสิทธิภาพการเข้าถึงฐานข้อมูลปกติของผู้ใช้รายอื่นด้วย
ด้วยเหตุนี้ ข้อเสนอแนะของผู้เขียนคือหากไม่มีข้อมูลในตารางที่จะนำเข้ามากนัก วิธีที่ดีที่สุดคือลบดัชนีก่อนเพื่อปรับปรุงประสิทธิภาพของการนำเข้าข้อมูลที่มีความจุสูง เปิดใช้งานการสร้างดัชนีอีกครั้งหลังจากการนำเข้า อย่างไรก็ตาม หากมีข้อมูลในตารางจำนวนมากที่จำเป็นต้องนำเข้า และข้อมูลที่ต้องนำเข้าอาจเหมือนหรือน้อยกว่าข้อมูลที่มีอยู่ ก็ไม่จำเป็นต้องลบดัชนี การลบดัชนีในเวลานี้จะมีผลตรงกันข้าม เนื่องจากเวลาที่ใช้สำหรับระบบฐานข้อมูลในการสร้างดัชนีใหม่อาจนานกว่าเวลาที่บันทึกไว้ระหว่างการดำเนินการนำเข้าจำนวนมาก ในขณะนี้ ผู้ดูแลระบบจะสูญเสียมากกว่ากำไรโดยการลบดัชนีของตารางเป้าหมาย
4. ดำเนินการสำรองฐานข้อมูลทันทีหลังจากการนำเข้าข้อมูล
เช่นเดียวกับการสร้างออบเจ็กต์ฐานข้อมูล หลังจากนำเข้าข้อมูลความจุสูงเข้าสู่ระบบฐานข้อมูลแล้ว ผู้ดูแลระบบจะต้องสำรองข้อมูลฐานข้อมูลที่มีอยู่ให้ทันเวลา เนื่องจากความช่วยเหลืออย่างทันท่วงทีของเครื่องมือนำเข้าที่มีความจุสูงของระบบ งานนำเข้าข้อมูลนี้จึงยังคงน่าเบื่อและใช้เวลานาน ด้วยเหตุนี้ หลังจากที่นำเข้าข้อมูลความจุขนาดใหญ่เข้าสู่ระบบฐานข้อมูลเรียบร้อยแล้ว ผู้ดูแลระบบจะต้องสำรองฐานข้อมูลในเวลาที่เหมาะสม สิ่งที่ผู้เขียนต้องการเตือนทุกคนในที่นี้คือวิธีการสำรองข้อมูลมักจะแตกต่างกันในโหมดบันทึกการทำงานที่แตกต่างกัน
หลังจากนำเข้าข้อมูลความจุสูงแล้ว ผู้ดูแลระบบจำเป็นต้องสำรองฐานข้อมูล คำแนะนำของผู้เขียนคือ หากผู้ดูแลระบบใช้โมเดลการกู้คืนบันทึกอย่างง่ายในขณะนั้น ผู้ดูแลระบบควรทำการสำรองข้อมูลทั้งหมดหรือการสำรองข้อมูลส่วนต่างทันทีหลังจากการดำเนินการนำเข้าจำนวนมากเสร็จสิ้น (หากเวลาเอื้ออำนวย วิธีที่ดีที่สุดคือทำการสำรองข้อมูลทั้งหมด) . และหากผู้ดูแลระบบฐานข้อมูลใช้โมเดลการกู้คืนบันทึกความจุขนาดใหญ่หรือโมเดลการกู้คืนแบบเต็มในขณะนั้น หากมีเวลาไม่มากหรือกังวลว่าการสำรองข้อมูลแบบเต็มจะส่งผลต่อการเข้าถึงของผู้ใช้ในขณะนั้น ก็ให้ดำเนินการสำรองข้อมูลบันทึกเท่านั้น ก็เพียงพอแล้ว หากเซิร์ฟเวอร์ฐานข้อมูลไม่ได้กลายเป็นเซิร์ฟเวอร์ที่ใช้งานจริง (นั่นคือ ยังไม่มีผู้ใช้ใช้งาน) จะปลอดภัยกว่าหากสำรองข้อมูลฐานข้อมูลทั้งหมด
5. ข้อผิดพลาดทั่วไป
อาจมีข้อผิดพลาดที่พบบ่อยที่สุดสองประการในระหว่างการนำเข้าข้อมูลความจุสูง
ประการแรก รูปแบบของไฟล์ที่ให้มาไม่ถูกต้อง ตามที่กล่าวไว้ข้างต้น โดยปกติแล้วเครื่องมือนำเข้าจำนวนมากที่ฐานข้อมูลจัดเตรียมไว้ไม่รองรับไฟล์ข้อความ ผู้ดูแลระบบจำเป็นต้องดำเนินการแปลงก่อนหน้าเพื่อจุดประสงค์นี้ ประการที่สอง โปรดทราบว่าอักขระที่ซ่อนอยู่อาจทำให้เกิดปัญหาได้ ซอฟต์แวร์และโปรแกรมแก้ไขข้อความจำนวนมากแสดงอักขระที่ซ่อนอยู่ อักขระที่ซ่อนอยู่เหล่านี้มักจะอยู่ที่ส่วนท้ายของไฟล์ข้อมูล ในระหว่างการดำเนินการนำเข้าจำนวนมาก อักขระที่ซ่อนอยู่ในไฟล์ข้อมูลอาจทำให้เกิดปัญหาที่คาดเดาไม่ได้ เช่น ข้อผิดพลาดอักขระ null ที่ไม่คาดคิด เป็นต้น ข้อผิดพลาดนี้ง่ายต่อการหลีกเลี่ยง ตราบใดที่ผู้ดูแลระบบฐานข้อมูลค้นหาและลบอักขระที่ซ่อนอยู่ทั้งหมดก่อนที่จะนำเข้าข้อมูล ที่จริงแล้ว ปัญหานี้จะเกิดขึ้นไม่เพียงแต่ในระหว่างการนำเข้าข้อมูลความจุสูง แต่ยังเกิดขึ้นในระหว่างการนำเข้าข้อมูลจำนวนเล็กน้อยด้วย