แชร์ผ่าน


ธุรกรรมในตารางคลังสินค้าใน Microsoft Fabric

นําไปใช้กับ:✅ จุดสิ้นสุดการวิเคราะห์ SQL และ Warehouse ใน Microsoft Fabric

คล้ายกับลักษณะการทํางานของพวกเขาใน SQL Server ธุรกรรมช่วยให้คุณสามารถควบคุมการยอมรับหรือย้อนกลับของคิวรีที่อ่านและเขียนได้

คุณสามารถปรับเปลี่ยนข้อมูลที่จัดเก็บไว้ในตารางคลังสินค้าโดยใช้ธุรกรรมเพื่อจัดกลุ่มการเปลี่ยนแปลงร่วมกัน

  • ตัวอย่างเช่น คุณสามารถทําการแทรกไปยังหลายตาราง หรือไม่มีตารางใดถ้ามีข้อผิดพลาดเกิดขึ้น ถ้าคุณกําลังเปลี่ยนรายละเอียดเกี่ยวกับใบสั่งซื้อที่มีผลต่อสามตาราง คุณสามารถจัดกลุ่มการเปลี่ยนแปลงเหล่านั้นลงในธุรกรรมเดียวได้ ซึ่งหมายความว่าเมื่อมีการคิวรีตารางเหล่านั้น ตารางทั้งหมดจะมีการเปลี่ยนแปลงหรือไม่สามารถทําได้ ธุรกรรมเป็นแนวทางปฏิบัติทั่วไปสําหรับเมื่อคุณต้องการตรวจสอบให้แน่ใจว่าข้อมูลของคุณมีความสอดคล้องกันในหลายตาราง

ความสามารถทางทรานแซคชัน

ความสามารถทางทรานแซคชันเดียวกันได้รับการสนับสนุนในจุดสิ้นสุดการวิเคราะห์ SQL ใน Microsoft Fabric แต่สําหรับคิวรีแบบอ่านอย่างเดียว

ธุรกรรมยังสามารถใช้สําหรับคําสั่ง SELECT ตามลําดับเพื่อให้แน่ใจว่าตารางที่เกี่ยวข้องทั้งหมดมีข้อมูลจากจุดเวลาเดียวกัน ตัวอย่างเช่น ถ้าตารางมีแถวใหม่เพิ่มเข้ามาโดยธุรกรรมอื่น แถวใหม่จะไม่มีผลต่อคิวรี SELECT ภายในธุรกรรมที่เปิดอยู่

สำคัญ

เฉพาะระดับการแยกสแนปช็อตเท่านั้นที่ได้รับการสนับสนุนใน Microsoft Fabric ถ้าคุณใช้ T-SQL เพื่อเปลี่ยนระดับการแยกของคุณ การเปลี่ยนแปลงจะถูกละเว้นในเวลาการดําเนินการคิวรีและการแยกสแนปช็อต

สนับสนุนทรานแซคชันแบบสอบถามข้ามฐานข้อมูล

Warehouse ใน Microsoft Fabric สนับสนุนธุรกรรมที่ครอบคลุมทั่วทั้งฐานข้อมูลที่อยู่ภายในพื้นที่ทํางานเดียวกัน รวมถึงการอ่านจากจุดสิ้นสุดการวิเคราะห์ SQL ของเลคเฮ้าส์ ทุกๆ เลคเฮ้าส์มีจุดสิ้นสุดการวิเคราะห์ SQL แบบอ่านอย่างเดียวจุดสิ้นสุด พื้นที่ทํางานแต่ละแห่งสามารถมีเลคเฮ้าส์ได้มากกว่าหนึ่งแห่ง

การสนับสนุน DDL ภายในธุรกรรม

คลังสินค้าใน Microsoft Fabric สนับสนุน DDL เช่น CREATE TABLE ภายในธุรกรรมที่ผู้ใช้กําหนดเอง

ล็อคสําหรับคําสั่งชนิดต่างๆ

ตารางนี้แสดงรายการของล็อคที่ใช้ในธุรกรรมชนิดต่างๆ ล็อคทั้งหมดจะอยู่ในระดับตาราง:

ชนิดคําสั่ง ล็อคแล้ว
เลือก Schema-เสถียรภาพ (Sch-S)
สอด เจตนาแบบเฉพาะ (IX)
ลบ เจตนาแบบเฉพาะ (IX)
อัพเดต เจตนาแบบเฉพาะ (IX)
คัดลอกไปยัง เจตนาแบบเฉพาะ (IX)
DDL Schema-การปรับเปลี่ยน (Sch-M)

การล็อกเหล่านี้จะป้องกันข้อขัดแย้ง เช่น Schema ของตารางมีการเปลี่ยนแปลงในขณะที่แถวกําลังถูกอัปเดตในทรานแซคชัน

คุณสามารถคิวรีล็อกที่เก็บไว้ใน sys.dm_tran_locks มุมมองการจัดการแบบไดนามิก (DMV) ในขณะนี้

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

คําสั่ง INSERT จะสร้างไฟล์ parquet ใหม่เสมอ ซึ่งหมายความว่าความขัดแย้งกับธุรกรรมอื่นน้อยลง ยกเว้น DDL เนื่องจากอาจเปลี่ยนแปลง Schema ของตาราง

การบันทึกธุรกรรม

การเข้าสู่ระบบธุรกรรมใน Warehouse ใน Microsoft Fabric อยู่ในระดับไฟล์ parquet เนื่องจากไฟล์ parquet ไม่สามารถเปลี่ยนแปลงได้ (ไม่สามารถเปลี่ยนแปลงได้) ผลการย้อนกลับในการชี้กลับไปยังไฟล์ parquet ก่อนหน้า ประโยชน์ของการเปลี่ยนแปลงนี้คือการบันทึกธุรกรรมและการย้อนกลับจะเร็วขึ้น

ข้อจำกัด

  • ไม่สนับสนุนธุรกรรมที่กระจาย
  • ไม่สนับสนุนจุดบันทึก
  • ไม่สนับสนุนธุรกรรมที่มีชื่อ
  • ธุรกรรมที่ทําเครื่องหมายไม่ได้รับการสนับสนุน
  • ตาราง ALTER ไม่ได้รับการสนับสนุนภายในธุรกรรมที่ชัดเจน
  • ในขณะนี้ มีฟังก์ชัน T-SQL แบบจํากัดในคลังสินค้า ดู พื้นที่ พื้นผิว TSQL สําหรับรายการของคําสั่ง T-SQL ที่ไม่พร้อมใช้งานในขณะนี้
  • ถ้าทรานแซคชันมีการแทรกข้อมูลลงในตารางที่ว่างเปล่าและออก SELECT ก่อนย้อนกลับ สถิติที่สร้างขึ้นโดยอัตโนมัติจะยังคงแสดงข้อมูลที่ไม่ได้ผูกมัด ซึ่งก่อให้เกิดสถิติที่ไม่ถูกต้อง สถิติที่ไม่ถูกต้องอาจนําไปสู่แผนคิวรีที่ไม่ได้เปลี่ยนแปลงและเวลาการดําเนินการ ถ้าคุณย้อนกลับธุรกรรมด้วย SELECTs หลังจากการแทรกขนาดใหญ่ อัปเดต สถิติ สําหรับคอลัมน์ที่ระบุใน SELECT ของคุณ