Производительность одной широкой таблицы в базе данных, ориентированной на столбцы (Vectorwise)

Я выполняю некоторые тесты на векторе, используя звездообразную схему и одну денормализованную таблицу. В денормализованной таблице у меня есть 5 дополнительных столбцов, которые> varchar (100). Я новичок в мире ориентированных на столбцы и, следовательно, хочу понять, чтобы мои факты были правильными.

Несколько фактов:

  1. Запрашиваемая память = 20 ГБ, Кэш-память установлена ​​на 7 ГБ

  2. Размер именных столбцов составляет около 6G, 6,5G, 2,6G и 650M. Теперь, очевидно, они не могут поместиться в моей кеш-памяти, поэтому система связана с вводом / выводом.

  3. Если я использую подход звездной схемы, он работает быстрее, так как он должен кэшировать целочисленные столбцы, поскольку все они легко помещаются в мою кэш-память основной памяти.

У меня есть несколько вопросов, касающихся этого:

  1. Если мне нужно использовать одну таблицу, мне нужно увеличить оперативную память, чтобы все эти столбцы помещались в память? Я хотел бы знать, если кто-то еще сделал такую ​​структуру, используя Vertica или любые другие базы данных, ориентированные на столбцы. Если да, используете ли вы один и тот же подход, все столбцы varchar должны помещаться в ОЗУ?

  2. Простой запрос схемы звезды

    select col1,col2, col3, sum(col4), sum(col5) from fact_table join tabl1 on condition join tab2 on condition where tab1.col1 = 1234 and tab2.col2 = 6789

    Работает медленнее, чем:

    select col1,col2,col3,sumcol4, sumcol5 from (select col1,col2, col3, sum(col4) as sumcol4, sum(col5) as sumcol5 from fact_table where fact_table.col1 = 1234 and fact_table.col2 = 6789) as facts join tabl1 on condition join tab2 on condition

    Зачем?

    Примечание. Основные таблицы tab1 и tab2 являются резидентными в основной памяти.

Я использую Vectorwise, но просто хочу знать, верны ли эти наблюдения и для Vertica?

1 ответ

У Vertica нет идеи хранить таблицы в памяти. В некоторых случаях и в некоторых видах объединений данные таблицы могут уже находиться в памяти или помещаться туда. Но в конечном итоге производительность Vertiac зависит от того, как вы храните вещи на диске.

Я не ожидал бы, что производительность этих двух запросов в Vectorwise окажет какое-либо влияние на то, как схожие запросы и таблицы будут работать в Vertica. Тем не менее, меньшее количество строк, связанных с объединением во втором запросе, позволяет предположить, что это будет лучше в различных механизмах выполнения запросов.

Другие вопросы по тегам