首页 > 数据库 >KingbaseES 数据库创建索引慢的可能原因

KingbaseES 数据库创建索引慢的可能原因

时间:2024-04-03 17:12:59浏览次数:24  
标签:变慢 创建 数据库 索引 速度 TABLE KingbaseES ALTER

1.表大小

如果表太大,数据很多,索引创建的时候,会导致创建索引的时间很慢。
如果表很大,可以考虑重新设计表结构或拆分表。还可以考虑使用分区表,使子分区的数据减少,创建分区表也可以使索引变小,增加索引创建速度,有助于查询效率。

2.索引类型

不同类型的索引建立的速度可能会有所不同,因为存储的结构不一样。例如,B-tree索引通常比GiST索引建立得更快。
不同的索引策略适用于不同的场景,选择合适的索引策略可以提高建索引的速度和效率。

3.查看服务器负载

检查系统是否存在其他进程占用了大量的系统资源,如CPU、内存和磁盘IO等。可以使用top和vmstat,iostat等命令查看。

4.磁盘空间

如果磁盘空间不足,可能会导致索引建立速度变慢。

5.检查并发连接数

如果并发连接数过高,可能会导致建索引的速度变慢。可以调整数据库的最大并发连接数参数。

6.禁用触发器和约束

在建立索引时,可以考虑禁用触发器和约束,以避免对建立索引的影响。完成索引建立后,再重新启用触发器和约束。
禁用触发器
ALTER TABLE TABLE_NAME DISABLE TRIGGER trigger_name;
开启触发器
ALTER TABLE TABLE_NAME ENABLE TRIGGER trigger_name;
禁用/开启一张表上所有触发器
ALTER TABLE table_name DISABLE TRIGGER all;
ALTER TABLE table_name ENABLE TRIGGER all;

7.通过调整参数来使用更多的内存创建索引

maintenance_work_mem参数:

maintenance_work_mem默认值(64MB)是很低的,它是用于维护任务的内存设置,会影响如命令:VACUUM,RESTORE,CREATE INDEX,ADD FOREIGN KEY和ALTER TABLE等操作的性能。使用更多的内存空间时创建索引的速度提升会非常明显。
在创建索引的时候,它控制构建索引时使用的最大内存量。我们知道,构建B树索引时,必须对数据排序,如果要排序的数据在maintenance_work_mem内存中放置不下,它将会溢出到磁盘中。
因此在执行CREATE INDEX命令之前,可以在本地会话中使用SET命令临时增加该值。

shared_buffers和work_mem参数:

shared_buffers决定了Kingbase在内存中数据页缓冲区的大小,
work_mem参数决定了其内存中执行sort和hash操作所能使用的内存大小。 如果这两个参数设置不合理,也可能导致创建索引变慢。

8.Kingbase支持并行创建索引

在建立索引时可以使用并行创建索引,以提高创建索引的速度。
并行进程数设置分为两类,第一类是并行查询,并行查询的并行度由 max_parallel_workers_per_gather参数控制。
第二类是维护命令(例如 CREATE INDEX),维护命令的并行度由 max_parallel_maintenance_workers 参数控制。
并行创建索引时,使cpu核数和该参数相匹配,max_parallel_maintenance_workers的参数设置不要超过cpu的逻辑核心数。
可通过 ALTER TABLE 方式禁止表上的并行创建索引,如下禁止表t1上的所有并行创建索引
ALTER TABLE t1 SET (parallel_workers=0);
如果想恢复指定表上的parallel_workers参数设置,可采用如下方式
ALTER TABLE t1 RESET(parallel_workers);

9.使用SSD等高性能磁盘

SSD硬盘相比传统的机械硬盘具有更快的读写速度,可以显著提高创建索引的速度。

10.检查锁情况

锁等待可能导致索引创建速度变慢。可以通过sys_locks视图检查是否有锁阻塞。
可参考文章:https://www.cnblogs.com/kingbase/p/16228466.html

11.使用数据预热

使用sys_prewarm插件使数据预加载进shared_buffer,创建索引时,可提高创建索引的速度。

12.使用Partial Index(部分索引)

可以针对列的部分数据建立索引,减小索引的大小,从而加快创建索引的速率。
在建索引时可以设置过滤条件,只对符合条件的数据建立索引。这样可以减少索引的大小和建立索引的时间,从而提高索引建立的速度。当然要符合实际业务场景。

13.避免使用大事务

建索引时,尽量避免使用大事务。大事务会占用大量的系统资源,可能会导致创建索引速度变慢。可以拆分成多个小事务来处理,从而提高创建索引的速度和效率。

14.避免同时创建多个索引

同时创建多个索引会增加系统负担,可能会导致索引建立速度变慢。
可以通过合并索引来优化建索引的速度和效率。
因为Kingbase数据库可以在同一列上建立多个索引。这些索引仅名字不一样,然而为了维护索引,dml语句会变慢。所以,不要忽视这个关键点。

标签:变慢,创建,数据库,索引,速度,TABLE,KingbaseES,ALTER
From: https://www.cnblogs.com/kingbase/p/17736776.html

相关文章

  • KingbaseES 数据库IO优化方向总结
    前言数据库中的IO性能是优化中的重中之重,根据木桶原理,解决了IO这个最容易引起业务堵塞的问题,就能解决绝大部分性能问题。下面从几个方面总结一下I/O优化问题。第一,使用相对速度快的高性能存储设备。一般会考虑使用固态硬盘(SSD)或RAID阵列以获得更快的读写速度。高性能低......
  • openGauss 全文索引
    全文索引可获得性本特性自openGauss1.1.0版本开始引入。特性简介openGauss中提供的全文索引功能可以对文档进行预处理,并且可以使后续的搜索更快速。客户价值openGauss全文索引功能提供了查询可读性文档的能力,并且通过查询相关度将结果进行排序。特性描述构建全文索引的......
  • Python访问mysql与sqlite3数据库
    在Python中,数据库访问是一个常见的需求,无论是在Web开发还是数据分析中都非常重要。Python提供了多种数据库访问库,使得与不同类型的数据库进行交互变得简单。在这篇博客中,我们将介绍如何使用Python进行数据库访问操作,并提供一些代码示例。Python数据库访问概述Python中的数据......
  • 03 MySQL数据库的基本操作-DDL
    DDL(DataDefinitionLanguage),数据定义语言,该语言部分包括以下内容对数据库的常用操作对表结构的常用操作修改表结构可以在命令行里面进行如下的操作;也可以在Navicat图形化工具中操作创建数据库createdatabase数据库名[库选项]例如:createdatabase数据库......
  • SpringBoot集成Flink-CDC,实现对数据库数据的监听
    一、什么是CDC?  CDC是 ChangeDataCapture(变更数据获取) 的简称。核心思想是,监测并捕获数据库的变动(包括数据或数据表的插入、更新以及删除等),将这些变更按发生的顺序完整记录下来,写入到消息中间件中以供其他服务进行订阅及消费。二、Flink-CDC是什么?CDCConnector......
  • idea从零到精通07之idea数据库管理,作为移动开发程序员
    作者简介引言导航热门专栏推荐视频讲解概述一、打开Database管理界面二、配置数据库连接三、在图形化界面操作四、在控制台查询五、在控制台执行操作六、数据导出方法1,直接在结果控制台导出方法2,在Database管理区中导出七、数据结果的多种展示......
  • MySQL数据库:第十六章:sql高级函数,和腾讯大牛的技术面谈
    CURDATE()或CURRENT_DATE()返回当前的日期CURTIME()或CURRENT_TIME()返回当前的时间DATE_ADD(date,INTERVALintkeyword)返回日期date加上间隔时间int的结果(int必须按照关键字进行格式化),如:SELECTDATE_ADD(CURRENT_DATE,INTERVAL6MONTH);DATE_FORMAT(date,fmt......
  • 【数据库】数据库系列学习4:数据库学习路径
    学习数据库的路径可以分为以下几个阶段,每个阶段都有不同的学习内容和建议:1.初级阶段1.1理论基础学习关系型数据库的基本概念,如表、行、列、键等。了解SQL语言的基本语法和常用操作,包括创建表、插入数据、查询数据、更新数据、删除数据等。1.2实践操作安装并使用一款关......
  • Gbase8s数据库保姆级安装部署(RHAC和SSC) 三
    一、RHAC集群的安装部署(一)RHAC集群的介绍和环境检查1.RHAC和HAC集群的比较    RHAC集群是gbase8s数据库双机同步的一种方式,其和HAC集群在安装部署上的步骤大部分是相同的(环境准备、软件安装、实例初始化、数据同步),而且其和HAC集群的同步方式也是一样的,只有在主机和......
  • MySQL数据库报错:Can‘t create/write to file ‘/tmp/ibXXX‘ (Errcode: 13 - Permiss
    在进行MySQL数据库的安装和配置过程中,用户有时会遇到各种错误信息,这些错误可能会阻碍安装过程或初次运行。理解和解决这些错误对于确保数据库平稳运行至关重要。本文旨在探讨MySQL安装过程中可能出现的一个特定错误,提供关于该错误的详细信息、可能的原因及相应的解决方案。......