数据库表结构设计浅谈
这篇文章如题所述,只打算谈一下数据库表本身设计,同时讲到和表结构相关的性能和扩展性问题。下面讲到的东西大多是从实际经验中总结而来,算是对这项技术的一个反思。
基本上在设计数据库表的时候,首先考虑设计要满足功能需求,这是最根本的,其次是满足性能需求,再次则是满足扩展性需求,这一点在大规模系统中是必须要考虑的。功能性需求比较容易满足,下面我主要谈谈对性能和扩展性需求的一些设计方法。 没人不想速度更快,但是怎样才能更快呢。设计高性能的表,我认为主要需要做好:设计精简合理的结构、减小数据量,具体的做法下面逐个分析。 合理利用字段类型和长度。字段类型尽可能反映真实的数据含义,满足功能外字段应该尽可能的短。 比如能用int字段的就不要用bigint,如果在某一个关系表里只有两个id字段,那么bigint类型显然比int类型的大了一倍。不同的数据库系统里面varchar和text类型在数据长度限制上不一样,性能上也不一样,选取要谨慎 |