Сори, но некогда писать. Второй день занимаюсь жестокой оптимизацией запросов. Один SELECT запрос выполняется очень часто и из-за пидxxxxxxеского SQL Server приводит к deadlock. Впервые вижу, чтобы SELECT запрос приводит к мертвой блокировке. Я все видел, но чтобы доводить до смерти. Это же банальное чтение данных, какого черта взаимноблокировать чтение.
Только что нашел проблему. Простая перестановка последовательности WHEN в CASE операторе уронила количество сканирований таблицы с 205000 до 18.
Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым
А можно полный текст запроса, а то не совсем понятно?..
Без знания структуры базы данных понять запрос размером в три листа A4 будет проблематично. Так что одного запроса в студию будет не достаточно
Да, интересно было бы понять что же именно тормозило запрос к базе. Думаю любая сложнося может быть объяснена простыми словами, понятными даже непрограммисту.
Хотя наверно в эту знаменательную субботу не стоит забивать себе и посетителям голову на тему работы...
Тормозили deadlock-и. Просто запрос очень много выполнял сканов на таблицы,и выполнялся очень часто. Это сайт с миллионами пользователей и поэтому дедлоки возникают, а на частом запросе возникают часто. Оптимизировали количество сканов и вроде бы дедлоки ушли. Вчера не было.
Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.