Thursday 6 March 2008

ความเป็นมาและประสิทธิภาพของ PL/SQL

PL/SQL เป็นการนำคำสองคำคือ PL และ SQL มารวมกัน
PL ย่อมาจาก Procedure Language พัฒนาโดย Oracle เพื่อเป็นส่วนเพิ่ม (extension) ใน standard SQL ให้ทำงานแบบ procedural กับฐานข้อมูล PL/SQL เป็นตัวเชื่อมระหว่าง database technology และ procedural programming language, PL/SQL เป็นเครื่องมือใช้พัฒนาระบบงานที่เพิ่มความสามารถให้กับ SQL ของ Oracle ทำให้พัฒนาระบบงานที่สลับซับซ้อน และเข้าถึงจัดการข้อมูลในฐานข้อมูลได้เป็นอย่างดี ด้วยความสามารถของ PL/SQL เราสามารถใช้คำสั่ง
DML เช่น insert, delete, update, select กับข้อมูล ใช้คำสั่ง loop ทำงานแบบวนซ้ำ ใช้ if และ case ตรวจสอบเงื่อนไข

คำสั่ง SQL นำมาใช้ใน PL/SQL ได้ ใน PL/SQL block มีได้หลาย SQL statements เมื่อส่ง SQL statements ไปประมวลผลที่ตัวจัดการฐานข้อมูลมันถูกส่งไปในลักษณะของ block SQL (Structured Query Language) คือภาษาที่มีลักษณะเหมือนประโยคบรรยายถึงสิ่งที่ต้องการ โดยไม่สนใจวิธีเพื่อให้ได้มาของสิ่ง
ที่ต้องการว่าเป็นอย่างไร ข้อดีคือทำให้ระบบงานที่พัฒนาไม่สนใจว่าข้อมูลจัดเก็บจริงอย่างไร (physically stored) การทำงานของ SQL เกือบทั้งหมดกระทำที่ database server แต่ SQL มีข้อจำกัดคือในการทำงานจริงบางอย่าง การทำงานให้เสร็จโดยใช้ SQL query เพียงประโยคเดียวอาจทำได้ยาก หรือทำไม่ได้นักพัฒนาระบบงานพบว่าบ่อยครั้งต้อง execute หลาย queries เพื่อให้ได้ผลลัพธ์ที่ต้องการ และอาจต้องประมวลผลผลลัพธ์ที่ได้จาก query หนึ่งก่อนที่จะทำงานในขั้นตอนต่อไปได้

ประสิทธิภาพของ PL/SQL
ถ้าไม่มี PL/SQL, RDBMS จะประมวลผล SQL statement ครั้งละ 1 statement ทำให้ประมวลผลล่าช้า ถ้าทำงานบน network มีผู้ใช้หลายคนสั่ง run SQL statement พร้อมกันในเวลาเดียวกันจะทำให้เพิ่ม traffic บน network และ disk I/O ทำงานเพิ่มขึ้น ถ้ามี PL/SQL เราส่ง SQL statement ในลักษณะของ block (มีหลาย SQL statements ในหนึ่ง block) ไปประมวลผลที่ RDBMS engine วิธีนี้ทำให้ลดการติดต่อสื่อสารระหว่างโปรแกรมที่พัฒนากับ RDBMS และลด traffic บน network ไปในตัว



จากรูป เปรียบเทียบการส่ง SQL statement ไปประมวลผลระหว่าง PL/SQL ของ Oracle กับ SQL ของโปรดักท์อื่น Oracle ส่งไปเป็น block ใน block ประกอบด้วยหลาย SQL statements เมื่อตัวจัดการฐานข้อมูล (RDBMS) ได้รับ SQL code ที่มาเป็น block ทำให้การประมวลผลทำได้เร็วกว่ารับมาครั้งละ statement แล้วประมวลผล วิธีนี้ทำให้ PL/SQL เพิ่มประสิทธิภาพการประมวลของ RDBMS

อ้างอิ​งจากหนังสือ​ของคุณบรรศักดิ์​ ​เกิดชัยฤทธิ์
เล่ม "พัฒนา​ Web Applications ​ด้วย​ Oracle Developer Suite 10g"

No comments: