Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4   вперед  Ctrl      все
 Re: Что есть "умение оптимизировать запросы"  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
is_me
defragmentator
andsm,

1. Индексы (построить нужные, убрать лишние)
2. Обновить статистику
3. По возможности избавиться от курсоров

Ну а дальше моя фантазия иссякает.
Ну строить запросы в соответствии с индексами - это включает уже п.1


Да курсоры это зло, но если критерием служит повышение читабельности
и интуитивного понимания того, что написано в запросе (для сопровождения
одного запроса сразу несколькими специалистами)
то относительно быстрый курсор со свойствами static и forward only может помочь.

ниочем.Этих "специалистов" гнать надо,это решит много проблем в будущем.
is_me
..static и forward only..
это про оптимизацию курсоров,там где они действительно необходимы

По сабжу, если считать,что у нас есть достаточно аппаратных ресурсов,то вкратце:
1.Надо определить какой запрос тормозит.
2.Понять почему тормозит.
3.Сделать необходимые действия.
соответственно вытекают требования
1.Владение инструментами для определения "медленных запросов".
2.Анализ плана запроса(ну например что такое Table scan,Table spool,key loockup )
3.Действия по оптимизации(построение индексов,переписывание/разбиения запроса и т.д и т.п. )

ЗЫ is_me может пока не поздно переквалифицируетесь на Oracle.Там ваша анормальное пристрастие к курсорам будет менее заметна.
21 май 12, 17:54    [12590619]     Ответить | Цитировать Сообщить модератору
 Re: Что есть "умение оптимизировать запросы"  [new]
SamMan
Member

Откуда: Moscow
Сообщений: 759
is_me
andsm
пропущено...


Маловато будет, есть еще много чего. После того как пунктов станет заметно больше, и при этом будет умение их реально делать, можно будет говорить про умение оптимизировать запросы.


Только 3 пункт как таковой относится к оптимизации запросов,
1(особенно) и 2 относится к оптимизации базы данных.


Аха.. Т.е. определение хороших/ненужных индексов (п.1) можно провести просто глубокомысленно вглядевшись в структуру БД? Запросы к этой БД "рояли" не играют, да?
21 май 12, 18:16    [12590695]     Ответить | Цитировать Сообщить модератору
 Re: Что есть "умение оптимизировать запросы"  [new]
defragmentator
Member

Откуда:
Сообщений: 20504
denis2710
По сабжу, если считать,что у нас есть достаточно аппаратных ресурсов,то вкратце:
1.Надо определить какой запрос тормозит.
2.Понять почему тормозит.
3.Сделать необходимые действия.

соответственно вытекают требования

1.Владение инструментами для определения "медленных запросов".
2.Анализ плана запроса(ну например что такое Table scan,Table spool,key loockup )
3.Действия по оптимизации(построение индексов,переписывание/разбиения запроса и т.д и т.п. )


1. Определить, какой запрос тормозит, можно, использую профайлер (замеряя время исполнения).
2. С планами у меня туго. В том смысле, что не пользуюсь - до сих пор не было особой нужды. Полагаюсь на эмпирический опыт - перестроить запрос по другому и посмотреть, что будет. Это (3).
21 май 12, 18:19    [12590710]     Ответить | Цитировать Сообщить модератору
 Re: Что есть "умение оптимизировать запросы"  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
defragmentator
С планами у меня туго. В том смысле, что не пользуюсь - до сих пор не было особой нужды. Полагаюсь на эмпирический опыт - перестроить запрос по другому и посмотреть, что будет. Это (3).
Ну, вот если вы так на собеседовании отвечать будете, то можно туда и не ходить.
21 май 12, 18:22    [12590723]     Ответить | Цитировать Сообщить модератору
 Re: Что есть "умение оптимизировать запросы"  [new]
is_me
Member

Откуда: Нижний Новгород
Сообщений: 165
SamMan
is_me
пропущено...


Только 3 пункт как таковой относится к оптимизации запросов,
1(особенно) и 2 относится к оптимизации базы данных.


Аха.. Т.е. определение хороших/ненужных индексов (п.1) можно провести просто глубокомысленно вглядевшись в структуру БД? Запросы к этой БД "рояли" не играют, да?


Определение хороших/ненужных индексов - это никак не оптимизация запроса. Для этого используются определенные запросы, а не пристальный взгляд, но к оптимизации этих, как таковых запросов это не имеет отношения. Это оптимизация всей бд, под конкретное распределение нагрузки на объекты БД.
21 май 12, 20:32    [12591128]     Ответить | Цитировать Сообщить модератору
 Re: Что есть "умение оптимизировать запросы"  [new]
is_me
Member

Откуда: Нижний Новгород
Сообщений: 165
RubinDm
is_me
А если критерий - минимизация времени на написание запроса (разовый запрос)?

Если запрос разовый, то зачем его оптимизировать? Маловероятно, что такой запрос будут писать (и тем более читать) 10 разработчиков, так что можно написать его как угодно, и даже стыдно не должно быть за то, как он написан (разве что перед сервером).

Вот именно. Что потребуется - неизвестно и фантазия скажем бухгалтеров и статистов в этом плане безгранична.
Критерий MIN(срок написания запроса+срок его выполнения).
21 май 12, 20:35    [12591138]     Ответить | Цитировать Сообщить модератору
 Re: Что есть "умение оптимизировать запросы"  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
defragmentator,вообще я бы посоветовал бы начать просвещаться...
Книги по T-SQL
В частности во второй есть Chapter 4: Query Tuning.Там уважаемым автором и более внятно написан про сабж.
Да и вообще книги из разряда must have.
22 май 12, 09:14    [12592177]     Ответить | Цитировать Сообщить модератору
 Re: Что есть "умение оптимизировать запросы"  [new]
defragmentator
Member

Откуда:
Сообщений: 20504
denis2710, must Have - Это слишком общо.
Нужно что-то конкретное для умения читать планы запросов
22 май 12, 10:17    [12592407]     Ответить | Цитировать Сообщить модератору
 Re: Что есть "умение оптимизировать запросы"  [new]
defragmentator
Member

Откуда:
Сообщений: 20504
is_me
Определение хороших/ненужных индексов - это никак не оптимизация запроса. Для этого используются определенные запросы, а не пристальный взгляд, но к оптимизации этих, как таковых запросов это не имеет отношения. Это оптимизация всей бд, под конкретное распределение нагрузки на объекты БД.


Да ну! А как построить запрос, если есть определённые индексы, это уже умение.
А оптимизацию всей БД кто ж Вам разрешит делать?
Если изначально отношение к БД было как к помойке, то так оно и останется.
22 май 12, 10:22    [12592430]     Ответить | Цитировать Сообщить модератору
 Re: Что есть "умение оптимизировать запросы"  [new]
Anka_S
Member

Откуда:
Сообщений: 203
Дооптимизироваться можно до чего угодно в т.ч. и до нехватки ресурсов (памяти ОЗУ или дисковой) из-за использования их самой СУБД на запуск утилит реорганизации, сбора статистики, мониторов слежения или раздуть БД за счёт индексов, которые потом нужно ещё будет постоянно реорганизовать. Лучший способ норамльное проектирование БД с нормализацией
22 май 12, 10:42    [12592531]     Ответить | Цитировать Сообщить модератору
 Re: Что есть "умение оптимизировать запросы"  [new]
is_me
Member

Откуда: Нижний Новгород
Сообщений: 165
defragmentator
is_me
Определение хороших/ненужных индексов - это никак не оптимизация запроса. Для этого используются определенные запросы, а не пристальный взгляд, но к оптимизации этих, как таковых запросов это не имеет отношения. Это оптимизация всей бд, под конкретное распределение нагрузки на объекты БД.


Да ну! А как построить запрос, если есть определённые индексы, это уже умение.
А оптимизацию всей БД кто ж Вам разрешит делать?
Если изначально отношение к БД было как к помойке, то так оно и останется.


А что первично?
Уже есть индексы и под них подстраивать запрос
или уже есть запрос и под него подстраивать индексы?
22 май 12, 10:45    [12592544]     Ответить | Цитировать Сообщить модератору
 Re: Что есть "умение оптимизировать запросы"  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
defragmentator
denis2710, must Have - Это слишком общо.
Нужно что-то конкретное для умения читать планы запросов

Ну для начала наверно желание получать знания.
Может обратиться к первоисточнику - BOL по оглавлению Database Engine/Operation/Perfomance/
дальше надеюсь справитесь сами.
22 май 12, 11:02    [12592687]     Ответить | Цитировать Сообщить модератору
 Re: Что есть "умение оптимизировать запросы"  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
is_me
Как то чувствуется, что идет попытка "выкинуть" курсоры из SQL.

Ущемление прав курсоров, дискриминация. Предлагаю создать народный фронт в их защиту
22 май 12, 11:05    [12592715]     Ответить | Цитировать Сообщить модератору
 Re: Что есть "умение оптимизировать запросы"  [new]
defragmentator
Member

Откуда:
Сообщений: 20504
is_me
defragmentator
пропущено...


Да ну! А как построить запрос, если есть определённые индексы, это уже умение.
А оптимизацию всей БД кто ж Вам разрешит делать?
Если изначально отношение к БД было как к помойке, то так оно и останется.


А что первично?
Уже есть индексы и под них подстраивать запрос
или уже есть запрос и под него подстраивать индексы?


Зависит от постановки. если уже есть куча оптимизированных запросов, путь один - к уже готовым индексам.
А если просто помойка - тогда надо начинать с грамотных индексов. Главное - не переборщить с их количеством, иначе на апдейтах по времени погорите.
22 май 12, 11:38    [12593085]     Ответить | Цитировать Сообщить модератору
 Re: Что есть "умение оптимизировать запросы"  [new]
defragmentator
Member

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

буду исправляться.
22 май 12, 11:42    [12593137]     Ответить | Цитировать Сообщить модератору
 Re: Что есть "умение оптимизировать запросы"  [new]
is_me
Member

Откуда: Нижний Новгород
Сообщений: 165
Мистер Хенки
is_me
Как то чувствуется, что идет попытка "выкинуть" курсоры из SQL.

Ущемление прав курсоров, дискриминация. Предлагаю создать народный фронт в их защиту

Поддерживаю :-)
22 май 12, 11:58    [12593292]     Ответить | Цитировать Сообщить модератору
 Re: Что есть "умение оптимизировать запросы"  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3752
А раскидать дату и индексы оптимальнее по файлгруппам, а файлгруппы и темпдб по рейдам это к оптимизации запросов относится?
22 май 12, 12:04    [12593353]     Ответить | Цитировать Сообщить модератору
 Re: Что есть "умение оптимизировать запросы"  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5115
Ivan Durak
А раскидать дату и индексы оптимальнее по файлгруппам, а файлгруппы и темпдб по рейдам это к оптимизации запросов относится?
ИМХО, относится всё, что приводит к достижению конечной цели (а она как бы не не надувались dba есть "довольство пользователей"), а посему хоть святой водой крапите.
22 май 12, 12:23    [12593533]     Ответить | Цитировать Сообщить модератору
 Re: Что есть "умение оптимизировать запросы"  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5115
defragmentator
1. Индексы (построить нужные, убрать лишние)
и вот насчёт "лишних" я бы раз десять подумал прежде чем.
22 май 12, 12:28    [12593562]     Ответить | Цитировать Сообщить модератору
 Re: Что есть "умение оптимизировать запросы"  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
Ivan Durak
А раскидать дату и индексы оптимальнее по файлгруппам, а файлгруппы и темпдб по рейдам это к оптимизации запросов относится?


imho к оптимизации запросов относятся все действия, которые ведут к получению оптимального плана. раскидывание баз по дискам к этому не относится, так как оптимизатор не учитывает их быстродействие. а вот построение индексов и обновление статистик - относятся
22 май 12, 12:36    [12593646]     Ответить | Цитировать Сообщить модератору
 Re: Что есть "умение оптимизировать запросы"  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3752
Shakill
Ivan Durak
А раскидать дату и индексы оптимальнее по файлгруппам, а файлгруппы и темпдб по рейдам это к оптимизации запросов относится?


imho к оптимизации запросов относятся все действия, которые ведут к получению оптимального плана. раскидывание баз по дискам к этому не относится, так как оптимизатор не учитывает их быстродействие. а вот построение индексов и обновление статистик - относятся

Ну только на "план" мольтся не стоит. Управлять загрузкой того же TempDB нужно? Нужно. А в плане его использования не увидишь, а тем не менее это к оптимизации запросов относиться.
22 май 12, 13:38    [12594245]     Ответить | Цитировать Сообщить модератору
 Re: Что есть "умение оптимизировать запросы"  [new]
andrew shalaev
Member

Откуда: Moscow
Сообщений: 610
Ivan Durak,

Ivan Durak
Управлять загрузкой того же TempDB нужно? Нужно.


Можно поподробней?
22 май 12, 13:42    [12594293]     Ответить | Цитировать Сообщить модератору
 Re: Что есть "умение оптимизировать запросы"  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
Ivan Durak
Shakill
пропущено...


imho к оптимизации запросов относятся все действия, которые ведут к получению оптимального плана. раскидывание баз по дискам к этому не относится, так как оптимизатор не учитывает их быстродействие. а вот построение индексов и обновление статистик - относятся

Ну только на "план" мольтся не стоит. Управлять загрузкой того же TempDB нужно? Нужно. А в плане его использования не увидишь, а тем не менее это к оптимизации запросов относиться.


это вы про какое управление сейчас? вообще в планах есть признаки использования tempdb
22 май 12, 13:57    [12594467]     Ответить | Цитировать Сообщить модератору
 Re: Что есть "умение оптимизировать запросы"  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3752
andrew shalaev
Ivan Durak,

Ivan Durak
Управлять загрузкой того же TempDB нужно? Нужно.


Можно поподробней?

это отдельная и большая тема... кто, как и зачем использует и нагружает темпдб и как с этим жить
22 май 12, 14:28    [12594798]     Ответить | Цитировать Сообщить модератору
 Re: Что есть "умение оптимизировать запросы"  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
Ivan Durak
Ну только на "план" мольтся не стоит. Управлять загрузкой того же TempDB нужно? Нужно. А в плане его использования не увидишь, а тем не менее это к оптимизации запросов относиться.

Вообще смысл путать теплое и мягкое??
Это скорей уже оптимизация работы всего сервера.
Вот если у вас забитая сеть и 100500 пользователей запрашивают по 100500 строчек одновременно,соответственно для пользователей запрос работает медленно, то решение проблем с сетью по этой логике тоже является оптимизацией запросов ??
Увеличение аппаратных ресурсов не всегда ведет у приросту производительности запросов,ну например такому
говнозапросу особо уже ни чего не поможет
select field1,field2 from SomeTableWithTenBillionRec where [schema].somescalarfunction(field3) = 1
22 май 12, 14:38    [12594898]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить