Производительность серверов БД в OE 12
Server-Side Joins
До внедрения технологии SSJ, когда удалённый клиент формирует запрос с объединением данных из нескольких таблиц, большая часть такого объединения происходило на стороне клиента. Поэтому даже записи, которое некогда не будут использованы, будут отправлены клиенту по TCP. В результате, в зависимости от скорости сети, это может отрицательно повлиять на производительность.
Чтобы избежать этого, было решено внедрить технологию SSJ, которая для определенного набора запросов, требующих объединений, будет выполнять объединения на стороне сервера. Таким образом, клиенту по сети будут отправлены только те записи, которые удовлетворяют условию запросу (см. Рис. 4).
Для использования этой функции не требуется изменений в существующем коде ABL, который выполняет соединения. Тем не менее, запрос должен соответствовать определенным критериям. В версии OpenEdge 12.0, используемой в тесте производительности, существовали следующие ограничения, которые следует учитывать для SSJ:
- Запрос должен быть выполнен оператором «FOR EACH».
- Все таблицы, участвующие в объединении, должны принадлежать одной базе данных.
- Объединение должно включать не более десяти таблиц.
- В описании запроса должна использоваться только локировка NO-LOCK.
- Запрос не должен использовать LEFT-OUTER-JOINS.
- Запрос не должен использовать конструкции, которые выполняются на клиенте (например, пользовательские функции).
- Используется MTDBS.
Со времени выпуска OpenEdge 12.0 этот список был расширен дополнительными конструкциями. Поэтому с каждым новым выпуском OpenEdge 12 смотрите раздел «What’s New» в документации к этой версии чтобы найти дополнительные критерии и типы запросов, которые могут быть использованы для SSJ.
Понимая технологию SSJ, можно понять, почему для SSJ требуется MTDBS чтобы обеспечить ожидаемый результат для удалённых клиентов. Если однопоточный сервер будет занят обработкой большого запроса для отдельного удалённого клиента, то запросы всех остальных удалённых клиентов, обслуживаемых этим сервером, должны будут ждать завершения обслуживания этого большого запроса.
Метка:Производительность