ปิดใช้งานการบันทึกในบางตาราง


9

ฉันใช้ SQL Server 2005 ฉันมีสองตารางที่มีข้อมูลรวม ข้อมูลกำลังได้รับการปรับปรุงอย่างต่อเนื่องสร้างข้อมูลบันทึกเกือบ 5GB ต่อวัน (นั่นใหญ่กว่าฐานข้อมูลทั้งหมด!) ฉันต้องการปิดการใช้งานการบันทึกในตารางเหล่านี้เนื่องจากการย้อนกลับไม่จำเป็นจริงๆ อย่างไรก็ตามฉันต้องการที่จะเข้าสู่ระบบในตารางอื่น ๆ ในฐานข้อมูล

เป็นไปได้หรือไม่ที่จะปิดการใช้งานการบันทึกในตารางบางอย่างภายในฐานข้อมูล? หากไม่มีฉันสามารถวางสองตารางในสคีมาเดียวกันจากนั้นปิดใช้งานการบันทึกในสคีมาหรือไม่ เป็นตัวเลือกเดียวที่จะย้ายสองตารางไปยังฐานข้อมูลแยกต่างหากและปิดการใช้งานการบันทึกที่นั่นหรือไม่

อัปเดต: ฉันเดาว่าฉันจะอธิบายว่าทำไมฉันจึงไม่จำเป็นต้องบันทึกกิจกรรมบนตารางเหล่านี้

ตารางทั้งสองนั้นเต็มไปด้วยข้อมูล GPS ดังนั้นจึงมีขนาดค่อนข้างใหญ่ ตารางแรกคือการจับตำแหน่งดิบจากหกตาราง Android ในเขตข้อมูล ข้อมูลใหม่จากแท็บเล็ตแต่ละเครื่องมาในทุก ๆ 5-10 วินาที ข้อมูลนั้นจะถูกรวมเป็น locationA, locationB, travelTime เป้าหมายคือเพื่อให้มีเวลาในการเดินทางสั้นที่สุดระหว่างสถานที่ทั้งหมดโดยอิงจากข้อมูลการขับขี่จริง ข้อมูลนี้ใช้สำหรับเมืองเล็ก ๆ เท่านั้นและแม่นยำถึงทศนิยมสี่ตำแหน่งเท่านั้นจึงสามารถจัดการได้ อย่างไรก็ตามเมื่อข้อมูลดิบใหม่เข้ามามีเวลาเดินทางช้าลงซึ่งจำเป็นต้องได้รับการอัปเดตและข้อมูลใหม่ที่ต้องถูกแทรก

เมื่อรวบรวมข้อมูลดิบแล้วข้อมูลจะถูกลบทิ้ง เราจะไม่ย้อนกลับไปสู่เวลาเดินทางอีกต่อไปดังนั้นนี่คือเหตุผลที่การย้อนกลับไม่สำคัญมากในตารางเหล่านี้


คำตอบ:


8
  • เป็นไปได้หรือไม่ที่จะปิดการใช้งานการบันทึกในตารางบางอย่างภายในฐานข้อมูล?
  • ฉันสามารถวางตารางสองตารางในสคีมาเดียวกันแล้วปิดใช้งานการบันทึกในสคีมาได้หรือไม่
  • เป็นตัวเลือกเดียวที่จะย้ายสองตารางไปยังฐานข้อมูลแยกต่างหากและปิดการใช้งานการบันทึกที่นั่นหรือไม่

การบันทึกการทำงานของผู้ใช้ไม่สามารถปิดการใช้งานได้

มีระดับของการดำเนินงานที่เรียกว่าเป็นการดำเนินงานน้อยที่สุดเข้าสู่ระบบที่เพียง แต่ช่วยให้การทำธุรกรรมที่จะรีดกลับ (เมื่อเทียบกับยังสามารถที่จะม้วนไปข้างหน้า ) อย่างไรก็ตามดูเหมือนว่าสิ่งที่คุณทำจะไม่ตรงตามเกณฑ์ที่จะนำไปใช้และฉันคิดว่านี่จะช่วยแก้ปัญหาได้

โซลูชัน SQL Server จะลงจอดตาราง staging ในฐานข้อมูลใหม่ในSIMPLEการกู้คืนแยกจากฐานข้อมูลผลลัพธ์การรวมซึ่งฉันถือว่าเป็นการFULLกู้คืน แม้ว่าจะไม่ลดปริมาณการบันทึก แต่ก็ไม่จำเป็นต้องสำรองข้อมูลบันทึกที่สร้างขึ้นโดยการโหลดข้อมูล (ดูโพสต์บล็อกของฉันที่นี่เกี่ยวกับการบันทึกและปัจจัยบางประการที่เกี่ยวข้องกับการเลือกรูปแบบการกู้คืนฐานข้อมูล)

การแยกตารางออกเป็นฐานข้อมูลอื่นจะให้ความยืดหยุ่นในการลงจอดไฟล์บันทึกบนระบบย่อย I / O ที่เร็วขึ้นซึ่งอาจเป็นอาร์เรย์ขนาดเล็กของไดรฟ์โซลิดสเตตที่เชื่อมต่อกับโลคัล

นอกจากนี้ให้พิจารณาว่า SQL Server เพียงอย่างเดียวอาจไม่ใช่วิธีที่ดีที่สุดในการแก้ปัญหา มีโซลูชัน RDBMS อื่น ๆ ที่เสนอความสามารถในการปิดใช้งานการบันทึกอย่างสมบูรณ์สำหรับตารางบางอย่าง ข้อมูลอาจถูกจัดฉากและรวมในระบบอื่นและผลลัพธ์ที่รวมเข้ากับฐานข้อมูล SQL Server ที่มีอยู่ซึ่งได้รับการป้องกันอย่างดีจากการบันทึกและสำรองข้อมูลเต็มรูปแบบ


@dangowans: ไม่เป็นไร
Jon Seigel

3

ไม่ไม่มีวิธีในการป้องกันการบันทึกใน SQL Server โดยไม่คำนึงถึงระดับสคีมาตารางหรือฐานข้อมูล

ความจริงทุกธุรกรรมที่ดำเนินการแก้ไขหรือเปลี่ยนแปลงในฐานข้อมูล SQL Server นั้นจะถูกบันทึกไว้ยกเว้นรุ่นที่เกี่ยวข้องกับธุรกรรมที่เกี่ยวข้องกับ TempDB เมื่อมีการใช้การแยกสแน็ปช็อต (การเข้าสู่ระบบในบันทึกการทำธุรกรรมรับประกันได้ว่าธุรกรรมสามารถย้อนกลับ (สำหรับการดำเนินการบางอย่างคุณสามารถลดการบันทึก (เรียกว่าการดำเนินการที่บันทึกน้อยที่สุด) โดยเปลี่ยนรูปแบบการกู้คืนเป็น BULK Logged --- คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ SQL Server Books Online ได้ที่นี่


0

คำตอบคือเช่นเคยมันขึ้นอยู่กับ
เมื่อคุณพูดว่า:

ฉันมีสองตารางที่มีข้อมูลรวม ข้อมูลมีการปรับปรุงอย่างต่อเนื่อง

การรวมตัวแบบไหนกันนะ?
ลองใช้ VIEW แทนไม่จำเป็นต้องอัปเดตและไม่มีการบันทึก

หากไม่ใช่ตัวเลือกให้ลองใช้ธุรกรรมที่สั้นกว่าและสำรองข้อมูลบันทึกระหว่างกัน

การใช้ฐานข้อมูลที่แตกต่างกันหมายถึงค่าใช้จ่ายด้านการบริหารความปลอดภัยเป็นต้นและจะมีบันทึกธุรกรรมของตัวเอง (แม้จะมีรูปแบบการกู้คืนที่เรียบง่ายที่บันทึกถูกเขียนไว้ SQL Server จะตัดทอนบันทึกโดยอัตโนมัติ แต่ไม่ปล่อยพื้นที่ดิสก์) .


ฉันอัปเดตคำถามด้วยประเภทการรวมที่เกิดขึ้น
dangowans

@dangowans ฉันกำลังคิดเกี่ยวกับรูปแบบการกู้คืนข้อมูลที่บันทึกจำนวนมาก DRP ของคุณต้องการความสามารถในการกู้คืนสู่จุดในเวลาหรือไม่ คุณใช้การจำลองแบบหรือไม่ ลองอ่านเกี่ยวกับสิ่งที่จำเป็นต้องมี
Roi Gavish
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.