【数据库】当心自动生成的schema

我们已经介绍了大部分重要数据模型的考虑(有些会严重影响性能,有些则影响较小),但是我们还没有提到自动生成的schema设计有多么糟糕。

写得很烂的schema迁移程序,或者自动生成schema的程序,都会导致严重的性能问题。有些程序存储任何东西都会使用很大的VARCHAR列,或者对需要在关联时比较的列使用不同的数据类型。如果schema是自动生成的,一定要反复检查确认没有问题。

对象关系映射(ORM)系统(以及使用它们的“框架”)是另一种常见的性能噩梦。一些ORM系统会存储任意类型的数据到任意类型的后端数据存储中,这通常意味着其没有设计使用更优的数据类型存储。有时候会为每个对象的每个属性使用单独的行,甚至使用基于时间戳的版本控制,导致单个属性会有多个版本存在。

这种设计对开发者很有吸引力,因为这使得他们可以用面向对象的方式工作,不需要考虑数据是怎么存储的。然而,“对开发者隐藏复杂性”的应用通常不能很好的扩展。我们建议在用性能交换开发人员的效率之前仔细考虑,并且总是在真实大小的数据集上做测试,这样就不会太晚才发现性能问题。

你可能感兴趣的:(软件设计与实现,程序代码,数据库,mysql,数据库开发,dba)