Как тестировать решения правильно(чтобы один и тот же запрос выполнялся за одно и то же время)02.02.2024, 12:05. Показов 2112. Ответов 21
Приветствую!
Есть проблема на работе: БД находится на сервере. С ней работают другие программисты(напрямую запросами) и простые пользователи(через приложение для получения данных). Я часто тестирую различные варианты запросов и огромная проблема состоит в том, что один и тот же запрос может выполняться за сильно разное время (например от 1 до 7ми секунд или от 11 до 25). Разумеется, принять правильное решение о преимуществах или недостатках тестируемого метода просто невозможно — фактор ложноположительных и ложноотрицательных результатов не даёт. Вопрос: как проводить тесты "вчистую"? Что для этого нужно сделать? Какие шаги нужно для этого предпринять?
0
|
|
| 02.02.2024, 12:05 | |
|
Ответы с готовыми решениями:
21
Как сделать так, чтобы 2 программы могли читать один и тот же файл в одно время Как правильно использовать класс на VBA, чтобы не повторять один и тот же код? Один и тот же запрос работает как не один и тот же запрос |
|
Модератор
|
||
| 02.02.2024, 12:59 | ||
Смелые Вы люди, нифига не боитесь: одно неловкое движение - и база умерла, поднимать ее потом из бэкапа (если он есть, конечно) - та еще веселуха...
0
|
||
| 02.02.2024, 13:04 [ТС] | |
|
D1973, не всё так плохо) Работаю на копии рабочей базы, но всё-равно, на том же сервере.
0
|
|
|
670 / 293 / 120
Регистрация: 12.04.2022
Сообщений: 1,002
|
||
| 02.02.2024, 13:34 | ||
|
Медленно в приложении, быстро в SSMS (часть 1) и далее часть 2, часть 3.
1
|
||
| 02.02.2024, 14:26 [ТС] | ||
|
Подскажите, если не сложно, как это относится к моей проблеме. Тестирую запросы в одном и том же окне(query) SSMS с разницей в секунды. Время выдаётся иногда одинаковое, а иногда сильно разное. Я подозреваю, что это исключительно нагрузка на сервер карты путает и хочу от этого уйти. Время запросов меняется даже у относительно простых, планы запросов не меняются.
0
|
||
|
1306 / 360 / 98
Регистрация: 14.10.2022
Сообщений: 1,103
|
||
| 02.02.2024, 14:42 | ||
|
1. Локи. Если вы тестируетесь на отдельной базе, а работа ведется на базе с большим количеством параллельных подключений, чаще всего это связано с тем, что ваш запрос простаивает в ожидания снятия лока параллельного процесса. Нужно очень пристально следить за индексами и статистиками. 2. Использование tempdb при работе запроса, для сохранения промежуточных результатов. Тут может быть как вариант коряво написанного запроса, для которого энжин не смог правильно оценить кардинальность, не смог правильно построить план, и не смог правильно выделить память на исполнение, и, соответственно, в процессе выполнения вынужден вывалить промежуточные данные на диск, так и тот вариант, когда ваши данные в принципе в память и не поместятся, и в любом случае нужно будет использовать tempdb, или, к примеру, поднимать данные с диска. Внешне, если использовать инструментарий по анализу того "че там собственно творится внутри" - это будет выглядеть одинаково. Запрос хаотически тормозит. То за доли секунды выполняется, то минутами висит. PaulWist, думаю, ТС не об этом. В "Медленно в приложении, быстро в SSMS", большей частью про другое. Один и тот же запрос работает по-разному, в зависимости от каких-то настроек. В одном случае - стабильно быстро, в другом - стабильно медленно.
1
|
||
|
670 / 293 / 120
Регистрация: 12.04.2022
Сообщений: 1,002
|
||||||||||||
| 02.02.2024, 14:45 | ||||||||||||
|
Есть табличка T имеющая 10 записей в индесированном поле F, из них 9 записей = "А" и одна запись = "Б", запрос
Теперь
Если планы не меняются, то посмотрите на количество возвращаемых результатов, может там 1.5Г возвращается. А вообще uaggster направление поиска дал, но тут пальцем в небо
0
|
||||||||||||
|
139 / 105 / 36
Регистрация: 27.07.2022
Сообщений: 359
|
||
| 02.02.2024, 15:40 | ||
|
1
|
||
| 02.02.2024, 15:58 [ТС] | |||
|
uaggster, данные не свопятся, используются #таблицы и CTE.
Я думаю, что нужно на локали тестить, а не на сервере. Что думаете?
0
|
|||
|
139 / 105 / 36
Регистрация: 27.07.2022
Сообщений: 359
|
|
| 02.02.2024, 16:26 | |
|
0
|
|
|
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
|
|
| 02.02.2024, 16:29 | |
Сообщение было отмечено Jack Famous как решение
Решение
1
|
|
| 02.02.2024, 16:46 [ТС] | |||
|
Ну, то есть, количество чтений связано, конечно, но сможете ли вы сказать по тексту IO 2ух запросов, какой лучше работает? Тест ведь, может быть очень большим, как и запрос …
0
|
|||
|
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
|
|
| 02.02.2024, 17:01 | |
|
0
|
|
| 02.02.2024, 17:21 [ТС] | |
|
invm, простите — тупанул
![]() Это при Set Statistics Time On выводится. Спасибо!
0
|
|
|
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
|
|
| 02.02.2024, 17:35 | |
|
Jack Famous, плюс исключить вывод результирующих наборов
0
|
|
| 02.02.2024, 17:38 [ТС] | |
|
invm, можно подробнее, пожалуйста? Я не в курсе, что это …
И, чтобы, закрепить, я правильно понимаю, что CPU-Time не учитывает время ожидания и прочего мусора? P.S.: прочёл, что CPU-Time может быть больше фактического из-за того, что складываются времена каждого участвующего ядра (параллелизм). Но для сравнения "при прочих равных" это не важно.
0
|
|
|
139 / 105 / 36
Регистрация: 27.07.2022
Сообщений: 359
|
||
| 02.02.2024, 19:13 | ||
|
0
|
||
|
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
|
|
| 02.02.2024, 21:37 | |
|
1
|
|
|
14 / 13 / 1
Регистрация: 17.04.2023
Сообщений: 107
|
|
| 04.02.2024, 07:27 | |
|
Пересмотрите БД в плане используемых индексов, по возможности замените rowstore индексы на columnstore.
0
|
|
| 05.02.2024, 10:07 [ТС] | ||||
|
andrey197888888, какое это имеет отношение к теме тестирования?
Вы решили сразу в нескольких темах отметиться? Добавлено через 6 минут
0
|
||||
| 05.02.2024, 10:07 | |
|
Помогаю со студенческими работами здесь
20
Один и тот же запрос, работает разное время
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|