数据库准入规则

建表要点

为什么推荐使用表使用INNODB,而不是MYISAM或其它?

InnoDB在并发读写性况下好于MyISAM、支持事务、表不易损坏。

InnoDB中为什么推荐主键使用自增

递增与InnoDB本身数据的存储原理相契合,有利于数据的顺序存储及读取,更好的避免插入过程中的数据分页.

为什么不让使用存储过程、触发器、外键、视图、事件等

原因在于与业务耦合太大,或是某些场景下可能造成主从不一致,或是不利于线上追查问题,或是不利于统一运维等

字段及表必须要有COMMENT

主要出于这样做更有利于对共同开发或接手开发的其它同学。建立表及字段的COMMENT是一个天然的功能说明书。

字段设置为非NULL

更有利于语句查询,规避一些容易出现的问题,InnoDB本身对NULL的处理有别于其它正常数据或空数据

字段禁用ENUM,SET

原因在于不利于扩展,扩展变更表会导致表阻塞写

VARCHAR长度的选择

以UTF8不超过2600字符,GBK不超过4000字符为最佳,在业务中推荐不超过7000字符长度,这与varchar在数据页上的存储相关。

不推荐使用BLOB,TEXT等大字段

主要原因在于大字段带来更多的IO,网络开销。同时会给中间层带有影响。RD可与PM沟通是否真有必要,然后与DBA进行确认。

SQL使用要点

禁止使用SELECT *取所有字段

带来更多的网络及可能更多的IO消耗,在共同开发中更为明显。如果其它同学放入一个很大的字段,此种SQL将无意中导致带宽问题。

INSERT需要指明需要插入的字段名

表字段变更将直接导致原有正常运行的语句变成错误语句。也易出现因拼写不严禁导致的数据插错字段。

数字与字符之间不做等值查询

如字段是INT类型,结果查询使用ID=’1’这种情况。导致无法利用到索引。

INSERT ON DUPLICATE KEY的使用注意事项

允许使用,但要知道这类语句如何绕过BUG场景

  • 在5.0及以下版本中请保证此类语句的串行执行
  • 其依赖于表中唯一索引,确保唯一索引不变更。

JOIN表不推荐超过2个

并不是说JOIN3个或以上就一定会出问题,主要原因在于JOIN表越多,性能消耗越大,系统并发能力越低。

posted @ 2019-08-20 10:34  花泪哲  阅读(381)  评论(0编辑  收藏  举报