ธุรกรรมในตารางคลังสินค้าใน 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 ของคุณ