2016-07-18 6 views
0

Мне нужно изменить суперпроекции в таблице (неправильный порядок и сегментация). Так как я пытаюсь это сделать.VERTICA: изменение проекций

  1. переименовывать существующие прогнозы:

    ALTER PROJECTION schema.table_b0 RENAME TO table_b0_2; 
    ALTER PROJECTION schema.table_b1 RENAME TO table_b1_2; 
    
  2. Создание новых проекций:

    CREATE PROJECTION schema.table 
    as select * from schema.table 
    order by ... 
    segmented by hash (...) all nodes; 
    
  3. Refresh:

    select refresh('schema.table'); 
    
  4. падение старые из них:

    DROP PROJECTION table_b0_2; 
    DROP PROJECTION table_b1_2; 
    

Я предполагаю, что это почти то, что я хочу, но ...

  1. я получаю два выступа с суффиксами "_b0" и "_B1", но, как правило (если таблица создания есть было сделано правильно) есть два прогноза с суффиксами «_b0» и «_super». Зачем?

  2. После создания проекции я не могу отказаться от таблицы без параметра cascade в drop table. Поэтому я получаю мои прогнозы как разделенные объекты. Я могу это исправить (для создания прогнозов, как если бы они были созданы с правильной операцией create table с самого начала)?

ответ

1
  1. Это просто название. Когда он создает суперпроекты по умолчанию, он называет его _super. (Я думаю, что это соглашение об именах является новым, хотя). По умолчанию прогнозы не будут оптимальными, и вы захотите их заменить с помощью DBD. Я предполагаю, что вы уже знаете о b0 vs b1 и ksafety.

  2. Проекты по умолчанию - объекты, которые вы явно не создали. Вы можете сказать, что это прогнозы по умолчанию, просмотрев вид projections. Они скажут DELAYED CREATION. Поскольку вы не создали их явно, Vertica позволяет их удалить с помощью таблицы. Однако, если вы явно создаете проекцию вручную или используете DBD, вам потребуется отбросить их сначала или использовать cascade.

Несколько нот. Во-первых, проекцией создания должно быть имя проекции, а не имя таблицы. Вы получите объект уже существует, если они имеют одно и то же имя. Во-вторых, прежде чем вы уроните старые прогнозы, вам может понадобиться перенести древний маркер с select make_ahm_now();.

Надеюсь, это поможет.

+0

Привет! Большое спасибо за ваш ответ! Во-первых, что такое DBD?) И о явном создании - если я создаю прогнозы, используя инструкцию 'create table' (' create_type = "CREATE TABLE WITH PROJ CLAUSE" '), я смогу отбросить таблицу без' cascade'. – Vikora

+0

@Vikora DBD - это конструктор баз данных. Два вторых введения: вы загружаете таблицу репрезентативными данными, вы загружаете DBD ваши ожидаемые запросы и создаете для вас оптимизированные прогнозы. Я всегда рекомендую начинать с DBD и настраивать только при необходимости. – woot

+0

@ Vikora Что касается 'CREATE TABLE ...LIKE ... ВКЛЮЧАЯ ПРОЕКЦИИ', он будет действовать так же, как и исходная таблица. Если в вашей исходной таблице были пользовательские или дизайнерские прогнозы, она рассмотрит эти зависимости и потребует 'CASCADE'. – woot

 Смежные вопросы

  • Нет связанных вопросов^_^