системной таблице statement_history в корпоративной версии имеет задержку, необходимо определить различия по сравнению с корпоративной версией.
Заголовок описания: Статистическая информация в системной таблице statement_history в корпоративной версии имеет задержку, необходимо определить различия по сравнению с корпоративной версией
Тип тестирования: SQL-функционал ## Версия тестирования: 7.0.0 ## Легковесная версия: Статистическая информация в системной таблице statement_history в корпоративной версии имеет задержку, необходимо определить различия по сравнению с корпоративной версией
Операционная система и аппаратная информация (команда запроса: cat /etc/system-release, uname -a):
CentOS Linux release 7.9.2009 (Core)
Тестовая среда (одиночный узел/1 мастер x резерв x каскадный резерв):
Одиночный узел
Тестируемая функция:
Системная таблица statement_history
Тип тестирования:
Функциональное тестирование
Версия базы данных (команда запроса: gaussdb -V):
gaussdb (openGauss-lite 7.0.0-RC1 build 445ae05f) compiled at 2025-04-10 06:31:21 commit 0 last mr release
Предварительные условия:
Функции базы данных работают нормально
Шаги выполнения (пожалуйста, заполните подробные шаги выполнения):
- Установка параметров GUC
gs_guc set -D /data1/peilq_all/peilq_app/peilq_lite/dn1 -c "track_stmt_stat_level = 'L0,L0'"
gs_guc set -D /data1/peilq_all/peilq_app/peilq_lite/dn1 -c "enable_stmt_track = 'on'"
gs_ctl restart -D /data1/peilq_all/peilq_app/peilq_lite/dn1 -M primary
- Создание тестовой таблицы и вставка данных; ожидаемый результат: создание успешно, вставка данных успешно
create table t_jdbc_record_nettime_case0007(id int, name varchar(10));
insert into t_jdbc_record_nettime_case0007 values(generate_series(1,100),'name_'||generate_series(1,100));
- Выполнение цикла из 100 запросов через JDBC
select * from t_jdbc_record_nettime_case0007 where id > 50;
- Закрытие соединения conn и проверка ключевых полей системного представления statement
gsql -d postgres -p 31000 -c "select query, db_time, net_trans_time from dbe_perf.statement where query like '%t_jdbc_record_nettime_case0007%';"
- Ожидание 30 секунд и проверка ключевых полей системного представления statement_history
gsql -d postgres -p 31000 -c "select pg_sleep(30); select start_time, query, net_trans_time from dbe_perf.statement_history where query like '%select * from t_jdbc_record_nettime_case0007%'; select sum(net_trans_time) from dbe_perf.statement_history where query like '%select * from t_jdbc_record_nettime_case0007%';"
Ожидаемый результат:
- Установка параметров GUC; успешно
- Создание тестовой таблицы и вставка данных; ожидаемый результат: создание успешно, вставка данных успешно
- Выполнение цикла из 100 запросов через JDBC; успешно
- Закрытие соединения conn и проверка ключевых полей системного представления statement; успешно
- Ожидание 30 секунд и проверка ключевых полей системного представления statement_history; ожидаемое значение кэша по умолчанию 5, общее количество статистики 105
Фактический результат:
- Установка параметров GUC; успешно
- Создание тестовой таблицы и вставка данных; ожидаемый результат: создание успешно, вставка данных успешно
- Выполнение цикла из 100 запросов через JDBC; успешно
- Закрытие соединения conn и проверка ключевых полей системного представления statement; успешно
- Ожидание 30 секунд и проверка ключевых полей системного представления statement_history; фактическое количество записей при каждом запросе нестабильно, иногда 20 строк, иногда 85 строк, что указывает на наличие задержки в статистической информации системной таблицы
Анализ причины:
- Корневая причина этой проблемы
- Процесс выявления проблемы
- Другие возможные причины подобных явлений
- Есть ли временные меры для обхода проблемы
- Решение проблемы
- Ожидаемое время исправления проблемы
Логическая информация (пожалуйста, приложите файлы логов, скриншоты, coredump информацию):


Тестовый код: