Обратил внимание на следующую вещь.
Запрос ниже обязательно вернет несколько десятков строк
оказывается
что означает
Запрос ниже обязательно вернет несколько десятков строк
select rsgname
, query
, user
from pg_stat_activity
where rsgname = 'unknown'
оказывается
When resource groups are enabled. Only query dispatcher (QD) processes will have
a rsgid and rsgname. Other server processes such as a query executer (QE) process
or session connection processes will have a rsgid value of 0 and a rsgname value of
unknown. QE processes are managed by the same resource group as the dispatching
QD process.
что означает
Когда группы ресурсов включены. Только процессы диспетчера запросов (QD) будут иметь `rsgid` и `rsgname`. Другие серверные процессы, такие как процесс исполнителя запросов (QE) или процессы подключения сеанса, будут иметь значение `rsgid`, равное `0`, и значение `rsgname`, равное `unknown`. Процессы QE управляются той же группой ресурсов, что и диспетчерский процесс QD.
👍5
Запрос для того что бы посмотреть конфиг, если Greenplum развернут в облаке и к нему нет доступа по ssh
gp_execution_segment - возвращает номер сегмента, где был выполнен запрос
gp_dist_random - псевдофункция, которая позволяет получить доступ к данным на каждом сегменте
upd. я не первый это в чат принес, первым был https://t.me/GreenplumSQLClub/173?comment=74
select gp_execution_segment() seg_id, *
from pg_settings
WHERE name = 'max_connections'
UNION ALL
select gp_execution_segment() seg_id, *
from gp_dist_random('pg_settings') dc
WHERE name = 'max_connections'
ORDER BY seg_id
gp_execution_segment - возвращает номер сегмента, где был выполнен запрос
gp_dist_random - псевдофункция, которая позволяет получить доступ к данным на каждом сегменте
upd. я не первый это в чат принес, первым был https://t.me/GreenplumSQLClub/173?comment=74
👍1
Нашел еще вот такой запрос в исходниках:
Этот запрос объединяет все просочившиеся временные схемы на координаторе, а также все сегменты.
Первая часть запроса использует gp_dist_random, который получает просочившиеся временные схемы только из сегментов
Вторая часть запроса получает просочившиеся временные схемы только из координатора
может кому и пригодится
Этот запрос объединяет все просочившиеся временные схемы на координаторе, а также все сегменты.
Первая часть запроса использует gp_dist_random, который получает просочившиеся временные схемы только из сегментов
Вторая часть запроса получает просочившиеся временные схемы только из координатора
SELECT nspname, replace(nspname, 'pg_temp_','')::int as sess_id
FROM gp_dist_random('pg_namespace')
WHERE nspname ~ '^pg_temp_[0-9]+'
может кому и пригодится
👍1
Как думаете где выполнится данная функция? на сегментах или нет?
И как можно изменить запрос что бы он выполнился таргетировано на мастере
И как можно изменить запрос что бы он выполнился таргетировано на мастере
SELECT gp_execution_segment(), *
FROM generate_series(1,10) x
👍2
Очень интересная схема для изучения, нашел в чате, вот ссылка
https://t.me/greenplum_russia/79682
Статья с хабра про файловые дескрипторы AO таблиц
https://habr.com/ru/companies/arenadata/articles/576418/
UPD. еще одна статья
https://habr.com/ru/companies/axenix/articles/832126/
https://t.me/greenplum_russia/79682
Статья с хабра про файловые дескрипторы AO таблиц
https://habr.com/ru/companies/arenadata/articles/576418/
UPD. еще одна статья
https://habr.com/ru/companies/axenix/articles/832126/
Запрос генерирует список сегментов, согласно их количеству:
select gp_execution_segment() seg_id
from gp_dist_random('gp_id')
Задача найти спилл файл на диске
https://telegra.ph/Zadacha-najti-spill-fajl-na-diske-03-19
Скрины приложил.
Запрос скорее всего не выполнится и упадет из за нехватки памяти, но пока он крутится можно провести исследование.
https://telegra.ph/Zadacha-najti-spill-fajl-na-diske-03-19
Скрины приложил.
Запрос скорее всего не выполнится и упадет из за нехватки памяти, но пока он крутится можно провести исследование.
🔥1
Посмотреть информацию о табличных пространствах
вывести подробную информацию по табличному пространству:
SELECT oid, * FROM pg_tablespace ;
вывести подробную информацию по табличному пространству:
WITH spc AS (SELECT * FROM gp_tablespace_location(1663))
SELECT seg.role, spc.gp_segment_id as seg_id, seg.hostname, seg.datadir, tblspc_loc
FROM spc, gp_segment_configuration AS seg
WHERE spc.gp_segment_id = seg.content ORDER BY seg_id;
🔥2
THE 2024 MAD (MACHINE LEARNING, ARTIFICIAL INTELLIGENCE & DATA) LANDSCAPE
https://mattturck.com/landscape/mad2024.pdf
https://mad.firstmark.com/
https://mattturck.com/landscape/mad2024.pdf
https://mad.firstmark.com/
GreenplumSQLClub
https://hub.docker.com/r/sql4mpp/greenplum_adgp docker pull sql4mpp/greenplum_adgp Билд greenplum в докер контейнере на исходнике: https://github.com/arenadata/gpdb Как минимум можно тестовую базу запустить по инструкции: https://github.com/arenadata/gpdb/tree/adb…
в продолжении данной сборки.
Для того что бы можно было воспользоваться в докер контейнере необходимо скачать репозиторий dev_adgp и запустить по инструкции docker образ
Create docker image:
Run docker image:
Connect to docker image:
(input yes and password gpadmin)
Create cluster:
Stop cluster
Общая инструкция - расположена тут (https://github.com/arenadata/gpdb/tree/adb-6.x/gpAux/gpdemo)
При необходимости можно увеличивать количество сегментов, либо изменять параметры запуска и конфигурации.
connect from localhost with psql utility
psql (password gpadmin)
Для того что бы можно было воспользоваться в докер контейнере необходимо скачать репозиторий dev_adgp и запустить по инструкции docker образ
git clone https://github.com/sql-mpp-gp/dev_adgp
Create docker image:
docker build -t gpdb .
Run docker image:
docker run -v ./gpdemo:/tmp/gpdb/gpdemo -d -p2222:22 gpdb
Connect to docker image:
ssh gpadmin@localhost -p 2222
(input yes and password gpadmin)
Create cluster:
make cluster
Stop cluster
gpstop
Общая инструкция - расположена тут (https://github.com/arenadata/gpdb/tree/adb-6.x/gpAux/gpdemo)
При необходимости можно увеличивать количество сегментов, либо изменять параметры запуска и конфигурации.
connect from localhost with psql utility
psql (password gpadmin)
psql -p6000 -hlocalhost -Ugpadmin -dpostgres
GitHub
GitHub - sql-mpp-gp/dev_adgp: sanbox for arenadata db
sanbox for arenadata db. Contribute to sql-mpp-gp/dev_adgp development by creating an account on GitHub.
🔥2
Наткнулся на алгоритм вычисления hash для номера сегмента по ключу дистрибьюции таблицы, исходный код можно посмотреть OpenGPDB и Arenadata
строки 549~560; 255~287.
Думаю почитать про сам hash алгоритм :
https://arxiv.org/abs/1406.2294
до 6 версии он не использовался поэтому есть параметр gp_use_legacy_hashops который позволяет указать использование легаси хэш-функции для дистрибьюции данных
строки 549~560; 255~287.
Думаю почитать про сам hash алгоритм :
https://arxiv.org/abs/1406.2294
до 6 версии он не использовался поэтому есть параметр gp_use_legacy_hashops который позволяет указать использование легаси хэш-функции для дистрибьюции данных
🔥1
Как вычисляется номер сегмента, который будет работать с distributed replicated таблицей, кажется так (а если порыться в исходниках можно найти правила для сегментов на которых выбирается выполнения pxf - внешних таблиц, но там чуть другая формула ):
Запрос для проверки:
session_id - текущий session_id
calc_execution_segment - поле для проверки что расчет совпадет с фактом
fact_execution_segment - фактический сегмент выполнения запроса
Предварительно нужно создать таблицу и заполнить её:
mod(session_id, count_segmens)
или
session_id % count_segments
Запрос для проверки:
SELECT (SELECT sess_id FROM pg_stat_activity WHERE pid = pg_backend_pid()) session_id
, gp_execution_segment() fact_execution_segment
, mod((SELECT sess_id FROM pg_stat_activity WHERE pid = pg_backend_pid())
, (SELECT count(*) FROM gp_segment_configuration WHERE ROLE = 'p' AND content != -1)
) calc_execution_segment
FROM dev.test_heap_replicated;
session_id - текущий session_id
calc_execution_segment - поле для проверки что расчет совпадет с фактом
fact_execution_segment - фактический сегмент выполнения запроса
Предварительно нужно создать таблицу и заполнить её:
create schema dev;
CREATE TABLE dev.test_heap_replicated (id int, descr_nm text)
WITH (APPENDONLY=false)
distributed replicated;
INSERT INTO dev.test_heap_replicated
SELECT n, 'dev_test_replicared_read' FROM generate_series(1,1000) n;
🔥1
Кому интересно, нужны Greenplum специалисты, подробнее тут - (можно посоветовать или попробовать для себя). Заходил HR но я ей не помог
👍1
Запрос для изучения - выводит сессии, которые не отображаются в pg_stat_activity
иногда нужен для изучения проблем
SELECT *
FROM session_state.session_state_memory_entries_f_on_master() AS C (
segid int,
sessionid int,
vmem_mb int,
runaway_status int,
qe_count int,
active_qe_count int,
dirty_qe_count int,
runaway_vmem_mb int,
runaway_command_cnt int,
idle_start timestamp with time zone
)
where sessionid not in (select sess_id from pg_stat_activity)
order by 1;
иногда нужен для изучения проблем
😱2😁1
то же что и предыдущий запрос но при этом выводи информацию по сегментам
SELECT *
FROM session_state.session_state_memory_entries_f_on_master() AS C (
segid int,
sessionid int,
vmem_mb int,
runaway_status int,
qe_count int,
active_qe_count int,
dirty_qe_count int,
runaway_vmem_mb int,
runaway_command_cnt int,
idle_start timestamp with time zone
)
where sessionid not in (select sess_id from pg_stat_activity)
order by 1;