| 订阅 | 在线投稿
分享
 
 
 

探讨大型项目中的主要问题─数据库操作

来源:互联网  宽屏版  评论
2008-07-11 05:57:47

在大型项目中,我想在困扰大家的主要问题为数据库的操作,本人就在项目中遇到了一些问题,在这里和大家交流下。

◆1、 本人项目中有一个复杂视图,数据量在2千万以上,每次对这个视图进行操作时,反映都很慢,而且这个视图还经常用到,我当时想到的是缓存起来,可是因为数据量很大,缓存到服务器端是不现实的,我们项目组用到了一种解决方案,把此视图填充到物理表中,对此物理表设置索引,但是又怕用户查询记录时正好在填充物理表的时候,所以可以设置2个物理表,来回切换,即:第一次填充物理表A,第二次填充物理表B,下次再填充物理表A,如此反复,和.NET的根据时间缓存数据原理类似。大家可能会想到索引视图,可是索引视图限制太多,例如:不允许使用outer join 运算;表也不能与他自己连接;不允许进行子查询;定义索引视图的SELECT 语句不能包含下列关键词:UNION、TOP、DISTINC、COMPUTE或者HAVING;不能包含通配符,所以不是很不实用。

◆2、 不要在数据表中用到自增长字段,因为再和其它数据库导insert脚本时,是不能控制自增长列的值的。

◆3、 尽量少用外键约束,可以靠代码实现,外键约束会使数据库维护起来相当麻烦,尤其是在大项目中。

在大型项目中,我想在困扰大家的主要问题为数据库的操作,本人就在项目中遇到了一些问题,在这里和大家交流下。 ◆1、 本人项目中有一个复杂视图,数据量在2千万以上,每次对这个视图进行操作时,反映都很慢,而且这个视图还经常用到,我当时想到的是缓存起来,可是因为数据量很大,缓存到服务器端是不现实的,我们项目组用到了一种解决方案,把此视图填充到物理表中,对此物理表设置索引,但是又怕用户查询记录时正好在填充物理表的时候,所以可以设置2个物理表,来回切换,即:第一次填充物理表A,第二次填充物理表B,下次再填充物理表A,如此反复,和.NET的根据时间缓存数据原理类似。大家可能会想到索引视图,可是索引视图限制太多,例如:不允许使用outer join 运算;表也不能与他自己连接;不允许进行子查询;定义索引视图的SELECT 语句不能包含下列关键词:UNION、TOP、DISTINC、COMPUTE或者HAVING;不能包含通配符,所以不是很不实用。 ◆2、 不要在数据表中用到自增长字段,因为再和其它数据库导insert脚本时,是不能控制自增长列的值的。 ◆3、 尽量少用外键约束,可以靠代码实现,外键约束会使数据库维护起来相当麻烦,尤其是在大项目中。
󰈣󰈤
 
 
 
>>返回首页<<
 
 热帖排行
 
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
©2005- 王朝网络 版权所有