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

กลไกสำหรับการกระทำชุดการเปลี่ยนแปลงที่สอดคล้องกันลงในฐานข้อมูลแบบอะตอม

3
มันเป็นการปฏิบัติที่ไม่ถูกต้องหรือไม่ที่จะสร้างธุรกรรมอยู่เสมอ?
มันเป็นการปฏิบัติที่ไม่ถูกต้องหรือไม่ที่จะสร้างธุรกรรมอยู่เสมอ? ยกตัวอย่างเช่นมันเป็นวิธีที่ดีในการสร้างการทำธุรกรรมเพื่ออะไร แต่คนที่เรียบง่ายSELECT? ต้นทุนในการสร้างธุรกรรมเมื่อไม่จำเป็นจริงๆคืออะไร? แม้ว่าคุณจะใช้ระดับการแยกเช่นREAD UNCOMMITTEDนั้นมันเป็นการปฏิบัติที่ไม่ดีหรือไม่?

6
มีความเสี่ยงอะไรบ้างถ้าเราเปิดใช้งานสแนปชอตการอ่านใน sql-server
ฉันได้อ่านที่นี่ว่าข้อมูลพิเศษบางอย่างจะถูกจัดเก็บต่อแถวดังนั้นเราจึงอาจเห็นประสิทธิภาพลดลง แต่มีความเสี่ยงอื่นอีกหรือไม่ เช่น. สิ่งนี้จะส่งผลต่อการกู้คืนฐานข้อมูลหรือไม่? มีอะไรอีกบ้างที่เราต้องทำเพื่อใช้ประโยชน์จากสิ่งนี้? ฉันวางแผนที่จะดำเนินการคำสั่งเหล่านี้: ALTER DATABASE DatabaseName SET READ_COMMITTED_SNAPSHOT ON ALTER DATABASE DatabaseName SET ALLOW_SNAPSHOT_ISOLATION ON ฉันเชื่อว่าสิ่งนี้จะทำให้เรามีบางสิ่งที่ใกล้เคียงกับ oracle มากขึ้นหากว่ามีธุรกรรมหนึ่งธุรกรรมที่กำลังอัพเดทธุรกรรมอื่น ๆ ยังคงสามารถอ่านข้อมูลเก่าได้ ถูกต้องหรือไม่ ฉันกำลังมองหาสิ่งนี้เพราะฉันเบื่อปัญหาการล็อคใน SQL Server 2005 ฉันหวังว่าสิ่งนี้อาจลดการหยุดชะงักเป็นครั้งคราวที่ผู้ใช้ของเราเห็นช่วยให้ประสิทธิภาพโดยรวมของแอปพลิเคชันของเราและกระตุ้นให้นักพัฒนาของเรา กลัว.

9
ขอให้ไม่ใช้ธุรกรรมและใช้วิธีแก้ปัญหาเพื่อจำลองสถานการณ์หนึ่ง
ฉันได้พัฒนา T-SQL มาหลายปีแล้วและกำลังขุดอยู่เสมอและเรียนรู้ทุกอย่างที่เกี่ยวกับภาษาได้อย่างต่อเนื่อง ฉันเพิ่งเริ่มทำงานกับ บริษัท ใหม่และได้รับสิ่งที่ฉันคิดว่าเป็นข้อเสนอแนะแปลก ๆ เกี่ยวกับการทำธุรกรรม ไม่เคยใช้พวกเขา ใช้วิธีแก้ปัญหาที่จำลองธุรกรรมแทน นี่มาจาก DBA ของเราที่ทำงานในฐานข้อมูลเดียวกับธุรกรรมจำนวนมากและต่อมามีการบล็อกจำนวนมาก ฐานข้อมูลที่ฉันทำงานเป็นหลักไม่ประสบปัญหานี้และฉันเห็นว่ามีการใช้ธุรกรรมในอดีต ฉันเข้าใจว่าการปิดกั้นเป็นสิ่งที่คาดว่าจะเกิดขึ้นเนื่องจากเป็นไปตามปกติของพวกเขาและถ้าคุณสามารถหลีกเลี่ยงได้โดยไม่ต้องใช้สิ่งใดสิ่งหนึ่ง แต่ฉันมีหลายครั้งที่แต่ละคำสั่งต้องทำงานสำเร็จ หากล้มเหลวพวกเขาทั้งหมดจะต้องล้มเหลวในการกระทำ ฉันรักษาขอบเขตการทำธุรกรรมของฉันให้แคบที่สุดเสมอใช้ร่วมกับ SET XACT_ABORT ON เสมอและอยู่ในการทดลอง / จับ ตัวอย่าง: CREATE SCHEMA someschema; GO CREATE TABLE someschema.tableA (id INT NOT NULL IDENTITY(1, 1) PRIMARY KEY, ColA VARCHAR(10) NOT NULL ); GO CREATE TABLE someschema.tableB (id …

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

3
ระดับการแยก "Chaos" คืออะไรและควรใช้เมื่อใด
เอกสาร ADO.NET แสดงความเป็นไปได้ของการตั้งค่าระดับธุรกรรมสำหรับธุรกรรม SQL เป็น Chaos ฟังดูไม่เป็นที่พอใจ แต่ถ้ามีอยู่ในนั้นน่าจะมีการใช้งานที่ถูกกฎหมาย SET แยกธุรกรรมระดับคำสั่งใน BOL (ah! เห็นฉันสามารถใช้ google และ BOL) ไม่มีอะไรน่าจะมีชื่อว่า "ความวุ่นวาย" และ ADO.NET จะมี 5 โหมดที่ตรงกับขึ้นอย่างให้อยู่ในระดับการบันทึกไว้ในนอกจาก "ความวุ่นวาย" ระดับความโกลาหลนี้เป็นอย่างไรหรือใคร (และทำไมถึงมีชื่อที่ไม่เป็นมิตร) อ้างอิง: ADO.NET enum

1
ทริกเกอร์ร่วมกับการทำธุรกรรม
สมมติว่าเรามีสถานการณ์ต่อไปนี้: เรามีตาราง (พูด Let 's Table_A), INSERTชมีทริกเกอร์บน งานทริกเกอร์คือการอัพเดตบางแถวtable_Btable_Aขึ้นอยู่กับค่าที่แทรกอยู่ใน ตอนนี้ทุกอย่างก็โอเคเมื่อเราแทรกแถวในตารางอย่างง่าย แต่แล้วสถานการณ์ที่เราแทรกข้อมูลผ่านการทำธุรกรรมล่ะ ทริกเกอร์จะรอจนกว่าคำสั่งการทำธุรกรรมทั้งหมดจะทำงานได้สำเร็จหรือจะถูกเรียกใช้ทันทีที่มันรับรู้ถึงการแทรก? หากทริกเกอร์ยิงทันทีเมื่อรับรู้การแทรกครั้งแรกจะเกิดอะไรขึ้นถ้าทรานแซคชันล้มเหลวในแถวสุดท้าย มีกลไกสำหรับสถานการณ์นั้นไหม

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

7
Oracle - วิธีดูการเปลี่ยนแปลงที่ไม่ได้ตั้งใจบนตารางใด ๆ
ฉันกำลังดีบักผ่านกระบวนการแบทช์ในขณะนี้ที่ทำงบ DML จำนวนมาก แต่ไม่ได้กระทำทันที จะเป็นการดีหากคุณสามารถดูการเปลี่ยนแปลง "รอดำเนินการ" จากเซสชันอื่นในขณะที่การทำธุรกรรมไม่ได้เกิดขึ้น เป็นไปได้ไหม ตัวอย่าง: Insert into table myTable (col1, col2) values ("col1", "col2"); --Somehow view the pending transaction maybe by system view?.... ...other DML statements.... commit;

2
วิธีการย้อนกลับเมื่อเริ่ม 3 โพรซีเดอร์ที่เก็บไว้จากโพรซีเดอร์ที่เก็บไว้หนึ่งโพรซีเดอร์
ฉันมีโพรซีเดอร์ที่เก็บไว้ซึ่งประมวลผล 3 โพรซีเดอร์ที่เก็บไว้ภายในเท่านั้น ฉันใช้พารามิเตอร์ 1 ตัวเพื่อจัดเก็บเท่านั้นหากมาสเตอร์ SP ประสบความสำเร็จ หากโพรซีเดอร์ที่เก็บครั้งแรกทำงานได้ดีในโพรซีเดอร์ที่เก็บข้อมูลหลัก แต่โพรซีเดอร์ที่เก็บข้อมูลที่สองล้มเหลวแล้วมันจะย้อนกลับ SP ทั้งหมดใน Master SP โดยอัตโนมัติหรือฉันต้องทำบางคำสั่งหรือไม่? นี่คือขั้นตอนของฉัน: CREATE PROCEDURE [dbo].[spSavesomename] -- Add the parameters for the stored procedure here @successful bit = null output AS BEGIN begin transaction createSavebillinginvoice begin Try -- SET NOCOUNT ON added to prevent extra result sets …

1
ขนาดธุรกรรม MySQL มีขนาดใหญ่เกินไป?
ฉันมีกระบวนการนำเข้าที่ทำงานบ่อยมากและฉันต้องการให้เป็นข้อตกลง 'all or nothing' หรือ aka: ธุรกรรม มีหลายด้านและการนำเข้าอาจให้ผลที่ใดก็ได้ระหว่างระเบียน 100k-1mil + นี่เท่ากับเพย์โหลดตั้งแต่หลาย MB ไปจนถึงสองสามร้อย MB ของข้อมูล ฉันรู้ว่าตารางชั่วคราวเป็นอีกตัวเลือกหนึ่ง - แต่วิธีนี้ดูมีประโยชน์มาก มีคำเตือนใด ๆ ที่ควรระวังเกี่ยวกับการฝึกฝนประเภทนี้ด้วยการจัดการข้อมูลจำนวนมากระหว่างการกระทำหรือไม่? (ด้านนอกของโหลดการเขียน / การจัดทำดัชนีโดยทั่วไปจะเกิดขึ้นเมื่อมีการยืนยัน)

2
ฉันสามารถเลือกข้อมูลที่ถูกแทรกในการทำธุรกรรมที่ไม่มีข้อผูกมัดเดียวกันได้หรือไม่?
อาจเป็นคำถามเริ่มต้นที่โง่ แต่ฉันไม่สามารถหาคำตอบได้ทุกที่ ทุกที่ที่ฉันอ่านเกี่ยวกับสิ่งTransaction Isolationที่แก้ปัญหาการเปิดเผยข้อมูลภายในธุรกรรมที่เกิดขึ้นพร้อมกัน ความกังวลของฉันคือพฤติกรรมภายในธุรกรรมเดียว หากฉันเริ่มต้นธุรกรรมให้แทรกข้อมูลบางส่วนฉันจะสามารถเลือกได้ทันที - ยังคงอยู่ในการทำธุรกรรมเดียวกัน ถ้าใช่พฤติกรรมนี้สามารถเปลี่ยนแปลงได้ในลักษณะเดียวกันเช่นแยกธุรกรรมที่กล่าวถึงในกรณีของการทำธุรกรรมพร้อมกัน? จะเจาะจงฉันกำลังกำหนดเป้าหมาย PostgreSQL 9.4

1
วิธีใช้ธุรกรรมกับ SQL Server DDL
ฉันมีตารางเข้าสู่ระบบที่แทรกทั้งหมดจะทำโดยขั้นตอนการจัดเก็บเดียว CREATE TABLE dbo.LogTable( LogRefnr int IDENTITY(1, 1) NOT NULL, LogQuery varchar(255) NOT NULL, LogTime datetime NOT NULL, logQueryDuration int NULL, LogSessionID int NULL, CONSTRAINT PK_Log PRIMARY KEY CLUSTERED (LogRefnr) ) go Create procedure DBO.LogInsert ( @Query varchar(255), @time datetime, @duration int, @SessinID int) as begin Insert into LogTable ( …


4
การทำธุรกรรมภายในการทำธุรกรรม
PostgreSQL จะแสดงพฤติกรรมแบบใดถ้าตัวอย่างสคริปต์ด้านล่างนี้ถูกเรียกใช้ BEGIN; SELECT * FROM foo; INSERT INTO foo(name) VALUES ('bar'); BEGIN; <- The point of interest END; PostgreSQL จะยกเลิกรายการที่สองBEGINหรือไม่หรือจะมีการตัดสินใจกระทำโดยนัยจากนั้นเรียกใช้BEGIN ENDบล็อกในตอนท้ายว่าเป็นรายการแยกต่างหาก

3
Sleeping SPID บล็อกธุรกรรมอื่น ๆ
ฉันมีปัญหาในการติดตามการบล็อกที่เรากำลังประสบอยู่ รากปิดกั้นสถานะ SPID เป็น 'นอน' cmd คือ 'รอคำสั่ง' และเป็นsqltextSET TRANSACTION ISOLATION LEVEL READ COMMITTED เมื่อฉันดูรายงานยอดการทำธุรกรรมตามรายการธุรกรรมที่ถูกบล็อกคำสั่งการบล็อก SQL คือ '-' ฉันทำการติดตามบน SQL และเมื่อการบล็อคเกิดขึ้นการติดตามรูทการบล็อค SPID แต่มันไม่ได้นำฉันไปทุกที่ คำสั่งร่องรอยสุดท้ายคือเช่นเดียวกับข้างต้นsqltextSET TRANSACTION ISOLATION LEVEL READ COMMITTED ฉันได้ตรวจสอบขั้นตอนการจัดเก็บที่เกี่ยวข้องทั้งหมดแล้วฉันสามารถค้นหาเพื่อให้แน่ใจว่าพวกเขามีงบ TRY / CATCH BEGIN TRAN / COMMIT TRAN / ROLLBACK งบ TRAN (เราใช้ขั้นตอนที่เก็บไว้สำหรับทุกสิ่งดังนั้นจึงไม่มีคำสั่งแบบสแตนด์อโลน) ปัญหานี้เพิ่งเริ่มเกิดขึ้นในช่วง 24 ชั่วโมงที่ผ่านมาและไม่มีใครอ้างว่าได้ทำการเปลี่ยนแปลงใด ๆ กับระบบ การแก้ไข: หนึ่งในขั้นตอนการจัดเก็บที่ใช้บ่อยของเรามีข้อผิดพลาดกับการแทรก …

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