Миллсап про тюнинг
Jun. 11th, 2011 01:38 amМеня до сих пор удивляет то, что на рынке Oracle производительность считается работой администраторов, а не разработчиков. От разработчиков как минимум на 90% зависит, насколько быстро сможет работать приложение. Я думаю, так повелось с тех времён, когда множество проектов имело команды администраторов, но не имело команд профессиональных разработчиков.
Большинство тех проектов были связаны с внедрением больших «коробочных» приложений типа Oracle Financial и Manufacturing Applications (которые выросли в Oracle E-Business Suite). Разработчики, участвовавшие в таких проектах, не были профессионалами. Как правило, это были люди от бизнеса, не имевшие программистского образования, но им сказали, что теперь-де каждый может написать программу на этом новом языке четвёртого поколения, именуемом SQL.
Ясное дело, что внедряя Чрезвычайно Гибкое Приложение с двадцатью тысячами таблиц в базе, вы столкнётесь с проблемами производительности. Кто-то должен их решать, и администраторы оказались единственными технически подкованными людьми, способными на это. Они также участвовали в организации первых конференций Oracle, и я думаю, что с тех пор термин «performance tuning» стал прочно ассоциироваться с администраторами.
В результате по сей день встречается убеждение, что решение проблем производительности сводится к списку хитрых трюков, которые можно попробовать в надежде, что система начнёт работать чуточку быстрее. Слово «тюнинг» говорит само за себя. Я практически никогда его не использую, кроме как в насмешку, потому что это всего лишь дешёвая имитация того, что действительно нужно, а именно — настоящей оптимизации производительности, которая является задачей дизайнеров и разработчиков.
Довольно свободный перевод кусочка из оригинала.
no subject
Date: 2011-06-13 02:11 pm (UTC)no subject
Date: 2011-06-17 06:07 am (UTC)Традиционно-ориентированные разработчики привыкли к императивному стилю программирования. Сам всё запрограммировал, сам расхлёбываешь. Собственно, что повсеместно и происходит: попытки навязать БД своё видение алгоритма редко бывает удачным, потому что мыслить циклами при работе с БД нельзя.
А вот SQL — штука декларативная, там изрядная часть работы происходит за кулисами оптимизатора. И разработчик должен учиться не мешать оптимизатору, и даже наоборот — помогать. То есть переключиться в декларативную парадигму. И администратор тут совершенно ни при чём.
Другое дело, что оптимизатор иной раз не справляется, и чтобы разобраться в проблеме и аккуратно её исправить, требуются знания, которые к традиционному программированию отношения вроде как не имеют: все эти трассировки, ожидания, планы запроса... Считать ли это областью ответственности администратора? На мой взгляд, тоже нет.