Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

การกระทำที่เกิดขึ้นภายในกระบวนงานที่เก็บไว้และฟังก์ชันถูกจำลองแบบอย่างไร?


ตามจริงแล้ว การดำเนินการมาตรฐานในโพรซีเดอร์และฟังก์ชันที่เก็บไว้จะถูกจำลองจากเซิร์ฟเวอร์ MySQL หลักไปยังเซิร์ฟเวอร์ MySQL รอง แม้แต่การสร้างโพรซีเดอร์และฟังก์ชันที่เก็บไว้ที่ดำเนินการผ่านคำสั่ง DDL ปกติบนเซิร์ฟเวอร์ MySQL หลักก็ยังถูกจำลองแบบไปยังเซิร์ฟเวอร์ทาส MySQL ด้วยวิธีนี้ ออบเจ็กต์จะมีอยู่บนเซิร์ฟเวอร์ทั้งสองเครื่อง

การดำเนินการที่เกิดขึ้นภายในกระบวนงานและฟังก์ชันที่เก็บไว้จะถูกจำลองแบบเนื่องจาก MySQL บันทึกแต่ละเหตุการณ์ DDL ที่เกิดขึ้นภายในกระบวนงานและฟังก์ชันที่เก็บไว้ หลังจากบันทึกเหตุการณ์แล้ว เหตุการณ์จะถูกจำลองไปยังเซิร์ฟเวอร์ MySQL ที่เป็นทาส แต่การเรียกที่เกิดขึ้นจริงเพื่อดำเนินการกระบวนงานที่เก็บไว้จะไม่ถูกจำลองแบบ ต่อไปนี้เป็นตัวอย่างที่กระบวนการ CALL จะไม่ทำซ้ำ เนื่องจากเป็นขั้นตอนหนึ่งในเซิร์ฟเวอร์ MySQL หลัก

ตัวอย่าง

mysql> Delimiter //
mysql> CREATE PROCEDURE myproc()
    -> BEGIN
    -> DELETE FROM mytable LIMIT 1;
    -> END //

ตอนนี้เมื่อเราเรียกโพรซีเดอร์นี้บนเซิร์ฟเวอร์ MySQL หลัก มันจะไม่ทำซ้ำ

mysql> Delimiter ;
mysql> CALL myproc();