MySQL 是一款常用的關系型數據庫管理系統,但在使用過程中可能會出現行鎖和表鎖的問題。下面介紹幾種方法來避免這些問題。
方法一:使用讀寫分離
# 配置主從復制
master-host = 192.168.0.101
master-user = root
master-password = rootpasswd
slave-host = 192.168.0.102
slave-user = root
slave-password = rootpasswd
方法二:使用分區表
# 創建分區表
CREATE TABLE user (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(30) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB
PARTITION BY RANGE (id) (
PARTITION p0 VALUES LESS THAN (100),
PARTITION p1 VALUES LESS THAN (200),
PARTITION p2 VALUES LESS THAN MAXVALUE
);
方法三:使用悲觀鎖
# 查詢時使用悲觀鎖
SELECT * FROM user WHERE id = 1 FOR UPDATE;
方法四:使用樂觀鎖
# 更新時使用樂觀鎖
UPDATE user SET age = age + 1, version = version + 1 WHERE id = 1 AND version = 1;
總之,避免行鎖和表鎖需結合具體情況和業務需求,如使用以上幾種方法就可避免這類問題。