案例说明:

在执行表数据查询时,出现下图所示错误,索引故障导致表无法访问,后重建索引问题解决。本案例复现了此类故障解决过程。

适用版本:

KingbaseES V8R3/R6

一、创建测试环境


  1. # 表结构信息
  2. prod=# \d+ test1
  3. Table "public.test1"
  4. Column| Type |Collation| Nullable |Default| Storage | Stats target | Description
  5. --------+---------+-----------+----------+---------+----------+--------------+-------------
  6. id |integer||notnull|| plain ||
  7. v_name |varchar|||| extended ||
  8. Indexes:
  9. "test1_pkey" PRIMARY KEY, btree (id)
  10. "test1_name_ind" btree (v_name)
  11. Access method: heap
  12. # 插入测试数据
  13. prod=# insertinto test1 values (generate_series(1,10000),'usr'||generate_series(1,10000));
  14. INSERT010000
  15. prod=# selectcount(*) from test1;
  16. count
  17. -------10000
  18. (1row)
  19. # 查看索引应用
  20. prod=# explain analyze select*from test1 where v_name='usr2';
  21. QUERY PLAN
  22. -----------------------------------------------------------------------------------------------------------------------
  23. Index Scan using test1_name_ind on test1 (cost=0.29..8.30rows=1 width=11) (actual time=0.023..0.024rows=1 loops=1)
  24. Index Cond: ((v_name)::text ='usr2'::text)
  25. Planning Time: 0.055 ms
  26. Execution Time: 0.038 ms
  27. (4rows)

二、模拟数据文件故障

1、查看索引文件存储路径


  1. prod=# select pg_relation_filepath('test1_name_ind');
  2. pg_relation_filepath
  3. ----------------------
  4. base/16385/26800
  5. (1row)

2、模拟数据文件被破坏


  1. [kingbase@node102 data]$ ls -lh base/16385/26800
  2. -rw------- 1 kingbase kingbase 240K Nov 1715:01 base/16385/26800
  3. [kingbase@node102 data]$ dd if=/dev/zero of=/data/kingbase/v8r6_c6/data/base/16385/26800 bs=8k count=22+0 records in2+0 records out
  4. 16384 bytes (16 kB) copied, 0.000147959 s, 111 MB/s
  5. [kingbase@node102 data]$ ls -lh base/16385/26800
  6. -rw------- 1 kingbase kingbase 16K Nov 1715:04 base/16385/26800# 如下所示索引故障导致表访问错误
  7. prod=# select * from test1;ERROR: index "test1_name_ind" contains unexpected zero page at block 0HINT: Please REINDEX it.

三、重建索引解决故障

1、查看表索引信息


  1. prod=# \d+ test1;
  2. Table"public.test1"Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
  3. --------+---------+-----------+----------+---------+----------+--------------+-------------
  4. id | integer | | not null | | plain | |
  5. v_name | varchar | | | | extended | |
  6. Indexes:
  7. "test1_pkey"PRIMARYKEY, btree (id)
  8. "test1_name_ind" btree (v_name)
  9. Access method: heap

2、重建索引


  1. # 索引重建
  2. prod=# reindex index test1_name_ind;
  3. REINDEX
  4. #如下所示,重建索引后表数据访问正常
  5. prod=# select*from test1 limit 3;
  6. id | v_name
  7. ----+--------1| usr1
  8. 2| usr2
  9. 3| usr3
  10. (3rows)
  11. prod=# select*from test1 where v_name='usr2';
  12. id | v_name
  13. ----+--------2| usr2
  14. (1row)
  15. prod=# explain analyze select*from test1 where v_name='usr2';
  16. QUERY PLAN
  17. -----------------------------------------------------------------------------------------------------------------------
  18. Index Scan using test1_name_ind on test1 (cost=0.29..8.30rows=1 width=11) (actual time=0.023..0.024rows=1 loops=1)
  19. Index Cond: ((v_name)::text ='usr2'::text)
  20. Planning Time: 0.055 ms
  21. Execution Time: 0.038 ms
  22. (4rows)

四、总结

对于KingbaseES数据库,索引块的损坏会影响到表数据的正常访问,对于索引块故障处理比较简单,直接重建索引一般都可以解决此类问题。

文章知识点与官方知识档案匹配,可进一步学习相关知识
MySQL入门技能树首页概览59642 人正在系统学习中

[转帖]金仓数据库KingbaseES V8R6索引坏块故障处理的更多相关文章

  1. 通过ODBC接口访问人大金仓数据库

      国产化软件和国产化芯片的窘境一样,一方面市场已经存在性能优越的同类软件,成本很低,但小众的国产化软件不仅需要高价买入版权,并且软件开发维护成本高:另一方面,国产软件目前普遍难用,性能不稳定,Bug ...

  2. QT 之 ODBC连接人大金仓数据库

    QT 之 使用 ODBC 驱动连接人大金仓数据库 获取数据库驱动和依赖动态库 此操作可在人大金仓官网下载与系统匹配的接口动态库,或者从架构数据库的源码中获取驱动和依赖动态库 分别为: 驱动动态库:kd ...

  3. 通过jmeter连接人大金仓数据库

    某项目用的人大金仓数据库,做性能测试,需要用jmeter来连接数据库处理一批数据.jmeter连接人大金仓,做个记录. 1. 概要 在"配置元件"中添加"JDBC Con ...

  4. PostgreSQL 索引坏块处理

    今天应用反应有张表查询报错,报错信息如下 back=# select max(create_time) from public.tbl_index_table where create_time> ...

  5. PostgreSQL 恢复大法 - 恢复部分数据库、跳过坏块、修复无法启动的数据库

    转载自:https://yq.aliyun.com/articles/582880 背景 一个较大的数据库,如何只恢复一部分数据(例如只恢复某个DB). 如果访问有坏块的表. 如何从无法启动的数据库中 ...

  6. linux安装国产数据库(金仓数据库,达梦数据库,南大通用数据库)

    今天在公司做的任务是,在Linux的环境下安装三种数据库,结果一种数据库也没有安装好,首先遇到的问题是安装南大通用数据库遇到安装的第五步,就出现问题了,问题是Gbase SDK没有安装成功,以及Gba ...

  7. Rocky4.2下安装金仓v7数据库(KingbaseES)

    1.准备操作系统 1.1 系统登录界面 1.2 操作系统版本信息 jdbh:~ # uname -ra Linux jdbh -x86_64 # SMP Fri Dec :: CST x86_64 G ...

  8. 润乾配置连接kingbase(金仓)数据库

     问题背景 客户根据项目的不同,使用润乾连接的数据库类型各种各样,此文针对前几日使用润乾设计器连接kingbase金仓数据库做一个说明. kingbase金仓数据库是一款国产数据库,操作方式和配置 ...

  9. 对Oracle数据库坏块的理解

    1.物理坏块和逻辑坏块 在数据库中有一个概念叫做数据块的一致性,Oracle的数据块的一致性包括了两个层次:物理一致性和逻辑一致性,如果一个数据块在这两个层次上存在不一致性,那就对应到了我们今天要要说 ...

  10. 金仓Kingbase数据库网页数据维护分析工具

    金仓Kingbase是优秀的国产数据库产品,在能源,政务,国防等领域广泛使用, 现在TreeSoft数据库管理系统已支持Kingbase了,直接在浏览器中就可以操作查看Kingbase数据了,十分方便 ...

随机推荐

  1. Java 给PPT中的表格设置分布行和分布列

    在表格中可设置"分布行"或"分布列"将行高.列宽调整为协调统一的高度或宽度,是一种快速实现表格排版的方法之一.下面,通过Java后端程序代码介绍如何在PPT幻灯 ...

  2. 提升80%上云集成效率, TA是如何做到的

    摘要:基于华为云开天aPaaS,提升80%上云集成效率,降低50%集成成本 没有充足资金,没有足够的项目规划和过渡时间,也没有经验丰富的IT团队支持,中小企业的上云路可谓是困难重重.如何帮助企业高效上 ...

  3. 跟我学ModelArts丨探索ModelArts平台个性化联邦学习API

    摘要:ModelArts提供了一个实现个性化联邦学习的API--pytorch_fedamp_emnist_classification,它主要是让拥有相似数据分布的客户进行更多合作的一个横向联邦学习 ...

  4. 6种方法帮你搞定SimpleDateFormat类不是线程安全的问题

    摘要:本文主要讲述在高并发下SimpleDateFormat类为何会出现安全问题,以及如何解决SimpleDateFormat类的安全问题. 本文分享自华为云社区<[高并发]SimpleDate ...

  5. 云小课 | DSC:快速识别敏感数据并脱敏

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要: 华为云数据安全中 ...

  6. 火山引擎DataLeap推出两款大模型应用: 对话式检索与开发 打破代码语言屏障

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群   自上世50年代,以"计算机"作为代表性象征的信息革命开始,社会对于先进生产力的认知便开始逐 ...

  7. IIS 设置超时时间

    高级设置 => 限制 => 连接超时(秒),默认120秒,根据实际情况调整

  8. Appium常用定位方法讲解

    Appium常用定位方法讲解 对象定位是自动化测试中很关键的一步,也可以说是 最关键的一步,毕竟你对象都没定位那么你想操作也不行,下面我们来看常用的一些定位方式. ID定位(取resource-id的 ...

  9. vue 基础学习 一

    1. vue 使用快速入门三步走 (1) 新建 HTML 页面,引入 Vue.js文件 <!DOCTYPE html> <html> <head> <meta ...

  10. ChatGPT访问互联网,不神秘了

    我测试了一下,它其实调用了微软必应的api,搜索了关键词而已 比如我问它:https://twitter.com/elonmusk 马斯克最近在忙什么 它的回答是: 近期,马斯克在做的一些事情包括: ...