GBase 8t数据库逻辑设计上,有什么需要注意的地方

GBase 8t数据库逻辑设计上,有什么需要注意的地方

参与3

1同行回答

spiderliujiespiderliujie软件架构设计师GBase
在进行数据库逻辑设计阶段,需要从如下一些细节来考虑数据库性能问题。       A.反范式设计       从第一范式(1NF)到第三范式(3NF),越规范的范式表示表的模式越精确,可以减少冗余数据。在数据量较小的系统中,我们尽量遵守范式要求进...显示全部

在进行数据库逻辑设计阶段,需要从如下一些细节来考虑数据库性能问题。

       A.反范式设计

       从第一范式(1NF)到第三范式(3NF),越规范的范式表示表的模式越精确,可以减少冗余数据。在数据量较小的系统中,我们尽量遵守范式要求进行规范化设计。但在实际的系统中,特别是数据量较大的大型系统中,我们往往采用第一范式、第二范式。因为更高的范式要求信息更深的“分离”,这将导致关系越复杂,从而出现更多的表与表的关联操作越频繁。从而影响性能。所以,实际系统中经常采用反规范化—冗余设计。某一字段属于一个表,但它又同时出现在另一个或多个表,代价是需要维护数据的一致性。适当的数据冗余,可以减少表与表之间的连接次数,可以提高查询的性能。我们应该在数据冗余度和性能之间找到合适的平衡点。

       B.避免使用外键(foreignkey )

       外键能保证数据的完整性和一致性,能够增加ER图的可读性。外键需检验子表与主表数据的关系。如Insert 子表时,需要查询新增记录是否在主表中已存在;在Delete主表时,需要检查是否子表有记录。从而带来较大的开销,特别对于大数据表情况,不应该设计外键,否将带来严重的性能问题。

      

       C.避免使用Trigger

       通过trigger可以进行数据关联处理,复杂的trigger处理过程降低性能。因为Trigger采用逐一处理的方式,导致批量处理性能低下。

       D.尽可能少使用view

       View可以屏蔽底层信息,提高开发简便和提高安全。但是,复杂的view可能导致优化器错误的执行路径。如下只是一个复杂view引起SQL执行计划错误的一个示例,建议对于复杂的SQL,尽量避免使用View方式。

收起
互联网服务 · 2016-05-23
浏览859

提问者

junxi
软件开发工程师nttdata
擅长领域: 数据库GBase 8t国产数据库

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2016-05-23
  • 关注会员:2 人
  • 问题浏览:1863
  • 最近回答:2016-05-23
  • X社区推广