СУБД с хранением данных по столбцами и по строкам

Эксперименты


В этом разделе с использованием тестового набора SSBM сравнивается производительность реализаций, основанных на использовании строчного хранилища, с производительностью C-Store. Целью экспериментов является обеспечение ответов на следующие четыре вопроса:

  1. как соотносится производительность различных реализаций колоночного хранилища на основе строчного хранилища с производительностью базового варианта C-Store?
  2. можно ли получить какие-либо преимущества от использования физической схемы, ориентированной на столбцы, в неизмененном строчном хранилище?
  3. какие оптимизации, предложенные для колоночных хранилищ (сжатие, отложенная материализация, блочная обработка), являются наиболее существенными?
  4. как соотносятся стоимость выполнения соединений в колоночной базе данных со звездообразной схемой с использованием метода скрытых соединений со стоимостью выполнения тех же запросов над денормализованной таблицей фактов с предварительно вычисленными соединениями?

Отвечая на эти вопросы, авторы статьи предоставляют разработчикам СУБД, заинтересованным в применении подхода с хранением данных по столбцам, информацию относительно того, какие методы оптимизации наиболее плодотворно действуют на производительность. Кроме того, эти ответы помогут понять, какие изменения требуется сделать на уровнях менеджера хранения данных и исполнителя запросов строчных хранилищ, чтобы в них можно было успешно моделировать колоночное хранилище.

Все эксперименты поводились с использованием рабочей станции с двухядерным процессором Pentium, работающим на частоте 2.8 GHz, с тремя гигабайтами оперативной памяти. В качестве операционной системы использовалась ОС RedHat Enterprise Linux 5. Машина была оснащена дисковым массивом с четырьмя дисками, управляемым как одним логическим томом. Файлы «расслаивались» между дисками. Типичная пропускная способность ввода/вывода составляла 40-50 мегабайт в секунду на один диск, или 160-200 мегабайт в секунду для расслоенных файлов. Приводимые числовые результаты усреднены на основе нескольких прогонов и основываются на использовании «разогретого» буферного пула (на практике авторы обнаружили, что для обоих видов систем это приводит примерно к тридцатипроцентному повышению производительности; этот выигрыш не очень велик, поскольку объем данных, считываемых с диска при выполнении каждого запроса, превышает размер буферного пула).



Содержание раздела