国产数据库对象能力评测_视图&序列
1. 对象(视图)能力说明
先来看看各家数据库产品在视图能力的大致表现如何。
1.png
1).视图类型
- 普通视图,是数据库中的一种虚拟表,它并不存储数据,而是保存了一条查询语句。当用户访问普通视图时,数据库会根据视图的定义实时生成数据。这意味着普通视图是动态的,每次访问时都会重新计算查询结果。
- 物化视图,是一种特殊的视图,它不仅仅保存了查询逻辑,还保存了查询结果的数据。物化视图在性能优化方面具有显著的优势,特别是在处理大型数据集和复杂查询时。通过将查询结果存储在物化视图中,可以避免每次查询时都重新计算,提高查询速度和效率。物化视图在数据仓库和商业智能应用中非常常见,因为它们可以显著提高复杂查询的性能。
- 递归视图,是一种特殊的视图,通常用于处理递归查询。递归查询是指在查询过程中,查询结果需要依赖于自身的查询结果。递归视图通常用于处理层次结构的数据,如组织结构、目录树等。递归视图在处理层次结构数据和递归查询时非常有用,特别是在需要处理多级嵌套数据的场景中。
2.png
2).视图定义
- WITH CHECK OPTION 此选项用于可更新视图中。指明往该视图中 insert 或 update 数据时,插入行或更新行的数据必须满足视图定义中所指定的条件。
- WITH READ ONLY 指明该视图是只读视图,只可以查询,但不可以做其他 DML 操作;如果不带该选项,则数据库自身判断视图是否可更新的规则判断视图是否只读。有些数据库仅提供自动判断能力,不提供干预能力。
2. 对象(序列)能力说明
先来看看各家数据库产品在序列能力的大致表现如何,其中MySQL是通过Auto Increment自增字段来等价实现的。
3.png
数据库序列,是一种用于生成唯一数字标识符的核心机制,主要用于自动化生成主键、订单号等需全局唯一性的场景,其能力包括灵活控制起始值、步长及循环规则,支持高并发环境下的低锁竞争和高效生成,尤其通过缓存机制(如Oracle的CACHE)显著提升吞吐量。然而,序列存在无法严格保证连续性的缺陷,事务回滚或缓存丢失可能导致序列值断层,且不同数据库的实现差异(如Oracle独立序列与MySQL自增列)可能引发兼容性问题。性能方面,合理配置缓存可减少I/O开销,但无缓存时的高并发请求可能成为瓶颈,分布式场景下还需依赖分片策略或混合算法(如雪花ID)以避免全局锁争用。尽管序列在唯一性和效率上表现优异,但需权衡连续性缺失与资源消耗风险,对于强制连续性要求的业务,可考虑UUID或应用层生成方案,同时需定期监控序列使用率以预防溢出问题。