<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>start transaction &#8211; PARINYA.NET</title>
	<atom:link href="https://www.parinya.net/node/tag/start-transaction/feed" rel="self" type="application/rss+xml" />
	<link>https://www.parinya.net</link>
	<description>ทฤษฎีการคำนวณสำหรับคอมพิวเตอร์และทฤษฎีการประมวลผลสารสนเทศ</description>
	<lastBuildDate>Sun, 27 Mar 2011 13:04:14 +0000</lastBuildDate>
	<language>th</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.2</generator>
	<item>
		<title>Start Transaction, Commit และ Rollback</title>
		<link>https://www.parinya.net/node/1532</link>
					<comments>https://www.parinya.net/node/1532#comments</comments>
		
		<dc:creator><![CDATA[ไท้ ปริญญา]]></dc:creator>
		<pubDate>Sun, 27 Mar 2011 13:02:54 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[commit]]></category>
		<category><![CDATA[innodb]]></category>
		<category><![CDATA[myisam]]></category>
		<category><![CDATA[rollback]]></category>
		<category><![CDATA[start transaction]]></category>
		<guid isPermaLink="false">http://www.tai-parinya.com/?p=1532</guid>

					<description><![CDATA[โดยส่วนตัวแล้วผมคุ้นเคยกั]]></description>
										<content:encoded><![CDATA[<p>โดยส่วนตัวแล้วผมคุ้นเคยกับ Start Transaction, Commit และ Rollback มานานแล้ว เพราะมันเป็นกลไกพื้นฐานของฐานข้อมูล</p>
<blockquote>
<p>Start Transaction, Commit และ Rollback เป็นกลไกสำหรับการตัดสินใจบันทึกข้อมูลลงฐานข้อมูล มันถูกสร้างขึ้นมาเพื่อทำให้การบันทึกข้อมูลมีความถูกต้องรัดกุมมากยิ่งขึ้น เพราะหากทำสำเร็จไม่มีปัญหา ก็จะเป็นการยืนยันการบันทึกข้อมูล แต่หากทำไม่สำเร็จ สิ่งที่ทำ ๆ ไปก็จะถูกถอดถอนออกหมด ไม่เหลือทิ้งเอาไว้ให้ระคายใจ ให้เหมือนไม่มีอะไรเกิดขึ้นมาก่อน</p>
</blockquote>
<p>ถ้าเป็นบน Oracle, Informix หรือ SQL Server ที่ผมเคยใช้ ไอ้การทำ Start Transaction, Commit และ Rollback ถือได้ว่าเป็นกลไกพื้นฐานเลยนะ แต่พอมาเป็น MySQL ผมก็เพิ่งจะรู้เหมือนกันว่ามันมีบางอย่างไม่พื้นฐาน!!!</p>
<p>คือไปคุ้ย ๆ ดูในอินเทอร์เน็ต เขาบอก ๆ กันเอาไว้ว่า ถ้าอยากจะใช้กลไก Transaction บน MySQL นั้น เราต้องกำหนดให้ Table นั้น ๆ มี Storage Engine เป็น InnoDB แทนที่จะเป็น MyISAM และบอกเอาไว้ด้วยว่า MyISAM อ่ะดี เพราะมันรวดเร็วและเหมาะมากสำหรับใช้กับ Web Application ในขณะที่ InnoDB เหมาะสำหรับงานที่ต้องการความถูกต้องของข้อมูลสูง ๆ เช่นงานจำพวกการเงิน เป็นต้น</p>
<p>อือม ผมว่าเขาอธิบายขาดไปนิดนึงนะ เพราะผมมองว่า MyISAM มันเหมาะที่จะกำหนดให้กับ Table ที่เราจะ Insert, Update หรือ Delete เดี่ยว ๆ ตัวเดียว โดยไม่ต้องเกี่ยวข้องกับใคร แบบว่าทำมันทีเดียวแล้วจบไปเลย ไม่ต้องยึดโยงกับการปรับปรุง Table อืนอีก</p>
<p>ในขณะที่ InnoDB มันเหมาะที่จะกำหนดให้กับกลุ่มของ Table ที่มีความเกี่ยวข้องกันเป็นลำดับ คือ ต้องมีการ Insert, Update หรือ Delete กันเป็นทอด ๆ แบบว่าไอ้ Table นั้นต้องถูกทำก่อน Table นี้ แล้วพอทำ Table นี้เสร็จแล้วก็ต้องไปทำ Table โน้น และสุดท้ายถ้าสะดุดแม้แต่จุดเดียว ก็ให้เลิก ๆ เป็นโมฆะให้หมด ให้ถือว่าไอ้ที่เคย Insert, Update หรือ Delete ไปไม่เคยเกิดขึ้นมาก่อน อะไรแบบนั้น!!!</p>
<p>ทีนี้ถ้าเราจะทำเกมแบบ MMORPG ล่ะ เราควรจะกำหนด Storage Engine ยังไงดี???</p>
<p>คำตอบก็คงจะเป็น &#8230; กำหนดแบบผสม ๆ ไปก็แล้วกัน ให้บาง Table เป็น MyISAM บาง Table เป็น InnoDB ดีกว่า เพราะเกมแบบ MMORPG ก็ต้องการความถูกต้องของข้อมูล เหมือนกับงานจำพวกการเงินเหมือนกัน</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.parinya.net/node/1532/feed</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
	</channel>
</rss>
