MySQL 是一種流行的數據庫管理系統,它支持主從復制,以及并發控制。
主從復制是指在多個 MySQL 數據庫之間建立一種備份機制,其中一個數據庫被視為主數據庫,其他被稱為從數據庫。主數據庫負責在一個事務中修改數據,并將這些更改記錄在其二進制日志中。從數據庫則通過讀取主數據庫的二進制日志以同步它們的數據。這種架構提高了可靠性和性能,并且允許在主數據庫的故障時啟用快速故障轉移。
// 主服務器的配置文件 [mysqld] log-bin = /var/log/mysql/mysql-bin.log server-id = 1 // 從服務器的配置文件 [mysqld] server-id = 2 relay-log = /var/log/mysql/mysql-relay-bin.log read-only = 1
并發是指多個用戶或進程同時訪問或修改數據庫的能力。MySQL 支持多種并發控制技術,包括鎖定和 MVCC。
鎖定是一種方法,可以防止多個用戶同時訪問或修改同一行或表。行級鎖定可允許多個用戶同時訪問同一表,但只能同時修改不同的行。表級鎖定則要求對整個表進行鎖定,只允許一個用戶對其進行修改。
-- 行級鎖定示例 BEGIN; -- 開始事務 SELECT * FROM users WHERE id=1 FOR UPDATE; -- 獲取 id 為 1 的用戶行的鎖定,此時其他用戶無法修改該行 UPDATE users SET name='new name' WHERE id=1; -- 修改用戶行 COMMIT; -- 提交事務 -- 表級鎖定示例 ALTER TABLE users READ ONLY; -- 將用戶表設置為只讀
MVCC 則允許多個用戶同時修改同一行,但不會影響彼此的事務。每個事務都可以看到先前所做的更改,直到本事務開始時為止。這種技術包括多版本并發控制、快照隔離級別和可重復讀。
-- 多版本并發控制示例 BEGIN; SELECT * FROM users WHERE id=1; UPDATE users SET name='new name' WHERE id=1; COMMIT; -- 快照隔離級別示例 SET SESSION TRANSACTION ISOLATION LEVEL SNAPSHOT; BEGIN; SELECT * FROM users WHERE id=1; -- 用戶表在此時不可修改,因為它處于一個快照中 COMMIT;
MySQL 的主從復制和并發控制技術可幫助組織實現高可靠性和高性能的數據庫架構。
上一篇mysql 主從 主備
下一篇css主播