ข้อดีและข้อเสียของ MySQL store procedure

ข้อดี

– เพิ่ม performance ให้กับแอพพลิเคชั่น เมื่อถูกสร้างขึ้น จะถูกคอมไพล์และเก็บไว้ใน database แต่ mysql นั้นเขียน stored procedure ในรูปแบบที่แตกต่างไปเล็กน้อย คือ มันจะถูก compile on demand เท่านั้น และหลังจาก compile เสร็จจะเก็บไว้ใน cache ซึ่งจะเก็บไว้ใช้ใน 1 connection ซึ่งหมายความว่ามันจะมีประโยชน์ และเพิ่ม speed ได้ถ้ามีการเรียกใช้หลายๆ ครั้งใน 1 connection หากไม่แล้วก็จะทำงานเหมือนกับ query ธรรมดา(ควรพิจารณาดูว่าจะเขียนหรือไม่โดยใช้หลักการข้อนี้)
– ช่วย ลด traffic ระหว่าง application และ database server (โดยเฉพาะอย่างยิ่ง กรณีที่ อยู่คนละเครื่องแล้วต้องมีการส่ง query เส้นยาวๆ หลายๆ ครั้ง ซึ่งต่างกับ stored procedure ซึ่งจะมีการส่งแค่ ชื่อฟังก์ชั่น และ parameter เท่านั้น)
– ช่วยในการใช้ซ้ำและ ซ่อนเร้นการทำงาน ในกรณีที่นำไปใช้กับ application อื่น เนื่องจากแสดงเป็น รูปแบบ interface ของ database เท่านั้น ซึ่งเป็นการลดงานของ developer
– ความปลอดภัยของ store procedure จำกัดโดย db admin ซึ่งสามารถกำหนด permission ต่างๆ ในการเรียกใช้ stored procedure ได้

ข้อเสีย
-ถ้าใช้ stored procedure เป็นจำนวนมาก มันก็จะกินทรัพยากรมากตามไปด้วย นอกจากนี้ ถ้ามีการเรียกใช้ logical operation จำนวนมากๆ ใน store procedure(ข้อนี้ต้องระวังให้ดี) การใช้งาน CPU ก็จะเพิ่มขึ้นอีก เนื่องจาก database server นั้นไม่ได้ถูกออกแบบมาให้ทำงานกับ logical operation
-โครงสร้างของ store procedure นั้นยากต่อการพัฒนา ในกรณีที่การทำงานในรูปแบบซับซ้อน มากๆ
-MySQL ไม่มีเครื่องมือสำหรับ debug store procedure
-ยากที่จะพัฒนาและดูแล stored procedure ซึ่งจะต้องใช้ skill ที่สูงพอสมควร และนักพัฒนาส่วนใหญ่ไม่ค่อยใส่ใจเรื่องนี้ ซึ่งจะนำไปสู่ปัญหาทั้งด้านการพัฒนาและดูแลระบบ ( ถ้าไม่ well document จริงๆ ผมก็ไม่แนะนำให้ใช้นะครับ )

แปลบางส่วนจาก

http://www.mysqltutorial.org/introduction-to-sql-stored-procedures.aspx

Advertisements

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s

Up ↑

%d bloggers like this: