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

Откуда: Рига
Сообщений: 39
Добрый вечер,
работаю уже много лет с базами данных и оптимизацией запросов, но тут столкнулся с необходимостью теоретизирования оптимизации. Конкретно, необходима разделение, какие этапы относятся к тюнингу, а какие к оптимизации в модели оптимизации запросов для лучшей производительности.
её этапы:
1) Оптимизация физического дизайна
2) Оптимизация запросов
3) Переработка курсоров в запросы
4) Индексирование
5) Оптимизация конкуренции запросов
6) Улучшение серверного оборудования

Помогите пожалуйста распределить , что к оптимизации, а что к тюнингу, и если кто может посоветовать короткую формулировку тюнинга запросов, заранее безмерно благодарен, а то в голове уже совсем каша
6 июн 12, 19:46    [12677859]     Ответить | Цитировать Сообщить модератору
 Re: Тюнинг и оптимизация СКЛ запросов  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Klopovnik
3) Переработка курсоров в запросы
Эээ ... тюнинг.

Уверяю, поверьте Фейнману, это бесполезно.
От сопоставления двух слов наборов звуков с этими 6тью, ничего в голове не прибавиться - второй закон термодинамики.
7 июн 12, 00:52    [12678859]     Ответить | Цитировать Сообщить модератору
 Re: Тюнинг и оптимизация СКЛ запросов  [new]
Glory
Member

Откуда:
Сообщений: 104751
Тюнинг и есть
или улучшение оригинальных характеристик чего-либо
или создание уникального стиля для чего-либо
7 июн 12, 09:31    [12679377]     Ответить | Цитировать Сообщить модератору
 Re: Тюнинг и оптимизация СКЛ запросов  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
Klopovnik,

Пояните, какой смысл вы вкладываете в слова "тюнинг" и "оптимизация". Без пояснений, вопрос похож на "что относится к квадратам, а что к равносторонним прямоугольникам".

Если говорить о проблеме производительности, то я бы разделил методы, на следующие условные группы:
1. Оптимизация алгоритмов (тут может быть: переход от процедурного стиля к set based, отказ от курсоров, или вообще изменения на уровне дизайна приложения, типа переноса часто выполняющихся запросов с клиента на сервер, и прочая оптимизация логики. Имхо, оптимизация в этой категории, дает наибольший эффект, прежде чем оптимизировать что-то дальше, нужно посмотреть, а вообще, правильно ли мы поняли логику задачи)
2. Оптимизация дизайна БД (тут может быть: перепроектирование схемы, нормализация, денормализация, создание нужных и удаление ненужных индексов, перепроектирование индексов, создание ограничений, обновления статистики, борьба с фрагментацией и т.д.)
3. Оптимизация дизайна запроса (запрос возвращающий одинаковые результаты, но написанный по разному, дает разную производительность, тут может быть переписывание запроса в другой манере, или при помощи других операторов, изучение планов, возможно возврат к предыдущей или даже первой стадии, использование хинтов и т.д.)
4. Ну и улучшение железа, когда совершенно четко определены узкие места, и ничего уже не помогает.
7 июн 12, 11:24    [12680369]     Ответить | Цитировать Сообщить модератору
 Re: Тюнинг и оптимизация СКЛ запросов  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
SomewhereSomehow, не знаю как вы это так разделяете.

По мне "оптимизация" (грязное слово) может быть в рамках всей архитектры и какие либо части могут касаться БД или не касаться. БД это всего лишь частный кирпичек системы, а не краеугольный камень. Краеугольный камень это модель - всё остальное лишь средства.

Не могу согласиться что "дизайн бд" это не относится к вашей "оптимизации алгоритмов", аналогично и "Оптимизация дизайна запроса".
Запросы это не какая-то вторичная примочка к остальному - а равноправный элемент при разработке.

Если не понимать основы построения планов и принципа построения запросов, и воспринимать писанину через курсоры как просто равноправный вариант в системе - то это совершенно ничего не смыслить в программировании, вааще.

Дьявол в деталях.

Если вы про то, что архитектура это дело маркетологов и можно "играться" с системой в рамках абстрактных мега-блоков в вакууме: СУБД, Кластера, Виртуализация, Администрирование БД (индекирование бла-бла типа неважно - всё рвно наймём администратора БД со стороны), аля Аутсорсинг, фреймворки и т.п. всяйкой мерзости. То естественно что ни о какой оптимальной системе даже думать нельзя - за этими тучами абстракций первоначальный смысл задачи теряется полностью.

Все вот эти СУБД-шные словечки аля индекс/типы соединений/параллелизация запросов ... можно нормально представлять как просто частный случай конкретных програмных понятий и решений, в общем виде, да абстрактно. И поэтому модель решения, модель системы будет видеться просто и понятно и не будет смешиваться с реализацией в конкретных продуктах и с их слэнгами.

Klopovnik.

Ссори, но у каждого свои "кубики"/"пласты" понятий (да разный у нас информационный метаболизм), но главное со своими уровнями первопричинности и вторичности. И в этом вся проблема ... "теоретизирования".

Тюнинг и оптимизация это оксюмороны и симулякры. Никакой практической ценности не несут. Зачем это теоретизировать? Какая разница как вы то или иное действие назовёте, первоначальный смысл не поменяется. Или вы лингвист/гуманитарий, чтоб придумать сленг для вторичных понятий (вытекающих из основных)?

IMXO
7 июн 12, 13:51    [12681833]     Ответить | Цитировать Сообщить модератору
 Re: Тюнинг и оптимизация СКЛ запросов  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
Mnior,

как много слов. я ж написал, группы "условные". По поводу "бд кирпичик в системе" - тоже написал, в первом пункте, про изменение дизайна приложения. Про дизайн запросов - тоже написал что необходимо возвращаться к предыдущим пунктам и рассматривать в комплексе. Если вкратце, что я имел ввиду, так это при проблемах производительности, если что-то в бд работает медленно я задаю себе три вопроса:
1) выбрал ли я самый хороший алгоритм, нельзя ли сделать это по-другому?
2) все ли в порядке с дизайном, со статистикой, все ли есть индексы, полезные для запроса?
3) если все равно медленно, смотрим в план, смотрим где ошибки, почему индекс не используется или что-то еще.
Именно в таком порядке.
И, да, термины субд, так ведь про бд спрашивали.
7 июн 12, 14:12    [12682044]     Ответить | Цитировать Сообщить модератору
 Re: Тюнинг и оптимизация СКЛ запросов  [new]
Klopovnik
Member

Откуда: Рига
Сообщений: 39
да ситуация такова, что уже расписал, что имеется в виду под каждым из пунктов.
На данный момент у меня вырисовывается следующее:
Тюнинг - это настройка запросов для лучшей производительности, в частности по необходимиости применение хинтов, вынос частей в подзапросы, добавление конструкций эксистс, вместо аутер джойнов итд.
а оптимзацация - изменение дизайна, индексирование, конкуренция, конечно частично сюда относятся и сами запросы, то есть выбрасывание ненужных параметров, джойнов итд.

ту SomewhereSomehow
ответьте на один вопрос, а смысл перестраивать запросы, до изменения физического дизайна БД?
Ведь по Вашему получится, что перестройку надо делать 2 раза, до изменения дизайна и после, что бы запросы могли работать с новом дизайном, или я что-то не так понял?
7 июн 12, 14:52    [12682408]     Ответить | Цитировать Сообщить модератору
 Re: Тюнинг и оптимизация СКЛ запросов  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
Klopovnik
ту SomewhereSomehow
ответьте на один вопрос, а смысл перестраивать запросы, до изменения физического дизайна БД?
Ведь по Вашему получится, что перестройку надо делать 2 раза, до изменения дизайна и после, что бы запросы могли работать с новом дизайном, или я что-то не так понял?
Эээ...вы ко мне обращаетесь? Я вообще-то смену дизайна схемы перед дизайном запросов поставил.
На простом примере с этого же форума, часто публикуют задачи строку типа "1,2,3,..,1000" разобрать отдельно на значения, после чего сджойнить их с другой таблицей. И при такой структуре, ты хоть обоптимизируйся весь в запросе, но реализация с нормальной схемой один-ко-многим все равно будет быстрее и лучше.
7 июн 12, 15:02    [12682514]     Ответить | Цитировать Сообщить модератору
 Re: Тюнинг и оптимизация СКЛ запросов  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
SomewhereSomehow
группы "условные".
Ну и смысл тогда в них?

Сразу отвечу на некоторые возможные последующие вопросы: Unix подход (точнее максимальная независимость модулей) определяет насколько сильно можно заоптимизировать какую-то часть или в целом, вместо поверхностного тюнинга. При тех же усилиях.

Тюнинг сегодня может убить оптимизацию завтра. Не надо вводить эти два понятии заменяя ими понимание системы. Лучше сконцентрировать за самой задаче.

SomewhereSomehow
И, да, термины субд, так ведь про бд спрашивали.
Писал же уже, неправильный подход, думая неточными частностями приходим к непрвильным решениям. В зависимости от уровня понимания системы рызными специалистами у одного и того же термина возникают совершенно разные ассоциации.
Лучше пользоваться более устойчивыми терминами. А они более абстракты и более не привязаны к частным реализациям.

SomewhereSomehow
а смысл перестраивать запросы, до изменения физического дизайна БД?
Нет в этом проблемы. Система может быть настолько "задизайнена" предыдущем горе-программистом, что про задачу уже никто не знает. Бывает что система не верна на 100%, все "решения" были от неправильного понимания.
И вот с какой стороны потрошить рыбу зависит от ситуации средаств и уровня доступа. Подходы и стратегии бывают разные.
При перестройке системы из одного состояния/реализации в другое есть промежуточные.
Банальное ковыряние и перестройка запросов может помочь в вопросе, а есть ли мальчик.
Но в целом конечно менее конструктивно, если оптимизация главная задача бизнеса.

PS: Формализация вещь капризная и очень ответственная.
Бреда с каждым годом больше. Общение - единственное решение. (и почему у западных евровейцев его больше)

IMXO
8 июн 12, 18:03    [12690043]     Ответить | Цитировать Сообщить модератору
 Re: Тюнинг и оптимизация СКЛ запросов  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
Mnior
Ну и смысл тогда в них?

Попросили, я разбил, делов-то.
Mnior
Тюнинг сегодня может убить оптимизацию завтра. Не надо вводить эти два понятии заменяя ими понимание системы. Лучше сконцентрировать за самой задаче.
Эмм...я какбэ о том же, если вы не заметили. Я надеялся, что пункты переосмысление дизайна приложения или структуры - наталкивают на эту мысль. Даже в правилах форума, есть мудрое замечание
автор
Подумайте также над тем, чтобы описать решаемую Вами задачу целиком. Возможно, что тот способ решения, который Вы стремитесь воплотить в жизнь, не является наилучшим, а лишь кажется Вам таковым.
Подписываюсь под этим.

Mnior
Писал же уже, неправильный подход, думая неточными частностями приходим к непрвильным решениям. В зависимости от уровня понимания системы рызными специалистами у одного и того же термина возникают совершенно разные ассоциации.
Лучше пользоваться более устойчивыми терминами. А они более абстракты и более не привязаны к частным реализациям.

Вы никак начитались про единый язык (ubiquitous language)? Это правильное чтение, но речь тут, имхо, все же о другом. А именно о конкретике в базах данных. А не о взаимодействии разнопрофильных специалистов. И логично использовать термины принятые в этом сообществе. Впрочем, если имелось ввиду другое, то значит я не понял, о чем вы.

Mnior
SomewhereSomehow
а смысл перестраивать запросы, до изменения физического дизайна БД?
Нет в этом проблемы. Система может быть настолько "задизайнена" предыдущем горе-программистом, что про задачу уже никто не знает. Бывает что система не верна на 100%, все "решения" были от неправильного понимания.
И вот с какой стороны потрошить рыбу зависит от ситуации средаств и уровня доступа. Подходы и стратегии бывают разные.
При перестройке системы из одного состояния/реализации в другое есть промежуточные.
Банальное ковыряние и перестройка запросов может помочь в вопросе, а есть ли мальчик.
Но в целом конечно менее конструктивно, если оптимизация главная задача бизнеса.

Ну хорэ мне уже приписывать цитаты, которые мне не принадлежат.
8 июн 12, 19:07    [12690357]     Ответить | Цитировать Сообщить модератору
 Re: Тюнинг и оптимизация СКЛ запросов  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
SomewhereSomehow
Ну хорэ мне уже приписывать цитаты, которые мне не принадлежат.
Чёрд. Ссори очередной раз.

SomewhereSomehow, не не про язык программирования. А больше про мышление и категории. И смысл от чего отталкиваться очень важно. И термины, я в основном про Тюнинг vs Оптимизация.

А в остальном думая в общих терминах можно употреблять слова, в частных. Главное чтоб не происходили подмены.

SomewhereSomehow
Попросили, я разбил, делов-то.
А зачем? А для чего?
Попрошу вас надеть футболку Арии, шарф, купить пивка и пойти смотреть футбол. И вы тупо это сделаете? Просто так?
8 июн 12, 19:28    [12690430]     Ответить | Цитировать Сообщить модератору
 Re: Тюнинг и оптимизация СКЛ запросов  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
Mnior
SomewhereSomehow, не не про язык программирования. А больше про мышление и категории. И смысл от чего отталкиваться очень важно. И термины, я в основном про Тюнинг vs Оптимизация.

А в остальном думая в общих терминах можно употреблять слова, в частных. Главное чтоб не происходили подмены.

По-моему термины тюнинг и оптимизация отдают дань трудностям перевода. Я хз что каждый вкладывает в это понятие. ИМожет быть имеется ввиду что тюнинг, это тонкая оптимизация, но где провести грань... И вообще термины зависят от контекста. Допустим я на девятку поставил спойлер, залил присадку, затонировал окна и написал "чотки пацан" - это блин тюнинг или оптимизация. Фигня все это.

Mnior
SomewhereSomehow
Попросили, я разбил, делов-то.
А зачем? А для чего?
Попрошу вас надеть футболку Арии, шарф, купить пивка и пойти смотреть футбол. И вы тупо это сделаете? Просто так?

"А если все прыгнут с 10-го этажа, ты тоже прыгнешь?" (с) мама, детство. Ответ, да прыгну, если в данный момент это совпадает с моими взглядами. Кстати, про арию, от футбола и шарфиков я пожалуй воздержусь, а вот арию под пивко - с удовольствием, вспомню студенческую молодость, так что в качестве "к позыву антагонизма" - пример выбран неудачно, напугали дальнобойщика камазом =)
8 июн 12, 21:49    [12690859]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить