СУБД ЛИНТЕР. Технический обзор

Масштабируемость


Масштабируемость СУБД ЛИНТЕР, т.е. зависимость эффективности её работы от вычислительных ресурсов, это достаточно многомерное свойство. Можно рассматривать масштабируемость по отношению к объёму оперативной памяти, числу процессоров на сервере и т.п.

1. Почти все процессы, участвующие в обработке запросов на сервере (собственно ядро ЛИНТЕР, SQL-транслятор, транслятор хранимых процедур, сортировка, сетевой драйвер сервера), настраиваются на использование дополнительной памяти.

Использование дополнительной памяти этими компонентами серьёзно увеличивает эффективность работы системы.

На приведённой ниже диаграмме заметно, что скорость работы однопользовательского теста TPC-B пропорционально зависит от размеров занимаемой системой (под пул страниц) оперативной памяти.

Диаграмма TPC-B на 100.000 записей прекращает свой рост, начиная с пула в 1.000 страниц, так как база данных вся поместилась в ОЗУ, и дальнейшее увеличение пула не даёт роста эффективности.

График TPC-B на 1.000.000 записей представляет собой почти пропорциональную зависимость – прирост эффективности ~3% на каждые дополнительные 1.000 страниц оперативной памяти.

2. Зависимость эффективности от числа процессоров сервера не столь яркая. ЛИНТЕР - многозадачная СУБД. В процессе обработки запросов принимает участие несколько задач: ядро, SQL-транслятор, транслятор хранимых процедур и процессор сортировки (может быть, даже не один).

При этом всё может быть организовано таким образом, что различные из указанных задач будут выполняться на различных процессорах. И это даёт определённый выигрыш в эффективности.

В СУБД ЛИНТЕР 6.2 осуществлён переход к использованию различных процессоров при обработке запросов внутри ядра. Причём принят самый интересный вариант – выполняться на различных процессорах смогут не только различные запросы, но даже и различные части одного запроса.

3. При наличии высококачественных интерфейсов ввода-вывода (например, SCSI, RAID-массивы) ЛИНТЕР будет использовать их возможности по параллельному исполнению нескольких запросов на ввод-вывод.

              


Здесь основным направлением является внедрение многопроцессорного ядра СУБД ЛИНТЕР v.6.2. Подобное ядро использует порождение процессов (нитей) обработки запроса или его каких-то его фрагментов.

Таким образом, решается проблема распараллеливания обработки не только запросов, выполняющихся по различным каналам, но даже и обработки одного запроса.

Вторым направлением масштабируемости является эффективное использование сверхбольших объемов памяти (более 2 Gb).



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