вторник, 21 декабря 2010 г. - www.msmirnov.ru

Влияют ли cross database joins на производительность запросов в SQL Server?

На днях мне пришлось столкнуться с вопросом – как влияют cross database joins на производительность запросов в SQL Server, при условии что базы находятся в пределах одного сервера?

Поискав в Google я не нашел однозначного ответа на этот вопрос – кто-то писал что разницы нет никакой, кто-то наоборот отмечал двукратное замедление запросов.

Поскольку для меня это важно, я провел несколько тестов на выборку и вставку, в которых объединялись две таблицы – одна размеров в 8 миллионов строк и другая в 30 тысяч строк.
Эти таблицы поочередно располагались в одной и в разных базах.

Никакой разницы в значениях logical reads, physical reads, duration не было.

Поэтому мой ответ – Нет, cross database joins не влияют на производительность запросов в SQL Server.

Мой сайт - www.msmirnov.ru

9 комментариев:

  1. мне тоже странно, отчего у тебя такой вопрос возник.
    Мне другое любопытно. Не просто join, а именно работа - кеши запросов там, еще чего. Т.е. не при единичном синтетическом запросе, а при постоянном обновлении базы, и частых запросах. Будет ли просадка?

    По идее - не должно, но как оно там внутре кеширует - неизвестно. Приоритеты может какие-то вылезают, еще чего.

    ОтветитьУдалить
  2. Мне тоже кажется что разницы не должно быть, но проверить можно.

    А вопрос возник из-за того, что мы сейчас это довольно активно используем и на днях мне сказали, что видели в интернете статью, где кто-то советовал не использовать cross database joins, так как они снижают производительность.

    Статью, к сожалению, найти не удалось, поэтому и возник такой вопрос.

    ОтветитьУдалить
  3. На PDC чуваки из команды MS говорили, что когда-то у них была идея делить кеши и память между базами, но выродилась она лишь в попытку делить их между инстансами сервера. Попытка тоже не слишком эффективная и удачная, так что, в последних версиях, они официально за изолированную единицу считают сервер. То есть, (виртуальную) машину. Они даже говорили, что были очень удивлены тому, что производительность при таком виде изоляции даже лучше.
    Так что, внутри сервера (и в чём-то даже машины) SQL Server вполне себе шарит память и кеши, и разбивка на базы данных в этом аспекте на производительность влиять сильно не должна...

    ОтветитьУдалить
  4. Michael Smirnov
    "видели в интернете статью, где кто-то советовал не использовать cross database joins, так как они снижают производительность."
    Наверное речь шла о CE

    ОтветитьУдалить
  5. По выходу се, была заметка, только вот где нашол твой друг её?

    ОтветитьУдалить