Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Время запроса  [new]
IronKancler
Member

Откуда:
Сообщений: 19
Привет.
Подскажите пожалуйста.. сколько по времени должна производится выборка из таблицы
"SELECT TOP 200 * FROM dbo.order" ? Конфигурация сервера хорошая.. SSD, 6 ядер. Включено TDE. В таблице около 50-ти различных столбцов.
Время вывода данных (на терминале в managment studio) от 200 мс до 800 - мне кажутся эти цифры очень большими, что минимальной значение что максимальное.

Время вывода проверяю не 'клиентской статистикой', а так:

DECLARE @d1 datetime = GETDATE()
SELECT TOP 200 *
FROM dbo.order
DECLARE @d2 datetime = GETDATE()
SELECT DATEDIFF(MILLISECOND, @d1, @d2)
13 апр 19, 12:43    [21861113]     Ответить | Цитировать Сообщить модератору
 Re: Время запроса  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36267
А за какое время землекопы выкапывают яму?
13 апр 19, 12:58    [21861119]     Ответить | Цитировать Сообщить модератору
 Re: Время запроса  [new]
IronKancler
Member

Откуда:
Сообщений: 19
Гавриленко Сергей Алексеевич,

Хотелось бы за 50 мс
13 апр 19, 16:18    [21861183]     Ответить | Цитировать Сообщить модератору
 Re: Время запроса  [new]
IronKancler
Member

Откуда:
Сообщений: 19
Гавриленко Сергей Алексеевич,

Просто я не знаю, есть ли возможность ускорить выборку или это время нормальное...
Задержка в почти в секунду заметная так-то для пользователя, тк накладываются и еще задержки
13 апр 19, 16:21    [21861186]     Ответить | Цитировать Сообщить модератору
 Re: Время запроса  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28722
IronKancler
Просто я не знаю, есть ли возможность ускорить выборку или это время нормальное...
Задержка в почти в секунду заметная так-то для пользователя, тк накладываются и еще задержки
Сам по себе этот запрос должен выполняться очень быстро, менее чем за 1 мс, если, конечно, строка достаточно узкая. Потому что это всего лишь чтение одной-нескольких страниц из RAM
Но от выполнения запроса, до видимой пользователю реакции клиентского приложения, много чего происходит.
Например, миллисекунды в вашем коде покажут ещё и чтение строк клиентом.
Ещё нужно смотреть задержки сети, блокировки.
14 апр 19, 00:54    [21861405]     Ответить | Цитировать Сообщить модератору
 Re: Время запроса  [new]
dklim.kzn
Member

Откуда: Казань
Сообщений: 123
без order by разве что обои на стену печатать данные выдавать?
по топ можно получить что угодно независимо от наличия индексов и последовательности вставки
если индексы всё же есть, то лучше указать порядок сортировки в запросе (или в подзапросе, если это оно для чего-то большего)
если их нет или неподходящие - то with (index=0) и/или (forcescan) попробовать
мало ли чего там серверу в голову взбредет и по каким страницам начнет лазить
я б вообще на месте разработчиков задержку делал при отсутствии order by чтоб неповадно было) может и сделали)))
14 апр 19, 11:16    [21861500]     Ответить | Цитировать Сообщить модератору
 Re: Время запроса  [new]
IronKancler
Member

Откуда:
Сообщений: 19
dklim.kzn,

Order by нет, это пример запроса а не реальный запрос. В том и дело что сам вывод информации на сервере в managment studio выдаёт такое время. В клиентской статистике же показывает время в районе 20-100 мс. т.е. сам запрос без вывода работает нормально, а вот вывод почему то медленный. Возможно это норма, но мне нужен хороший отклик, тк реальный запрос передается сразу по Web socket клиенту. Реальный запрос тоже в клиентской статистике быстрый, а вывод медленный.
14 апр 19, 13:12    [21861532]     Ответить | Цитировать Сообщить модератору
 Re: Время запроса  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36267
И при чем здесь сервер тогда? Оптимизируйте ваше клиентское приложение, чтобы быстрее работало.
14 апр 19, 17:05    [21861634]     Ответить | Цитировать Сообщить модератору
 Re: Время запроса  [new]
IronKancler
Member

Откуда:
Сообщений: 19
Гавриленко Сергей Алексеевич,

Передача(вывод) в самой managment studio не сильно шустрый. Я провожу аналогию между выводом информации в menagment studio и получением данных от сервера в клиентском приложении. т. е. у меня клиентской приложение получает данные от сервера в среднем за 600 мс скажем и menagment studio (установленая на сервере) тоже за примерно такое же время. Клиентская статистика показывает не плохой результат да.. но конечное время для пользователя плохое. Если я не могу получить требуемое время в menagment studio, то я думаю оптимизировать приложение клиентской нет смысла. Я ошибаюсь?
14 апр 19, 17:32    [21861648]     Ответить | Цитировать Сообщить модератору
 Re: Время запроса  [new]
Злой Бобр
Member

Откуда: Украина, Кривой Рог
Сообщений: 3418
IronKancler,

Хватит воду каламутить. Тут телепатов нет. Поэтому или выкладывайте реальный запрос, структуру таблицы, замер производительности, ...
Запрос в несколько строк может повесить абсолютно любой сервер. Плюс непонимание того как именно отрабатывает запрос на сервере, приводит к таким перлам что слов нет (от кривых блокировок до ...). В общем дьявол кроется в деталях.
14 апр 19, 19:55    [21861692]     Ответить | Цитировать Сообщить модератору
 Re: Время запроса  [new]
IronKancler
Member

Откуда:
Сообщений: 19
Злой Бобр,
Да причём тут телепаты. Попробуйте вывести 200 строк с 20-50 столбцами, увидите что время запроса большое
14 апр 19, 20:02    [21861695]     Ответить | Цитировать Сообщить модератору
 Re: Время запроса  [new]
IronKancler
Member

Откуда:
Сообщений: 19
Гавриленко Сергей Алексеевич,

Вы правы, надо оптимизировать выборку. Нет смысла тягать всегда все строки.. Можно делать частые запросы на последнии добавленные записи и полную выборку там где не нужна оперативность, и изменять кэш.
Спасибо за наводку, не сразу понял ошибку свою
14 апр 19, 20:05    [21861696]     Ответить | Цитировать Сообщить модератору
 Re: Время запроса  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28722
Злой Бобр
Поэтому или выкладывайте реальный запрос, структуру таблицы, замер производительности
Например:
DECLARE @d1 datetime = GETDATE()
select top 200 * from syscolumns
SELECT DATEDIFF(MILLISECOND, @d1, GETDATE())
720мс
14 апр 19, 20:38    [21861715]     Ответить | Цитировать Сообщить модератору
 Re: Время запроса  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28722
alexeyvg
Например:
DECLARE @d1 datetime = GETDATE()
select top 200 * from syscolumns
SELECT DATEDIFF(MILLISECOND, @d1, GETDATE())

720мс
720 мс в SSMS
Набросал прогу на C#, прочитала за 55 мс
Тупо цикл по SqlDataReader.Read()
Так что, IronKancler, есть резервы, есть :-)
14 апр 19, 20:58    [21861725]     Ответить | Цитировать Сообщить модератору
 Re: Время запроса  [new]
IronKancler
Member

Откуда:
Сообщений: 19
alexeyvg,

Значит у меня и на уровне кода задержки, сереализация видимо... :(
Спасибо, проверю
14 апр 19, 21:03    [21861728]     Ответить | Цитировать Сообщить модератору
 Re: Время запроса  [new]
dklim.kzn
Member

Откуда: Казань
Сообщений: 123
ну выведите одну строчку

DECLARE @d1 datetime = GETDATE()
select count(*) from (select top 200 * from syscolumns (nolock)) r
SELECT DATEDIFF(MILLISECOND, @d1, GETDATE())

ну и вообще (nolock) не помешал бы
14 апр 19, 21:39    [21861748]     Ответить | Цитировать Сообщить модератору
 Re: Время запроса  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28722
dklim.kzn
ну выведите одну строчку
Меньше 1 мс
Ну это сразу было понятно, что дело в передаче на клиента, и обработке там.
Считать несколько страниц из памяти - это очень быстро.
14 апр 19, 21:45    [21861755]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить