На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS RSS
>  Форум на Исходниках.RU
       Базы данных
         MS SQL Server
msm.ru
! ПРАВИЛА РАЗДЕЛА
Указание базы данных обязательно! Если вопрос связан с программированием, необходимо указание способа доступа к базе данных (ODBC/ADO/DAO/BDE и т.п.) и среды программирования (VC/VB/Delphi и т.п.).
При невыполнении этих требований вопросы будут удаляться модератором без предупреждения!
Модераторы: Guderian, Bas, MIF
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )   Новое голосование

> Производительность temporary table
Master ANDLL
Сообщ. #1, 09.12.09, 11:30

Axe Mogul Khan
******
Профиль · PM


Итак, нечто совершенно удивительное

Есть MS SQL Server 2008, в нем база данных A с таблицей B.

Существует некий запрос вида INSERT INTO #Z(***) SELECT *** FROM B

Причем запрос нахродится в батче такого вида:
CREATE TABLE #Z(***)
INSERT INTO #Z(***) SELECT *** FROM B
DROP TABLE #Z

К сожалению структуру таблиц привести не могу, но в общем - в них дофига столбцов, и 50 Кзаписией порядка

Actual execution plan показывает 96% времени запроса на INSERT'е

Силь даже не в этом.

Имеем два компьютера - ноутбук с пентиумом dual core и windows vista x86, и сервер с двумя четырехядерными оптеронами и windows 2008, но уже 64-разрядной.

На сервере запрос выполняется ~40000 мс.
Та же самая база данных, просто забекапленая на сервере и расстореная на ноутбуке, и тот же самый, в точности запрос на ней на ноутбуке выполняется 3000 мс.

Сервер во время выпонления запроса ничем не занят, процессор даже во время его выполнения почти на нуле.

СУБД MS SQL установлен на сервере в двух экземплярах - 32битном и 64битном, в обоих экземплярах скорость вполнения одна и та же.

Вопрос - куда тут копать?
Guru Akina
Сообщ. #2, 09.12.09, 11:43
Guru
*******
Профиль · PM

Поощрения: 35 Dgm
Рейтинг (т): 410

Возникает подозрение, что всё дело - в собственно настройках сервера. Ведь должно же у него быть логичное внутреннее обоснование не сильно упираться в расходовании ресурсов на одну операцию?
Кстати... а если так, чисто модельно, вместо временной таблицы использовать табличную переменную - результат такой же?
___________
Есть претензии ко мне как к модератору? читайте Правила, разделы 5 и 6, и действуйте соответственно.
Есть претензии ко мне как к участнику? да ради бога.
Не нравятся мои ответы? не читайте их.
В общем, берегите себя. Нервные клетки не восстанавливаются.
Master ANDLL
Сообщ. #3, 09.12.09, 11:47

Axe Mogul Khan
******
Профиль · PM


Ага, время при табличной переменной абсолютно то же.
Настройки у обоих SQL-серверов стандартные(то есть не менялись с момента устанвоки), причем 32-х разрядный инстанс вообще "девственный".
Guru Akina
Сообщ. #4, 09.12.09, 11:58
Guru
*******
Профиль · PM

Поощрения: 35 Dgm
Рейтинг (т): 410

А есть запросы аналогичного порядка, которые заставляют сервер шуршать что есть мочи? или он всё так вот, с ленцой, делает?
___________
Есть претензии ко мне как к модератору? читайте Правила, разделы 5 и 6, и действуйте соответственно.
Есть претензии ко мне как к участнику? да ради бога.
Не нравятся мои ответы? не читайте их.
В общем, берегите себя. Нервные клетки не восстанавливаются.
Master ANDLL
Сообщ. #5, 09.12.09, 11:59

Axe Mogul Khan
******
Профиль · PM


Все остальное вроде делает быстро
Делал тест утилитой тестирования сокрости жесткого диска - показатели номарльные. По крайней мере лучше чем на ноуте:)

Добавлено 09.12.09, 12:06
То есть да, это единственный проблемный запрос.
Прочие инсерты\селекты в нормальные таблицы работают быстрее на сервере
Kobra
Сообщ. #6, 09.12.09, 18:26
Profi
*****
Профиль · PM

Поощрения: 2 Dgm
Рейтинг (т): 111

a select into пробовал?
кажется tempdb тормозит. каков размер данных? может при расширении тормозит?
мне не нравится Что # и @ таблицы однинаково работают.
профаилер смотрел?

Сообщение отредактировано: Kobra - 09.12.09, 18:30
___________
Я знаю только то, что ничего не знаю
Master ANDLL
Сообщ. #7, 09.12.09, 19:15

Axe Mogul Khan
******
Профиль · PM


Цитата (Kobra @ 09.12.09, 18:26)
a select into пробовал?

Да, результат тот же, к тому же это вроде как те же яйца
Цитата (Kobra @ 09.12.09, 18:26)

кажется tempdb тормозит. каков размер данных? может при расширении тормозит?

Не очень понимаю. Ну один раз он расширился. Но потом таблица удалилась, и ему уже не надо расширяться. Объем... А хз. 50000 записей, каждая ну по килобайту максимум...
Цитата (Kobra @ 09.12.09, 18:26)
мне не нравится Что # и @ таблицы однинаково работают.

Угу, такое чувство что он винт юзает всегда, хотя памяти на сервере явно не мало.

Цитата
профаилер смотрел?
Это execution plan, или чтото другое?
Забыл упомянуть, на обоих машинах SQL сервер имеет версию express
Kobra
Сообщ. #8, 10.12.09, 14:22
Profi
*****
Профиль · PM

Поощрения: 2 Dgm
Рейтинг (т): 111

Цитата (ANDLL @ 09.12.09, 19:15)
Забыл упомянуть, на обоих машинах SQL сервер имеет версию express
ооооо, с этого надо было начинать :). експрес может ползоватся только огранисенними ресурсами. так что
Цитата (ANDLL @ 09.12.09, 11:30)
сервер с двумя четырехядерными оптеронами
не чем не луще твоего ноута, кроме как наверняка, более шустрими винтами.
ограничения експреса: максималное ОЗУ 1г. 1 проц (если точно помнью 1 едро для многоядерних). потому и нагрузки на сервере нет.
Цитата (Kobra @ 09.12.09, 18:26)
профаилер смотрел?
забуть, для експреса его нет.
___________
Я знаю только то, что ничего не знаю
Master ANDLL
Сообщ. #9, 10.12.09, 14:27

Axe Mogul Khan
******
Профиль · PM


Цитата (Kobra @ 10.12.09, 14:22)
ооооо, с этого надо было начинать :). експрес может ползоватся только огранисенними ресурсами. так что

Так что что? Оба с sqlexpress, а производительность разная
Цитата (Kobra @ 10.12.09, 14:22)
не чем не луще твоего ноута, кроме как наверняка, более шустрими винтами.

...
Kobra
Сообщ. #10, 11.12.09, 08:49
Profi
*****
Профиль · PM

Поощрения: 2 Dgm
Рейтинг (т): 111

Цитата (ANDLL @ 10.12.09, 14:27)
Так что что? Оба с sqlexpress, а производительность разная
еслиб не експрес, в профаилере можно было бы посмотреть что да как. а с експресом приходится только гадать. правда из статистики (Query->include client ststistics) можно кое что узнать.
кстати, может винт занят другими процесами? например антивиром?
___________
Я знаю только то, что ничего не знаю
Master ANDLL
Сообщ. #11, 11.12.09, 09:27

Axe Mogul Khan
******
Профиль · PM


Нет, все отрубалось, активность винта сначала на нуле, и возрастает во время выпонления запроса
Kobra
Сообщ. #12, 11.12.09, 09:37
Profi
*****
Профиль · PM

Поощрения: 2 Dgm
Рейтинг (т): 111

Цитата (ANDLL @ 11.12.09, 09:27)
активность винта сначала на нуле, и возрастает во время выпонления запроса
идеии кончилис :(
___________
Я знаю только то, что ничего не знаю
Master ANDLL
Сообщ. #13, 11.12.09, 10:30

Axe Mogul Khan
******
Профиль · PM


Такое чувство что сервер детектит версию ОС, и на клиентской оси работает иначе чем на серверной. В частности такое чувтсво что temp table на клиентской оси работает в памяти, а на серверной на винте
Kobra
Сообщ. #14, 11.12.09, 11:43
Profi
*****
Профиль · PM

Поощрения: 2 Dgm
Рейтинг (т): 111

не исклучено.
а статистика что показывает?
___________
Я знаю только то, что ничего не знаю
Master ANDLL
Сообщ. #15, 11.12.09, 12:09

Axe Mogul Khan
******
Профиль · PM


Сколько инсертов было сделано и за какое время.
Инсертов одинаковое количество, вообще все кроме времени одинаковое

Добавлено 11.12.09, 12:11
Хотя кстати сейчас начал чуть быстрее делать. Уже 9000 мс а не 40000, хотя все же в три раза медленнее чем клиентская версия.

Добавлено 11.12.09, 12:11
Гмм. Может там и правда со временем чтото оптимизируется при одинаковых запросах? Вот ведь прикол будет
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:

> Форум на Исходниках.RU · MS SQL Server

Страницы: (2) [1] 2  все Новое голосование


[ Script Execution time: 0,1590 ]   [ 15 queries used ]   [ Generated: 16.04.14, 04:11 GMT ]  

Rambler's Top100