Mysql数据库开发三十六条军规
"石展"在这篇文章中总结了 MySQL 数据库开发的三十六条军规,这些军规来自一线的实战经验,每一军规背后都是血淋淋的教训。这些军规都是为了帮助数据库开发人员避免不少弯路,确保数据库的稳定运行。
核心军规
1. 尽量不要在数据库做运算
不要让数据库做复杂的运算,应该让数据库专注于它擅长的事。复杂运算应该交给程序端的 CPU 处理。这样可以提高数据库的性能和效率。
2. 控制单表数据量
单表数据量应该控制在一定的范围内,否则会导致数据库的性能下降。例如,纯 INT 字段不超过 1000W,含 CHAR 字段不超过 500W。
3. 合理分表
合理的分表可以提高数据库的性能。例如, USERID、DATE、AREA 等字段可以作为分表的依据。
4. 保持表结构苗条
表字段数应该保持在一定的范围内,否则会导致数据库的性能下降。例如,单表字段数控制在 20~50 个,单行不超过 200Byte。
5. 平衡范式不冗余
平衡是门艺术,需要在范式和性能之间找到平衡。遵循三大范式可以提高数据库的性能,但也需要适当地牺牲范式,加入冗余。
6. 拒绝 3B
数据库的性能会受到 3B(BIG SQL、BIG Transaction、BIG Batch)的影响。因此,应该拒绝 3B,避免数据库的性能下降。
字段类军规
21. 用好数值字段类型
应该选择合适的数值字段类型,例如 TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT、FLOAT、DOUBLE、DECIMAL 等。
22. 将字符转化为数字
可以将字符转化为数字,以提高查询的效率和减少占用的空间。
索引类军规
31. 数字型 VS 字符串型索引
数字型索引更高效,查询更快,占用空间更小。
SQL 类军规
41. 尽量不要使用 SELECT \*
应该避免使用 SELECT \*,因为它会返回所有的字段,增加数据库的负担。
42. 使用连接代替子查询
连接可以提高查询的效率,而子查询可能会导致数据库的性能下降。
43. 避免使用 OR 条件
OR 条件可能会导致数据库的性能下降,应该尽量避免使用 OR 条件。
44. 使用索引
索引可以提高查询的效率,应该尽量使用索引。
45. 避免使用负索引
负索引可能会导致数据库的性能下降,应该尽量避免使用负索引。
约定类军规
51. 统一命名约定
应该统一命名约定,避免使用不统一的命名方式。
52. 统一编码约定
应该统一编码约定,避免使用不统一的编码方式。
53. 统一注释约定
应该统一注释约定,避免使用不统一的注释方式。
这些军规可以帮助数据库开发人员避免不少弯路,确保数据库的稳定运行。但是,需要注意的是,这些军规并不是一成不变的,需要根据实际情况进行调整和优化。