日期:2014-05-16 浏览次数:20452 次
一个功能的实现简单,但是一个功能能够在满足用户体验度的情况下实现就不是都那么容易了。例如在评教系统中,在考试系统,在选课系统中,甚至高一点到我们的12306系统中,如何在高用户量,高并发的情况下,还能保证高效的运行,这次是更难于解决的,需要我们下更多功夫所在的地方。
这里从实际项目开发中,提取一点经验,虽然看似小,但是做好了,却会对效率有很大的不同,这里从数据库的设计到应用两个方面来提一些作为我们程序员可以改善的地方。
一,设计:
1,首先就是范式的灵活运用,一般情况下三范式是我们设计数据库所要遵循的原则。但是我们需要根据实际情况实际对待,有时候适当的冗余字段,减少表之间的连接,反而会大大提高查询效率。这里不仅仅要考虑各种设计原则,还需要考虑在真正的使用当中,查询那个表多,操作那个表中的数据多等等,通过全方位的考虑,来设计表的结构。要以最后的效果为指挥棒来进行设计,不要墨守成规即可。当然了这是很难掌握的,需要很多的项目经验才能够达到我们想要的效果。
2,索引的建立:索引需要建立的适当,应该对常查询的表中添加索引,而不要一味盲目的使用索引,因为要是维护索引的付出小于他的回报,那么就没有意义,反而更加麻烦了。
3,对表进行划分:这里想提一下水平划分,垂直划分和时间轴划分
水平划分:就是根据某个字段将表分成若干个表。例如在学生管理系统中,可以根据学院将学生信息表划成更多张,更或者根据年级再次划分,这样相当于一个学院一张表或者一个年级一张表。这里想提的就是对表进行划分的粗细程度,根据数据量,查询频率等进行划分,找到一个最恰当的粒度,还是需要开发者有很高的水平的。
垂直划分: 这里其实就是三范式的灵活运用,例如还是学生信息表,还可以划分为学生基础信息表,和学生获奖信息表等,还是根据查询使用的字段进行划分,方便我们对数据的处理即可。
时间轴划分:这种情况是针对