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

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

Немного фактов:

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

  2. Размер только столбцов имен составляет около 6 ГБ, 6,5 ГБ, 2,6 ГБ и 650 МБ. Теперь очевидно, что они не помещаются в моей кеш-памяти, поэтому система ограничена вводом-выводом.

  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?


person Neetesh Tiwari    schedule 18.09.2012    source источник


Ответы (1)


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

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

person kimbo305    schedule 18.09.2012