Разработчик несет ответственность за все, что делает его код a) правильным и b) быстрым.
Это, конечно, включает создание индексов и таблиц.
Делать DBA
ответственным за индексы - плохая идея. Что делать, если код работает медленно? Кого винить: разработчика с плохим кодом или DBA
с плохим индексом?
A DBA
должен передавать операции поддержки базы данных, такие как создание резервных копий, создание инфраструктуры и т. Д., И сообщать о нехватке ресурсов.
Он или она не должен быть единственным лицом, принимающим решения, влияющие на производительность всей системы баз данных.
Реляционные базы данных, как и сейчас, еще не находятся в таком состоянии, которое позволило бы разделить ответственность, чтобы разработчики могли выполнять запросы вправо , а DBA
могло бы их быстро . Это миф.
Если ресурсов не хватает (скажем, индекс ускоряет выполнение некоторых запросов за счет некоторой медленной операции DML
), администратор БД должен сообщать , а не фиксированный .
Теперь пришло время принимать решения. Что нам нужно больше, быстрый запрос или быстрая вставка?
Это решение должно быть принято руководителем программы (а не DBA
или разработчиком).
И когда решение будет принято, разработчику следует дать новое задание: «сделать запрос SELECT
как можно быстрее, учитывая, что у вас нет этого индекса». Или «сделайте запрос INSERT
как можно быстрее, учитывая, что у вас будет этот индекс».
Разработчик должен знать все о как работает база данных, когда она работает нормально .
A DBA
должен знать все о , как заставить базу данных работать нормально .
Последнее включает в себя возможность делать резервную копию, возможность восстановления из резервной копии и возможность обнаруживать и сообщать о конфликте ресурсов.