Классика баз данных - статьи

       

Имеется несколько причин этой поразительной


Имеется несколько причин этой поразительной разницы в производительности, но особо выделяются три из них.


Рис. 3. Запрос 2

Во-первых, в таблице usage содержится несметное число деталей о вызовах, включая информацию о перенаправлении вызовов, о сетях, через которые проходил данный вызов, о длине вызова и причинах его завершения и т.д. В целом в таблице имеется более 200 столбцов. Хотя о разумности появления такой «откормленной» таблицы можно было бы поспорить с разработчиками схемы, следует заметить, что в данной компании в различных непредвиденных запросах используется много разных полей. Поэтому декомпозиция этой таблицы фактов на несколько таблиц привела бы к потребности в соединениях, которые могли бы замедлить выполнение запросов. Кроме того, в действительности таблица фактов была предварительно соединена по соответствующим атрибутам с таблицами измерений, чтобы избежать соединений во время выполнения запросов, что является распространенным приемом в средах хранилищ данных; в результате появилось материализованное представление, содержащее 212 столбцов. Заметим также, что в данном запросе читается 7 столбцов из 212-ти. Следовательно, система, основанная на хранении данных по столбцам, прочитает ровно 7 столбцов, в то время как система, хранящая данные по строкам, будет читать все 212 столбцов – впечатляющее различие в два порядка в объеме данных, перемещаемых с диска.

Второе соображение – это сжатие. Как отмечалось в [Aba06], сжатие обычно является более эффективным при хранении данных по строкам, чем при их хранении по столбцам. Здесь существенно не только то, что все объекты, располагающиеся в одном дисковом блоке, имеют один и тот же тип данных, но и то, что становятся возможными дополнительные варианты сжатия, такие как дельта-кодирование (delta encoding) и групповое кодирование (run-length encoding). При проведении нескольких испытаний на тестовых наборах оказывалось, что в Vertica поддерживается коэффициент сжатие 10, что почти в три раза превосходило возможности сжатия тех же данных в системах с хранением по строкам.


Содержание  Назад  Вперед