高性能
- 查询优化
GaussDB 100构建于一系列强大的查询优化特性之上,这些特性可大限度地提高查询性能并提高DBA(Database Administrator)的工作效率。同时,GaussDB 100内置了基于规则的优化器(Rule-Based Optimizer)以及基于代价的优化器(Cost-Based Optimizer),这些技术造就了GaussDB 100查询的性能。
- 并行查询
对于被处理行数较多的查询,GaussDB 100实现了高效运用CPU资源的并行查询,从而大限度地发挥服务器的运行效率,提升查询性能。在GaussDB 100的并行查询中,服务器根据应用端发起的SELECT语句中的HINT文指定的大并行数,生成若干个用于并行查询的工作线程。并将整个查询语句的处理拆分后由这些工作线程分担后并行执行,从而充分利用CPU资源来完成整个查询。
图1 并行查询流程图 - MVCC
GaussDB 100支持以时间戳为基础的,基于UNDO的行级MVCC(Multi-Version Concurrency Control,多版本并发控制)。基于UNDO的MVCC机制使读取数据和修改数据互不阻塞,从而隔离历史版本数据与当前版本数据,大大提升了并发修改以及并发访问的能力。
- 并发控制
GaussDB 100通过锁、MVCC、数据库隔离级别等一系列并发控制机制来保证数据库高并发的实现。在多用户环境下同时执行多个事务并保证数据完整性,保证多线程环境下在数据库中执行的操作是安全和一致的。
- 支持将SQL执行计划缓存到Shared Pool内存区,极大提高SQL语句解析效率。
- 支持范围分区(Range Partitioning)、哈希分区(Hash Partitioning)、列表分区(List Partitioning)、间隔分区(INTERVAL Partitioning)。对分区表进行查询操作时,采用分区剪枝技术,性能提升10倍以上。
高可靠
- 闪回和回收站
通常在表数据被错误的UPDATE、DELETE、TRUNCATE和DROP时数据难以恢复,即便恢复也仅能通过PITR(Point-in-time recovery,基于时间点恢复)的方式恢复到错误操作前的时刻。这种修复方式会导致整个数据库不可用,并且一些用户不希望“撤销”的表操作也同样会被“撤销”。GaussDB 100对FLASHBACK以及RECYCLEBIN的支持,使用户可以通过指定时间戳进行闪回查询,或者指定时间戳对表进行闪回,获取到错误DELETE、UPDATE前的历史数据。通过从RECYCLEBIN中闪回TRUNCATE、以及DROP的表对象,用户可以将表数据恢复到错误操作前,大大提高了用户数据的可靠性。
- 逻辑复制
GaussDB 100支持逻辑复制功能,实现了GaussDB 100和其他异构数据库之间进行数据同步,可将特定数据库对象(通常是数据表)的变化同步到目标数据库,还可帮助用户将若干个GaussDB 100数据库实例中的数据汇总到一个GaussDB 100实例中进行数据分析。除此之外,还能帮助用户实现不中断式的业务在线升级、监控并展示关键表的数据变化、将备份数据公开给完全不同的用户权限组。
图2 逻辑复制流程图
高可用
- 支持滚动升级、闪回、在线重定义功能,保证数据库不停机、业务不中断。
- 支持全量、增量备份,同步备库,保证数据安全。
大容量
GaussDB 100支持创建bigfile表空间,这使得GaussDB 100数据库可以拥有一个单独的大容量文件,而不是若干小容量的文件构成的表空间。从而减少数据文件数量,简化运维。
低成本
- 丰富的SQL能力
GaussDB 100实现了非常强大而丰富的SQL能力,支持DQL、DML、DDL、DCL四大类上百种语法。在SQL标准方面,GaussDB 100支持SQL:2003标准,对于后续的SQL:2006、SQL:2008、SQL:2011、SQL:2016等一系列标准都实现了部分支持。在SQL标准之外GaussDB 100提供的多种生态的SQL语法,诸如在业务开发中非常受欢迎的“MERGE INTO”等语法。这些多生态的SQL能力可以帮助用户有效地降低从其他商业数据库迁移到GaussDB 100的成本。
- 支持标准接口,如ODBC/JDBC,命令行工具;能够支持应用快速迁移、上线。
- 支持基于x86、鲲鹏硬件架构的主备、分布式多种部署方式。