数据库开发管理中的十条建议

由于主要管理数据库平台,因此和公司各个部门的相关技术人员都打过很多交道,而后从平常沟通中,了解到很多技术人员对数据库的观念,有正确的,有错误的,今天就列一些常见的错误观念:php

1,发现锁表严重状况,会马上想到改用Innodb,好像Innodb的行级锁以后,就不会表锁了,持这种观念的开发人员不在少数,其实他们不知道在作排序或是where条件复杂的状况下,同样会产生表锁。数据库

2, 发现磁盘IO过大,会马上想到分表,(这个方向是好的),可是一问,结果是分几千张表,认为这样以后,磁盘IO压力就会降低,其实分表并不能解决磁盘IO,结合分库+分表,而后分担到不一样的物理机器,这样才能真正作到拆分,下降磁盘IO。排序

3, 大部分应用开发人员都会对表名定义的很通俗,如user,其实这样作很差,由于在进行抓包分析时候,这种没有特征的表名会致使故障排查变难。事务

4, 大部分应用开发人员不喜欢定时清理历史数据,只管存,无论清,致使项目数据量达到必定程度,再跑清理程序时候会比较影响服务。开发

5, 有些应用开发人员缺少对表数据字段的控制,一个表放100多个字段,超级恐怖。程序

6,还有的应用开发人员干脆把表定义的超级多mediutext,拿数据库当存储用了,并且是冷热数据都放一块儿,搞得偶很无语。技术

7,应用开发人员常常会跑一些奇怪的join,嵌套子查询的SQL,可是却不去explain一下到底会有多大的扫描集,我见过有跑到上亿扫描集的。数据

8,对MySQL的触发器过于依赖,可是不考虑若是在误操做以后的恢复操做,会产生业务逻辑的混乱。项目

9,不少技术开发人员一听重要如收费相关的项目,就是想要用Innodb的事务机制作保障,其实真不必,我管的项目中收费读书和英超收费频道都是用myisam的,跑了快2年了,至今没发现有用户要告公司收费不许的问题。查询

10,不少开发人员喜欢在SQL语句使用Now()这样的语句,其实应该尽可能让php程序去得到时间。由于当你经过binlog进行误操做恢复时候,你就能体会我说的意思了。

相关文章
相关标签/搜索