第八章:最佳实践¶
设计原则¶
范式与反范式¶
字段类型选择¶
-- 整数类型
TINYINT -- 1字节,-128~127
SMALLINT -- 2字节
INT -- 4字节
BIGINT -- 8字节
-- 字符串类型
CHAR(n) -- 定长,最大255
VARCHAR(n) -- 变长,最大65535
TEXT -- 长文本
-- 时间类型
DATETIME -- 8字节,范围广
TIMESTAMP -- 4字节,自动更新
安全实践¶
防止 SQL 注入¶
# 使用参数化查询
cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))
# ORM 方式
user = session.query(User).filter(User.id == user_id).first()
权限管理¶
-- 创建只读用户
CREATE USER 'readonly'@'%' IDENTIFIED BY 'password';
GRANT SELECT ON mydb.* TO 'readonly'@'%';
-- 创建应用用户
CREATE USER 'appuser'@'%' IDENTIFIED BY 'password';
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'appuser'@'%';
备份策略¶
mysqldump¶
# 全库备份
mysqldump -u root -p --all-databases > all_backup.sql
# 单库备份
mysqldump -u root -p mydb > mydb_backup.sql
# 单表备份
mysqldump -u root -p mydb users > users_backup.sql
# 恢复
mysql -u root -p mydb < mydb_backup.sql
主从复制¶
-- 主库配置
[mysqld]
server-id = 1
log-bin = mysql-bin
-- 从库配置
[mysqld]
server-id = 2
relay-log = relay-bin
小结¶
最佳实践要点:
- 设计原则:范式与反范式平衡
- 字段类型:选择合适的类型
- 安全实践:防注入、权限管理
- 备份策略:mysqldump、主从复制
完成本教程后,你应该能够设计和管理高性能 MySQL 数据库。