Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > รบกวนพี่ๆและอาจารย์ทุกท่านครับ ขอความรู้เรื่อง SQL Transactions ครับ



 

รบกวนพี่ๆและอาจารย์ทุกท่านครับ ขอความรู้เรื่อง SQL Transactions ครับ

 



Topic : 114504



โพสกระทู้ ( 177 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์




หลังจากที่หาอ่านมาหลายที่ ด้วยความไม่ชำนาญสักภาษา
แม้กระทั่งภาษาไทย

เกิดข้อสงสัยครับ ดังนี้

ผมเขียนโปรแกรมด้วย VB.Net เชื่อมต่อไปหา MS Sql Server
เพื่อจะเรียนรู้เกี่ยวกับการใช้ Transactions ประมาณนี้ครับ

Code
----- App ตัวที่ 1 เขียนบนเครื่องคอมเครื่องที่ 1 conn As New SqlConnection("xyz") conn.Open() trans As SqlTransaction = conn.BeginTransaction() cmd As New SqlCommand() cmd.CommandType = Text... cmd.CommandText = "UPDATE abc Set xyz = 'i love u' " cmd.Connection = conn cmd.executenonquery() ->>> หน่วงเวลาไว้ 3 นาที (ช่วงเวลา 3 นาทีนี้ไปรันโปรแกรมในคอมเครื่องที่ 2) trans.Commit()


Code
----- App ตัวที่ 2 เขียนบนเครื่องคอมเครื่องที่ 2 conn As New SqlConnection("xyz") conn.Open() cmd As New SqlCommand() cmd.CommandType = Text... cmd.CommandText = "SELECT * From abc" cmd.Connection = conn da As New SqlDataAdapter(cmd) dt As New DataTable da.Fill(dt) <<<<< จากตรงนี้


จากตรงนี้ ปรากฎว่า โปรแกรมไม่สามารถรันผ่านบรรทัดนี้ไปได้
จนกว่า trans.Commit() ในคอมเครื่องที่ 1 จะรันก่อน

อยากถามว่า ในการทำงานจริงๆ หากมีกระบวนการแบบนี้เกิดขึ้น
แก้ไขอย่างไรครับ

เช่น .. กรณีงานของผมเอง ในระหว่างที่มีการคำนวณและปรับยอดคงเหลือของสินค้า 150,000 รายการ
ใช้เวลา 10 นาที ผมก็เปิด Transaction ไว้เผื่อหากเกิดข้อผิดพลาดจะได้ Rollback
แต่บังเอิญ มีผู้ใช้งานระบบท่านอื่น ต้องการเข้าไปดูข้อมูลยอดคงเหลือของสินค้าพอดี
เขาไม่สามารถดูได้ แบบนี้ครับ

รบกวนพี่ๆ และอาจารย์ทุกๆท่าน แบ่งปันประสบการณ์และความรู้ให้น้องตัวน้อยๆคนนี้หน่อยนะครับ

ขอบพระคุณล่วงหน้าครับ



Tag : .NET, Ms SQL Server 2005, Ms SQL Server 2008, VB.NET, Windows







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2015-02-18 15:09:34 By : คนงานตัดอ้อย View : 1429 Reply : 8
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

Code
Trans = objConn.BeginTransaction(IsolationLevel.ReadCommitted)


ถ้าเป็น Transaction รู้สึกค่า Default ที่จะ Lock ตัว Table/Record ไว้ครับ แต่มันจะสามารถกำหนด Property ได้น่ะครับ เช่น

IsolationLevel Enumeration
  • Chaos : The pending changes from more highly isolated transactions cannot be overwritten.
  • ReadCommitted : Volatile data cannot be read during the transaction, but can be modified.
  • ReadUncommitted : Volatile data can be read and modified during the transaction.
  • RepeatableRead : Volatile data can be read but not modified during the transaction. New data can be added during the transaction.
  • Serializable : Volatile data can be read but not modified, and no new data can be added during the transaction.
  • Snapshot : Volatile data can be read. Before a transaction modifies data, it verifies if another transaction has changed the data after it was initially read. If the data has been updated, an error is raised. This allows a transaction to get to the previously committed value of the data.
    When you try to promote a transaction that was created with this isolation level, an InvalidOperationException is thrown with the error message "Transactions with IsolationLevel Snapshot cannot be promoted".
  • Unspecified : A different isolation level than the one specified is being used, but the level cannot be determined. An exception is thrown if this value is set.



ASP.NET - Transaction()

IsolationLevel Enumeration
https://msdn.microsoft.com/en-us/library/system.transactions.isolationlevel(v=vs.110).aspx







แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-18 16:08:13 By : mr.win
 


 

No. 2

Guest


เห็นมีที่ตอบไว้กรณีเดียวกันแล้วเป็นกรณีแบบ app จริงๆ
ลองไปอ่านดูครับ
http://greatfriends.biz/webboards/msg.asp?id=117529
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-18 17:35:30 By : DOG{B}
 

 

No. 3



โพสกระทู้ ( 177 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ขอบพระคุณอาจารย์ทั้ง 2 ท่านมากๆเลยนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-19 09:01:12 By : คนงานตัดอ้อย
 


 

No. 4

Guest


@คนงานตัดอ้อย

สมมุติว่าคุณได้คำตอบแล้ว (ฟังจากสำเนียงของคุณ)
แล้วผมจะประยุกต์ใช้งานได้อย่างไร? ในคำตอบของคุณ (ถ้าคุณได้คำตอบแล้วจริง/...)
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-19 10:41:49 By : หน้าฮี
 


 

No. 5

Guest


@DOG{B} ผมลองอ่านแล้วแต่ก็ไม่เข้าใจในคำตอบ คุณช่วยขยายความให้หน่อยได้ไหมครับ (ตามที่คุณเข้าใจ)

Thank.


ปล. รู้อะไรก็ต้องให้รู้จริง ถึงจะนับว่า "เป็นผู้รู้" คนหนึ่่ง
แต่คนที่อยู่เหนือกว่าคำว่า "เป็นผู้รู้" คือคนที่ไม่รู้อะไรเลย ต่างหากเล่า

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-19 10:46:45 By : หน้าฮี
 


 

No. 6

Guest


@DOG{B}

https://www.youtube.com/watch?v=HWbDVtLfH-U#t=151

นี่คือสำเนียงดนตรีของมือระดับโลก (1-10 guitar ณ. ยุคนี้)
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-19 11:04:34 By : หน้าฮี
 


 

No. 7

Guest


@DOG{B} คุณฟังดูดนตรี ณ. เวลา 1:13 -1.14 สังเกตุว่ามันเปลี่ยนคีย์อย่างรวดเร็ว
(Eric capton ก็ใช้เทคนิคนี้เหมือนกัน ในบทเพลง "Tear in haven")
ในทางดนตรี คนที่เขาสนิทกันจะเรียกลักณณะแบบนี้ว่า "คีย์นักดนตวย"

...
...
...
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-19 11:14:45 By : หน้าฮี
 


 

No. 8

Guest


ออกตัวก่อนว่าช่วงนี้เน้น focus ไปที่ front-end ครับผม
ตัวฐานข้อมูลไม่ค่อยจะทำอะไรมากมายเท่าไหร่จะมีแต่ช่วงฝึกงาน
เคยไปฝึกกับบริษัทที่ทำงานกับธนาคารเลยพอเห็นระบบเขานิดๆหน่อยๆ
อาจจะไม่ลึกซึ้งดื่มด่ำกับเรื่องฐานข้อมูลมากมาย
ความเข้าใจของผมคือหาก ระบบไม่ได้ออกแบบมาเพื่อทำงาน transaction
มันจะชนทั้งขีดจำกัดทั้งของระบบฐานข้อมูลหรือขีดจำกัดของเครือข่าย
ในโพสของ คุณ นาย MVC นั้นได้พยายามให้เจ้าของปัญหา
พยายามใช้ตัวเลือกของฐานข้อมูลให้ระบบมันพอจะไปได้

ส่วนตัวแล้วงานที่ต้อง transaction มีน้อยหรือน้อยมาก
ที่เคยเจอก็เป็นระบบที่เขาวางเอาไว้ ซึ่งเจ้าตัวเขาบอก
เอาไว้ว่าหากคิดว่าจะทำระบบใหญ่ การออกแบบจะต้องดี
และบางส่วนจะไม่เหมือนระบบทั่วไปนัก
จะเน้นที่การประมวลผลที่รวดเร็วเป็นหลัก
บางตารางก็ไม่ต้องไปแตกแยกย่อย ให้คงไว้ทั้งก้อน
จะได้ไม่ต้องสิ้นเปลืองทรัพยากรกับการ join หรือเงื่อนไขอะไร
ทั้งการประมวลผลแบบที่กระทบกับฐานข้อมูลทั้งก้อน
จะพยายามกันออกไปงานแบบ batch คือเข้าคิวไว้ไปประมวลผล
ช่วงที่ user น้อย ไม่ใช่ว่าวันนี้อากาศดีจังเลยครึ้มอกครึ้มใจ
เรามาปรับราคาสินค้าทั้งฐานข้อมูลกันเถิด ถ้างานแบบไม่มีรูปแบบแบบนี้
ก็เป็นภาระของระบบอักโขอยู่ ดีไม่มีเซลสมองของ DBA อาจจะเสือมถอยอย่างรวดเร็ว
อย่างสารสนเทศที่ user ต้องการใช้บ่อยๆถี่ๆรัวๆ
ระบบจะทำรายงานที่ user เรียกใช้บ่อยๆเก็บไว้ตามช่วงเวลาที่เหมาะสม
เช่น เป็นรายงานประจำวัน ประจำเดือน หรือประจำไตรมาสไว้รอ
เวลาเรียกใช้ UI จะพยายามให้เลือกใช้รายงานเหล่านั้นก่อน
หรือหากจะปรับฐานข้อมูลจริงๆแบบที่กินเวลานาน
จะเริ่มทำเป็นก้อนๆส่วนๆไป (<< อยู่ที่การออกแบบ) เช้นประมวลไปทีละจังหวัด ทีละสาขา
หรือทีละภาคไป แต่เกิดอยากได้ระบบแบบ REAL TIME ทำได้ไหมก็ตอบว่าได้
แต่ในเงื่อนไขไหนเช่นอยากได้แบบธนาคาร ลูกค้าโอนเงินถอนเงินข้ามจังหวัดข้ามประเทศ
report ตรงนั้นเดี๋ยวนั้นอย่างถูกต้อง มันก็ได้แต่ต้องถามผู้มีอำนาจที่สั่งมานั้นด้วยว่า
ท่านครับระบบธนาคารน่ะ IT เขาลงทุนไปเท่าไหร่ มีบุคคลากรกี่คนครับท่าน
ถ้าท่านตอบได้คงจะเข้าใจ ... แต่ถ้าท่านดื้อดึง ก็ลองเชิญไปดูงานที่ธนาคารสักครั้ง(ถ้าธนาคารอนุญาต)

และการทำระบบ real-time มันทำเฉพาะส่วนที่จำเป็นจริงได้บางส่วน
ทุกอย่างมีค่าใช้จ่ายของมัน ยิ่งใช้ technique ซับซ้อนก็ยิ่งสิ้นเปลืองต้องดูแลมาก
แต่ถ้ามันคุ้มค่าคุ้มทุนมันก็ต้องทำครับ

สรุปการที่จะใช้ระบบที่ออกแบบมาในขอบเขตงานธรรมดา ก็ต้้องแก้ไขกันแบบธรรมดาไป
แต่หากตั้งเพื่อเดินหน้าชนกับปัญหาระดับ extreme (คือเรื่องการใช้ transaction ผมถือว่าเป็นเรือง extreme)
ก็ต้องปรับวิธีคิด ปรับการออกแบบไปรองรับมันเลย ไม่งั้นสักพักจะเจอกับข้อจำกัดสารพัดอย่าง
อย่างตัวอย่างที่เขาโพสมาผมเชื่อว่า การปรับราคาสินค้าทั้งฐานข้อมูลเป็นเรื่องใหญ่ ที่ไม่ใช่อยู่ๆคุณจะมาปรับกับวันนี้เดี๋ยวนี้
แค่เลื่อนเวลาออกไปทำตอนเที่ยงคืนใส่ใน batch งานเอาไว้ มันจะประมวลผลเป็น ชม. ก็ช่างมัน
แล้วเรื่องที่ user อยากดูราคาคุณก็ทำ auto report ไว้บอกเวลาที่ทำ ถ้า user ดูแบบ real-time ไม่ได้
เขายังมีทางเลือกไปดู auto report ที่เก็บไว้ แล้วเราก็อธิบายเหตุผลไปว่าระบบกำลังประมวลผล
ผมว่ามันน่าพอรับกันได้นะ แต่บริบทขององค์กรของเจ้าของคำถามเป็นแบบไหนอันนี้ผมไม่ทราบครับ

ตอบความคิดเห็นที่ : 6 เขียนโดย : หน้าฮี เมื่อวันที่ 2015-02-19 11:04:34
รายละเอียดของการตอบ ::
ขอบคุณมากครับ ที่แนะนำเพลงมา gun n rose ผมฟังได้เฉพาะเพลงช้าๆเย็นๆครับ
เพลงที่เป็น rock หนักๆ ออกจะหูไม่ถึงและนอกจาก civil war แล้ว
อีกเพลงที่เพราะสำหรับผมและฟังได้ไม่เบื่อก็เป็น november rain ครับ
แต่ช่วงเวลานี้ของชีวิตจะไปฟังเพลงลูกทุ่ง เพราะคนในครอบครัวส่วนมากเขาชอบกัน
ซึ่งตัวผมเองว่ากันตามจริงก็ฟังกันได้เกือบจะทุกแนวก็ ok ฟังด้วยกันร้องด้วยกัน
มันได้ความสุขอีกแบบนึงครับผม

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-19 13:47:51 By : DOG{B}
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : รบกวนพี่ๆและอาจารย์ทุกท่านครับ ขอความรู้เรื่อง SQL Transactions ครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่