2
จะปลอดภัยไหมที่จะยกเลิกการสืบค้น PostgreSQL ALTER TABLE ที่รอการล็อก?
เราเริ่มALTER TABLEคำถามเมื่อหลายชั่วโมงก่อนและเพิ่งรู้ว่าเพิ่งผ่านpg_stat_activityการล็อค เราค้นพบแบบสอบถามอื่น ๆ ที่ถือล็อคบนตารางที่เราต้องการแก้ไขและไม่ปล่อยให้มันไป แบบสอบถามของเราคือแบบสอบถามแบบ "ง่าย" (การเปลี่ยนชนิดข้อมูลคอลัมน์) แต่กำลังทำงานบนตารางขนาดใหญ่ ALTER TABLEแทนที่จะฆ่ากระบวนการที่จะถือไว้ล็อคเราได้ตัดสินใจว่าเราอยากจะฆ่า เราไม่ได้ห่อALTER TABLEในการทำธุรกรรม เท่าที่ฉันเข้าใจความจริงที่ว่าแบบสอบถามของเรากำลังรอการล็อกหมายความว่ามันกำลังรอการล็อคอยู่เสมอและมันไม่เคยเปลี่ยนแปลงอะไรเลย มันเป็นเรื่องจริงเหรอ? ปลอดภัยALTER TABLEหรือไม่ที่เราจะยกเลิกการสอบถามของเราทันที หรือเป็นไปได้ว่าแบบสอบถามได้แก้ไขบางสิ่งบางอย่างแล้วและการยกเลิกจะทำให้ฐานข้อมูลของเราอยู่ในสถานะกึ่งกลางหรือไม่ PS: SELECT pg_cancel_backend(pid);แผนคือการยกเลิกการใช้ หากนี่เป็นความคิดที่ไม่ดีโปรดแจ้งให้เราทราบ