คำถามติดแท็ก rollback

2
เวิร์กโฟลว์ DDL ของทรานแซคชันสำหรับ MySQL
ฉันเป็นเพียงเล็กน้อยประหลาดใจที่จะพบว่างบ DDL ( alter table, create indexฯลฯ ) โดยปริยายกระทำการทำธุรกรรมในปัจจุบันใน MySQL มาจาก MS SQL Server ความสามารถในการปรับเปลี่ยนฐานข้อมูลในการทำธุรกรรมภายใน (ที่ถูกย้อนกลับ) เป็นส่วนสำคัญของเวิร์กโฟลว์ของฉัน สำหรับการรวมอย่างต่อเนื่องการย้อนกลับถูกใช้ถ้าการโยกย้าย hiccuped ด้วยเหตุผลใด ๆ ดังนั้นอย่างน้อยเราก็ไม่ได้ออกจากฐานข้อมูลในสถานะครึ่งย้าย ผู้คนแก้ไขปัญหาทั้งสองนี้อย่างไรเมื่อใช้ MySQL กับการย้ายข้อมูลและการรวมอย่างต่อเนื่อง

4
ทำไม DBMS บางอันไม่อนุญาตให้มีการย้อนกลับสำหรับคำสั่ง DDL
เมื่อเร็ว ๆ นี้ฉันพบว่า MySQL ไม่สนับสนุนการย้อนกลับของ DDL เช่น "แก้ไขตาราง" ... เคยชินกับ PostgreSQL ที่ทำให้ฉันแปลก แต่เพื่อนของฉันบอกฉันว่าแม้แต่ Oracle ก็ไม่ยอม .. มีเหตุผลทางเทคนิคหรือไม่ที่ไม่สนับสนุน มันเป็นเพียงคุณสมบัติ "ไม่น่าสนใจ" สำหรับพวกเขา? แก้ไข: เพิ่งพบการเปรียบเทียบนี้ ดูเหมือนว่ามี DBMSes หลายอย่างที่ทำสนับสนุน DDL การทำธุรกรรม


2
พื้นที่ดิสก์เต็มในระหว่างการแทรกเกิดอะไรขึ้น
วันนี้ฉันค้นพบฮาร์ดไดรฟ์ที่เก็บฐานข้อมูลของฉันเต็ม สิ่งนี้เคยเกิดขึ้นมาก่อนโดยปกติสาเหตุจะชัดเจนมาก มักจะมีแบบสอบถามที่ไม่ดีซึ่งทำให้เกิดการรั่วไหลขนาดใหญ่เพื่อ tempdb ซึ่งเติบโตขึ้นจนดิสก์เต็ม คราวนี้มันเห็นได้ชัดน้อยลงว่าเกิดอะไรขึ้นเนื่องจาก tempdb ไม่ได้เป็นสาเหตุของไดรฟ์เต็มรูปแบบมันเป็นฐานข้อมูลของตัวเอง ข้อเท็จจริง: ขนาดฐานข้อมูลปกติประมาณ 55 GB เพิ่มขึ้นเป็น 605 GB ไฟล์บันทึกมีขนาดปกติและมีขนาดใหญ่มาก Datafile มีพื้นที่ว่าง 85% (ฉันตีความว่าเป็น 'อากาศ': พื้นที่ที่ใช้ แต่ได้รับการปล่อยให้ว่างแล้ว SQL Server จะสำรองพื้นที่ทั้งหมดเมื่อจัดสรรแล้ว) ขนาด Tempdb เป็นปกติ ฉันได้พบสาเหตุที่น่าจะเป็น; มีหนึ่งแบบสอบถามที่เลือกแถวมากเกินไป (การรวมที่ไม่ดีทำให้เกิดการเลือก 11 พันล้านแถวซึ่งคาดว่าสองแสนคน) นี่คือSELECT INTOแบบสอบถามซึ่งทำให้ฉันสงสัยว่าสถานการณ์ต่อไปนี้อาจเกิดขึ้น: SELECT INTO ถูกใช้งาน สร้างตารางเป้าหมายแล้ว ข้อมูลถูกแทรกขณะที่ถูกเลือก ดิสก์เต็มทำให้การแทรกล้มเหลว SELECT INTO ถูกยกเลิกและย้อนกลับ การย้อนกลับเพิ่มพื้นที่ว่าง (ข้อมูลที่แทรกไว้แล้วจะถูกลบ) แต่ SQL Server …

4
ฉันสามารถเปลี่ยนโครงสร้างตารางในธุรกรรมแล้วย้อนกลับหากมีข้อผิดพลาดได้หรือไม่?
ฉันมีALTER TABLEข้อความบางส่วนที่ฉันใช้อยู่ ไม่ใช่ทั้งหมดที่ทำงาน (เป็นผลมาจากการรันการเปรียบเทียบข้อมูล SQL) และฉันต้องการจัดกลุ่มพวกเขาในบางธุรกรรมและย้อนกลับคำสั่งหากมีสิ่งผิดปกติ เป็นไปได้หรือเป็นเพียงข้อมูลที่สามารถย้อนกลับได้?

2
การย้อนกลับของ SQL Server ทั้งสองนี้แตกต่างกันอย่างไร
ใน SQL Server 2008 R2 การย้อนกลับสองแบบนี้แตกต่างกันอย่างไร: เรียกใช้ALTERคำสั่งสักครู่แล้วกด 'ยกเลิกการดำเนินการ' ใช้เวลาสองสามนาทีในการย้อนกลับอย่างสมบูรณ์ เรียกใช้ALTERคำสั่งเดียวกันแต่ให้แน่ใจว่าLDFไฟล์นั้นไม่ใหญ่พอที่จะทำให้สำเร็จ เมื่อถึงLDFขีด จำกัด และไม่อนุญาตให้ 'autogrowth' การประมวลผลแบบสอบถามจะหยุดทันที (หรือย้อนกลับเกิดขึ้น) พร้อมกับข้อความแสดงข้อผิดพลาดนี้: The statement has been terminated. Msg 9002, Level 17, State 4, Line 1 The transaction log for database 'SampleDB' is full. To find out why space in the log cannot be reused, see …

2
ROLLBACK ไม่ทำงานหลังจาก INSERT INTO สร้างตารางปลายทางใหม่
ฉันกำลังทำงานกับสคริปต์ PHP ซึ่งนำเข้าไฟล์ CSV ( customers.csv) ลงในตาราง MySQL (customers ) ก่อนที่จะแทรกเนื้อหาของไฟล์ CSV ลงในตาราง mysql ฉันสำรองข้อมูลcustomersตารางดั้งเดิมก่อน ฉันกำลังห่อกระบวนการนำเข้าทั้งหมด (รวมถึงการสำรองข้อมูล) ในธุรกรรม mysql (เพื่อพิจารณากรณีที่ CSV เสียหายที่ไหนสักแห่งที่อยู่ตรงกลางและเพื่อให้แน่ใจว่าการนำเข้านั้นเป็นอะตอม) ปัญหาคือว่าย้อนกลับดูเหมือนจะไม่ทำงานเมื่อฉันเรียกมันว่าหลังจากที่INSERT INTOคำสั่ง: เมื่อตรวจสอบฐานข้อมูลผ่านทาง phpMyAdmin ฉันสามารถดูตารางที่สร้างขึ้นใหม่และแถวภายในมันยังคงอยู่หลังจาก roollback นี่คือบันทึกการทำงาน: [2015-01-19 14:08:11] DEBUG: "START TRANSACTION" [] [] [2015-01-19 14:08:11] DEBUG: SHOW TABLES LIKE :table_name; [] [] [2015-01-19 14:08:28] DEBUG: CREATE TABLE …

2
MongoDB Replica Set SECONDARY ติดอยู่ในสถานะ 'ROLLBACK`
ในระหว่างการอัพเดทอัตโนมัติครั้งล่าสุดของ MongoD ของเราPRIMARYเมื่อPRIMARYก้าวลงมาอย่างถาวรก็เข้าสู่ROLLBACKสถานะอย่างถาวร หลังจากหลายชั่วโมงในROLLBACKสถานะยังคงไม่มี.bsonไฟล์ย้อนกลับในrollbackไดเร็กทอรีในไดเร็กทอรีฐานข้อมูล mongodb ที่และบรรทัดนี้ในไฟล์บันทึกของเรา: [rsSync] replSet syncThread: 13410 replSet too much data to roll backดูเหมือนว่าจะบ่งชี้ว่าROLLBACKกระบวนการล้มเหลว ฉันต้องการความช่วยเหลือในการวิเคราะห์สิ่งที่ผิดพลาด ดูเหมือนจะมีการย้อนกลับสองแบบที่แตกต่างกันเกิดขึ้นในบันทึกของเรา เป็นเช่นนั้นหรือเป็นกรณีที่ใช้เวลา 3 ชั่วโมง? หากการย้อนกลับครั้งแรก (เวลา 19:00 น.) ประสบความสำเร็จทำไมไม่มีสิ่งใดปรากฏในrollbackไดเรกทอรีของคุณ มีการเดาสาเหตุของคำเตือนเหล่านั้นหรือไม่? นั่นอาจเกี่ยวข้องกับความล้มเหลวในการย้อนกลับใช่ไหม เราสูญเสียข้อมูลไป 18 วินาทีเนื่องจากครั้งแรกROLLBACKใช่หรือไม่ มีวิธีแก้ปัญหาทั่วไปสำหรับปัญหา "ติดอยู่ในROLLBACKสถานะ" หรือไม่? เราต้องไปที่ฐานข้อมูลทั้งหมดของเราและซิงค์จากหลักอีกครั้ง บรรทัดบันทึกที่เกี่ยวข้องคือ: # Primary coming back after restart... Tue May 15 19:01:01 [initandlisten] MongoDB starting …
11 mongodb  rollback 

2
การลบตาราง MySQL ด้วยธุรกรรมที่ค้างอยู่
มีวิธีการลบตาราง InnoDB หรือฐานข้อมูลที่มีธุรกรรมที่ค้างอยู่ใน MySQL (ควรอยู่ในระดับระบบไฟล์) หรือไม่? เกิดอะไรขึ้น: ฉันใช้ MySQL 5.5.28 และวิ่งLOAD DATA INFILE…เพื่อนำเข้าชุดข้อมูลขนาดใหญ่ (300M แถว) ลงในตาราง InnoDB ฉันไม่ได้ใช้set autocommit = 0;มาก่อน น่าเสียดายที่mysqldมีการหยุดกลางการนำเข้า เมื่อฉันรีสตาร์ทmysqlจะพยายามย้อนกลับธุรกรรมที่กรอกบันทึกของระบบด้วยข้อความเช่นนี้: mysqld_safe [4433]: 121212 16:58:52 InnoDB: กำลังรอ 1 ธุรกรรมที่กำลังจะเสร็จสิ้น ปัญหาคือการย้อนกลับทำงานมากกว่า 25 ชั่วโมงในขณะนี้ซึ่ง mysqldไม่ยอมรับการเชื่อมต่อซ็อกเก็ตใด ๆ ฉันไม่สามารถลบ/var/lib/mysql/*และเริ่มจากศูนย์ได้เนื่องจากมีบางฐานข้อมูล InnoDB / ตารางอื่น ๆ ในเครื่องนี้เช่นกัน อย่างไรก็ตามตารางที่มีปัญหานั้นเป็นตารางเดียวในฐานข้อมูลแยกต่างหาก การลบทั้งตารางหรือฐานข้อมูลทั้งหมดไม่ใช่ปัญหาเนื่องจากฉันสามารถนำเข้าข้อมูลทั้งหมดอีกครั้งในภายหลัง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.