Какой уровень MySQL/MariaDB нужно знать среднему php-программисту?

Планирую в скором времени менять работу и решил подготовиться. К сожалению, на данный момент 95% работы с базой у меня это миграции и ActiveRecord. Уровень всех моих сайтов — CRUD. В одном проекте даже хранимые процедуры вызывал, но не писал свои ни разу :)

Мой текущий уровень:
1) основа основ (insert, update, delete, create table, join).
2) вроде бы, умею создать адекватную нормализованную базу, поставить нужные FK, индексы.
3) не особо понимаю как работать с expain. Точнее, что делает эта команда я знаю, но как правильно работать с результатом её действия не знаю. Как оптимизировать запросы.
4) никогда не занимался репликациями, шардингами, партициями. Какие движки и когда нужно использовать. Всегда InnoDB.

Но, тем не менее, рассчитываю на должность миддла и поэтому хочу подготовиться к собеседованиям. Что будут спрашивать? Какую литературу почитать и попрактиковаться?

PS: Страх ещё вызван тем, что на одном из прошлых собеседований меня начали спрашивать, что такое PK и индексы. Ну я ответил в общем. Потом, он начал говорить, что этого недостаточно, нужно знать как это устроено на уровне файлов и чуть ли не исходников субд. Это действительно, я должен знать подобные тонкости?
  • Вопрос задан
  • 2184 просмотра
Решения вопроса 2
FanatPHP
@FanatPHP
Чебуратор тега РНР
Для миддла надо подтянуть только п. 3. У Светы Смирновой есть несколько отличных презентаций по работе с explain, они легко находятся гуглом.

Еще желательно различать транзакции и блокировки, когда что использовать.

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

Вообще, по моему опыту, не стоит переоценивать результаты интервью. Когда я 5 лет назад ходил по собеседованиям, то после двух из них, которые я сам посчитал проваленными, мне прислали предложения о работе.
Ответ написан
un1t
@un1t
Потом, он начал говорить, что этого недостаточно, нужно знать как это устроено на уровне файлов и чуть ли не исходников субд. Это действительно, я должен знать подобные тонкости?


Нет это заморочки конкретного человека.

Эксплейн надо понимать, что он выводит и как с его помощью найти проблему, оптимизировать запрос. А так нужно знать про индексы, селективность, транзакции, джойны, group by, having, подзапросы.

Я много раз видел что люди спрашивают, зачем знать SQL, если есть ORM. Десять лет назад, люди спрашивали обратное - зачем нужен ORM, если я тоже самое могу написать на SQL. У меня ощущение, что веб-разрабы с опытом работы от пары лет вовсе не знают SQL. Либо они используют только ORM, либо вообще какую-нибудь MongoDB (хотя во многих случаях ее использование не адекватно задаче).

Ну и от команды к команде средний уровень сильно разнится.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Wolfnsex
@Wolfnsex
Если не хочешь быть первым - не вставай в очередь!
PS: Страх ещё вызван тем, что на одном из прошлых собеседований меня начали спрашивать, что такое PK и индексы. Ну я ответил в общем. Потом, он начал говорить, что этого недостаточно, нужно знать как это устроено на уровне файлов и чуть ли не исходников субд. Это действительно, я должен знать подобные тонкости?
Чёткого деления на "Jun/Mid/Sen" - нет и быть не может по определению. Технологий столько, что знать их все кому-либо не под силу. К тому же, технологии развиваются очень быстро... Соотв., компаний так же много и требований к должности у них тоже много. Тот, кто сейчас работает на должности ведущего разработчика в конторе типа ООО "Шаражмонтажсайтпродаж" (условно), вряд ли сможет претендовать на должность хотя бы мидла в какой-то серьёзной, солидной фирме.
Ответ написан
inoise
@inoise Куратор тега Карьера в IT
Solution Architect, AWS Certified, Serverless
Среднему программисту надо в любом случае иметь понимание. Надо понимать агрегаты, писать запросы по памяти, разбираться в связях и всех видах интересов, уметь в транзакции и понимать как работает анализатор запросов. Уметь в explain надо, но знать его досканально не обязательно - главное уметь делать выводы.

Скорее всего в той компании на эту позицию нужен более квалифицированный разраб. Ну, или ини хотели прощупать ваш текущий потолок
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы