Computer >> Máy Tính >  >> Lập trình >> MySQL

Các hành động diễn ra bên trong các chức năng và thủ tục được lưu trữ được sao chép như thế nào?


Trên thực tế, các hành động tiêu chuẩn được thực hiện trong các thủ tục và chức năng được lưu trữ được sao chép từ máy chủ MySQL chính sang máy chủ MySQL phụ. Ngay cả việc tạo các thủ tục và chức năng được lưu trữ được thực hiện thông qua các câu lệnh DDL bình thường trên máy chủ MySQL chính cũng được sao chép sang máy chủ MySQL nô lệ. Bằng cách này, các đối tượng sẽ tồn tại trên cả hai máy chủ.

Các hành động diễn ra bên trong thủ tục và hàm được lưu trữ được sao chép vì MySQL ghi lại từng sự kiện DDL xảy ra bên trong các thủ tục và hàm được lưu trữ. Sau khi ghi lại các sự kiện, nó được sao chép sang máy chủ MySQL nô lệ. Nhưng các cuộc gọi thực tế được thực hiện để thực hiện các thủ tục được lưu trữ không được sao chép. Sau đây là một ví dụ trong đó thủ tục CALL sẽ không sao chép vì nó thực sự là một thủ tục trên máy chủ MySQL chính.

Ví dụ

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

Bây giờ khi chúng ta gọi thủ tục này trên máy chủ MySQL chính thì nó sẽ không sao chép.

mysql> Delimiter ;
mysql> CALL myproc();