Как избежать проблемы с пространством при выполнении запроса в postgresql? - PullRequest
0 голосов
/ 22 октября 2019

Это продолжение одного из моих предыдущих постов о производительности. Но на этот раз я получил сообщение об ошибке. Я просто пытаюсь присоединиться к 9 столам.

Обратите внимание, что могу объединить 8 из 9 столов в течение 30 секунд. Но последний measurement, который огромен в количестве (4779657 записей). Это заняло много времени из-за того же.

В конце у меня появилось следующее сообщение об ошибке, и я не смог получить вывод. 1011 * но не уверен, как использовать это здесь

ОШИБКА: не удалось расширить файл "base / 17776 / 84170.71": на устройстве не осталось места СОВЕТ: Проверьте свободное место на диске.

Но я запускаю это на сервере

Пожалуйста, найдите под запросом

DROP MATERIALIZED VIEW IF EXISTS cdm.dummy CASCADE;
CREATE MATERIALIZED VIEW cdm.dummy as
select
f.person_id,f.gender_concept_id,f.year_of_birth,f.race_concept_id,f.ethnicity_concept_id,
a.visit_occurrence_id,a.visit_concept_id,a.visit_start_datetime,a.visit_end_datetime,a.admitting_source_concept_id,a.discharge_to_concept_id,
b.condition_concept_id,b.condition_start_datetime,b.condition_end_datetime,b.condition_type_concept_id,
c.measurement_concept_id,c.measurement_datetime,c.value_as_number,c.value_as_concept_id,c.unit_concept_id,
d.drug_concept_id,d.drug_exposure_start_datetime,d.drug_exposure_end_datetime,d.drug_type_concept_id,d.quantity,
e.procedure_concept_id,e.procedure_datetime,e.procedure_type_concept_id,
g.observation_concept_id,g.observation_datetime,g.value_as_number as "observation_value_as_num", g.value_as_string as "observation_value_as_string",
h.observation_period_start_date,h.observation_period_end_date,
i.death_datetime,i.cause_concept_id
from cdm.visit_occurrence a
left outer join 
cdm.condition_occurrence b
on a.person_id = b.person_id and a.visit_occurrence_id = b.visit_occurrence_id
left outer join 
cdm.drug_exposure d
on a.person_id = d.person_id and a.visit_occurrence_id = d.visit_occurrence_id
left outer join 
cdm.procedure_occurrence e
on a.person_id = e.person_id and a.visit_occurrence_id = e.visit_occurrence_id
left outer join 
cdm.person f
on a.person_id = f.person_id 
left outer join
cdm.observation g
on a.person_id = g.person_id and a.visit_occurrence_id = g.visit_occurrence_id
left outer join
cdm.observation_period h
on a.person_id = h.person_id
left outer join
cdm.death i
on a.person_id = i.person_id
left outer join 
cdm.measurement c
on a.person_id = c.person_id and a.visit_occurrence_id = c.visit_occurrence_id

1 Ответ

2 голосов
/ 22 октября 2019

Ваше утверждение создает своего рода таблицу в базе данных (это то, что означает «материализовано»). Такой объект требует места, и у вас недостаточно свободного места.

Поскольку у вас недостаточно места для файла 84170.71, а каждый сегмент имеет размер 1 ГБ, в вашем распоряжении менее 72 ГБ свободного дискового пространства. файловая система, которой недостаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...