常见问题
Sql中slices数超出gp_max_slices设置
一个query中如果slices太多,会占用更多集群资源影响集群性能,在生产环境一般会设置gp_max_slices为50,超过设置query不会执行,这个问题一般是query中关联的表很多导致,可以将query中一些操作落地成临时表,减少sql中关联的表.
锁等待问题
一个query执行非常慢,很长时间没有返回结果,很有可能是等待锁造成的
SELECT database,pid,mode,granted,mppsessionid FROM pg_locks where relation=xxxxx;
如果granted是f,那query处于锁等状态
SELECT lorpid,lormode,lorgranted,lorcurrentquery FROM gp_toolkit.gp_locks_on_relation where lorrelname=xxxxx;
通过上面查询找到lorgranted=t的lorpid,用select pg_cancel_backend(lorpid);解锁.
视图权限问题
如果报查询视图没有权限,然后赋予select权限后还是没有权限,那是因为视图的owner必须有访问源表的权限,如果视图的owner没有查询源表的权限,那么所有用户,即使超级用户也无法通过这个视图查询数据.
连接数过多问题
这个问题是超出里集群的连接数pgadmin4有可能产生这个报错,可以杀掉集群的idle连接来释放.
垃圾回收问题
在 HashData 中删除、更新数据记录时,会产⽣新的 tuple 版本,旧版本通过行头部标记为已删除以及 被哪个事务删除的。因此频繁的更新后,或者批量量的删除数据后,需要通过 vacuum、 vacuum full、 alter table redistribute 命令,回收那些旧的版本。
- AO 表使⽤ vacuum 可以回收部分垃圾((当某些数据⽂件垃圾记录超过设定⽐例时,可收缩文件大小), vacuum 时堵塞 UPDATE 和 DELETE,但是不不堵塞 INSERT。收缩⽂件大小,可能导致索引膨胀。
- HEAP 表 vacuum 可以回收垃圾,但是不收缩⽂件。
分析查询效率降低问题
SQL运行慢,性能低,有时长时间运行未结束,主要可以从以下几方面进行分析:
- 使用EXPLAIN命令查看SQL执行计划,根据执行计划判断是否需要进行SQL调优。
- 分析查询是否被阻塞,导致语句运行时间过长,可以强制结束有问题的会话。
- 审视和修改表定义。选择合适的分布列,避免数据倾斜。
- 分析SQL语句是否使用了不下推的函数,建议更换为支持下推的语法或函数。
- 对表定期做vacuum full和analyze,可回收已更新或已删除的数据所占据的磁盘空间。
- 检查表有无索引支撑,建议例行重建索引。
- 对业务进行优化,分析能否将大表进行分表设计。
资源隔离的问题
采用资源队列管理内存和资源,数据库的资源队列为管理集群负载提供了一种强有力的机制,队列可以被用来限制活动查询的数量以及队列中查询可使用的资源量。当查询被提交给数据库时,它会被加入一个资源队列,资源队列会决定该查询是否应该被接受并且何时有资源可用来执行它。集群为所有租户分配预定义好的资源队列,租户间计算资源物理上完全隔离。每个登录用户(角色)都被关联到单个资源队列,任何该用户提交的查询都由关联的资源队列处理,如果没有为用户的查询明确地分派一个队列,则会由默认队列pg_default处理。
超大规模部署的问题
HashData采用计算存储分离的架构,单集群提供超大规模部署能力。单集群的物理服务器规模可以到数千台。单个集群内的计算节点(实例)可以达到数万个。提供海量数据的存储能力,单数据库可以支持创建10000张以上的数据表,存储数据可以达到PB级。目前在金融行业的落地案例已达到近20000计算节点规模。
软硬件平台兼容性问题
兼容国内外ARM架构服务器和X86架构服务器,软件平台与硬件无强绑定关联性,支持各类主流芯片,已完成与飞腾、鲲鹏、海光等芯片的适配认证。兼容支持各类主流芯片路线服务器,已完成与浪潮、华为等服务器产品的适配认证。兼容主流服务器操作系统,包括但不限于Redhat、CentOS、麒麟、统信等。
HashData架构的相关问题
HashData基于大规模并行处理(MPP)架构构建,采用一个Coordinator节点和多个Segment节点的分布式结构。针对非云化部署的版本,Coordinator节点作为控制节点,接受并解析用户查询,随后将查询任务分解为多个子任务,并分派给各个Segment节点进行并行处理。每个Segment节点运行独立的PostgreSQL数据库实例,负责执行实际的数据存储和计算工作,并通过高效的网络通信协议进行协作,共同完成复杂的查询任务。
借助其架构优势,HashData提供卓越的查询性能、高度灵活的可扩展性和强大的容错能力。通过并行处理技术,HashData显著提升了数据处理效率,使其能够轻松应对大规模数据集的复杂分析需求。系统支持水平扩展,用户只需添加新的Segment节点,即可简单地扩展存储和计算能力。此外,HashData提供全面的容错机制,包括Coordinator节点的热备份和Segment节点的镜像备份,以确保系统在任何情况下都能保持高可用性和数据安全性。这些特性共同赋予了HashData架构强大的优势,使其成为处理大数据分析和查询任务的理想选择。
HashData产品特性的相关问题
HashData是一款标准的关系型数据库,针对非云化部署的版本,内核基于PostgreSQL 14.4,完全支持ANSI SQL标准,包括SQL-92、SQL-99、SQL-2003和SQL-2008。作为世界上最先进的MPP数据库之一,它具备高并发、高可用等多种特性,能够对复杂任务进行快速高效计算,以满足海量数据管理和计算的需求。目前在多个领域都有着广泛应用。其特性涵盖多个方面,按照核心功能和扩展能力进行分类,包括但不限于以下内容:
- 数据定义语言(DDL):HashData支持丰富的数据定义语言功能,包括创建、修改和删除数据库对象,如表、索引和视图。用户可以灵活地管理和调整数据库结构,以满足不断变化的业务需求。
- 数据操作语言(DML):通过支持高效的数据操作语言,HashData能够满足用户对数据的查询和修改需求。用户可以使用标准SQL语句进行复杂数据操作,大幅提高数据处理效率。
- 数据控制语言(DCL):HashData提供完善的数据控制功能,允许管理员管理数据库角色与权限,确保数据安全性与合规性。通过精细化的权限管理,用户能够控制对敏感数据的访问。
- 高效数据装载:HashData支持高效导入数据,兼容CSV、TXT等文本文件,支持定长及多种分隔符格式。这一功能使得大规模数据的迁移和加载变得更加简便和高效。HashData能够从FTP服务器直接加载数据文件,同时支持Kafka实时数据入库,确保用户能够实时捕获和处理数据流,满足分析需求。
- 存储模式:HashData支持多种存储模式,包括行存储、列存储以及行列混合的PAX存储模式,以适应不同的数据访问模式和应用场景,优化存储效率。
- 支持外部表:HashData支持可读可写的外部表,使得数据集成和管理变得更加便利,用户能够轻松访问和操作外部数据源。
- 支持表连接和子查询:HashData支持丰富的表连接操作,包括内连接、左外连接、右外连接、自连接及笛卡尔积操作等,用户能够灵活构建复杂的查询语句,以满足不同的数据分析需求。
- 支持分区和压缩:HashData支持范围分区和列表分区,可以根据数据特性和查询需求进行灵活配置,并具备相应的数据卸载能力,以优化数据管理和性能。HashData能够对表数据进行压缩,显著节省存储空间,提高I/O效率,降低存储成本。
- 支持存储过程:HashData支持存储过程,并在存储过程中允许分阶段提交,此功能与数据库function有本质区别。这种设计使得逻辑处理更加灵活,有助于提高性能和可维护性。
- 支持系统操作函数:HashData集成了多种系统函数,例如日期处理(CURRENT_DATE/CURRENT_TIMESTAMP/DATA_PART/DATEDIFF等)、字符串处理(LENGTH/UPPER/LOWER/SUBSTRING/CONCAT等)、分组与聚合功能(COUNT/GROUP BY/SUM/AVG/MAX/MIN等),以及集合操作(UNION/UNION ALL/INTERSECT/EXCEPT等)、EXTRACT函数和CAST函数等,方便开发者在数据处理时进行更深入的分析与转换。
- 支持ACID特性:HashData具备强大的分布式事务支持,确保数据库事务满足原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)的ACID特性。这些特性充分保证了数据处理过程的可靠性和一致性,特别是在复杂事务场景中表现尤为突出。
- 支持事务管理与锁:HashData提供全面的事务管理功能,支持事务的提交与回滚,以及读已提交的事务隔离级别。这种设计确保了事务的原子性和全局一致性,且具备行级锁支持,能够显著提升并发性能和数据的完整性。
- 支持全局序列:HashData用户可以使用全局序列生成唯一的标识符,有助于在分布式环境中实现数据的一致性与完整性。
- 支持自定义函数:HashData用户可以使用Python和C语言编写自定义函数(UDF),以扩展数据库功能,满足特定业务逻辑的需要,实现灵活的数据处理能力。
- 多样化数据库连接驱动:HashData支持多种连接驱动,包括JDBC和Python连接驱动,为开发者提供多样化的接入方式,便于用户在多种开发环境中使用。
- 全面的日志审计与分析能力:HashData具备全面的日志审计与分析功能,确保系统操作的可追溯性。这使得用户能够轻松追踪和回溯数据变化,提升数据安全性和管理效率。
- 并发处理能力:HashData能够在面对大量并发请求时保持高效的性能和响应速度,展现出强大的并发处理能力。
- 资源隔离调度分配能力:HashData通过多种方式实现资源的隔离调度,从而提升资源使用效率,确保数据库在复杂环境中平稳运行。
- 全文检索功能:HashData具有强大的全文检索能力,支持对文本数据进行快速、灵活的搜索与查询,以满足不同的应用需求。
- 非结构化数据管理:HashData支持在对象存储中管理非结构化数据,并能够使用SQL直接加载这些数据至对象存储,简化了数据的整理与分析过程。
- 多样化部署方式:HashData支持X86与ARM两种平台架构,能够部署在物理服务器、虚拟机和容器环境中,兼容多种主流Linux操作系统,包括麒麟、统信、欧拉、CentOS和Red Hat Enterprise。这种广泛的平台兼容性确保用户可以在多样化的环境中灵活部署和使用HashData。