Самый быстрый способ стать экспертом MySQL?

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

Хотя я самоучитель в PHP, я очень уверен в себе и в коде, который я пишу, легко может сравнить его с другими и т.д.

В MySQL я не уверен, следует ли (и в каких случаях) использовать INNER JOIN или LEFT JOIN, и я не знаю о большом объеме функциональности, которая у него есть. Хотя я написал код для баз данных, которые обрабатывали десятки миллионов записей, я не знаю, оптимально ли это. Я часто нахожу, что небольшая настройка сделает запрос менее 1/10 от первоначального времени... но откуда я знаю, что мой текущий запрос не слишком медленный?

Я хотел бы полностью убедиться в этой области в способности оптимизировать базы данных и быть масштабируемыми. Использование не является проблемой - я использую его ежедневно различными способами.

Итак, вопрос в том, какой путь? Читая книгу? Веб-сайт/учебники? Рекомендации?

Ответ 1

EXPLAIN - ваш друг для одного. Если вы научитесь использовать этот инструмент, вы сможете очень эффективно оптимизировать свои запросы.

  • Отсканируйте руководство по MySQL и прочитайте книгу MySQL Paul DuBois.
  • Используйте EXPLAIN SELECT, SHOW VARIABLES, SHOW STATUS и SHOW PROCESSLIST.
  • Узнайте, как работает оптимизатор запросов.
  • Оптимизируйте форматы таблиц.
  • Поддерживайте свои таблицы (myisamchk, CHECK TABLE, OPTIMIZE TABLE).
  • Используйте расширения MySQL, чтобы ускорить выполнение.
  • Напишите функцию UDF MySQL, если вы заметили, что вам понадобится функция во многих местах.
  • Не используйте GRANT на уровне таблицы или столбца, если вам действительно не нужно он.

http://dev.mysql.com/tech-resources/presentations/presentation-oscon2000-20000719/index.html

Ответ 2

только, чтобы стать экспертом в чем-то, есть опыт и обычно требуется время. И хороший наставник (ов), который лучше вас, чтобы научить вас тому, что вам не хватает. Проблема в том, что вы не знаете, чего не знаете.

Ответ 3

Исследования и опыт - если у вас нет проектов, гарантирующих исследование, сделайте их. Создайте три таблицы со связанными данными и создайте сценарии.

например.

Сделайте таблицу фильмов своих данных

создать таблицу пользователя

составить таблицу оценок для пользователей

тратить время на изучение того, как работают совлокальные работы, как получать фильмы определенного диапазона оценок в одном запросе, как искать таблицу фильмов (например, регулярное выражение) - как упоминалось, используйте объяснение, чтобы увидеть, как разные вещи влияют на скорость. Весело провести день; Я гарантирую ручка на нем будет значительно увеличена.

Если вы все еще боретесь за случайные сценарии, начинайте смотреть здесь на SO для вопросов и сами тестируйте эти сценарии.

Ответ 4

Я не знаю, есть ли в MIT open coureseware что-нибудь о базах данных... Ну что, знаешь? Они делают: http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-830Fall-2005/CourseHome/

Я бы порекомендовал это как один источник, основанный только на репутации MIT. Если вы можете пройти формальный курс в университете, вы можете найти это полезным. Также хорошее понимание фундаментальной дискретной математики/логики, конечно, не принесет вреда.

Ответ 5

Как говорили другие, время и практика - единственный реальный подход.

Более того, я обнаружил, что EXPLAIN помогал мне лично. Обучение чтению результатов этого, вероятно, было самым большим одиночным прыжком, который я сделал, чтобы писать эффективные запросы.

Вторая вещь, которую я нашел очень полезной, была SQL Tuning от Dan Tow, в которой описывается довольно формальная методология для извлечения производительности. Это немного связано, но хорошо работает во многих ситуациях. И если ничего другого, это даст вам гораздо лучшее представление о том, как обрабатываются соединения.

Ответ 6

Начните с класса, подобного этому: https://www.udemy.com/sql-mysql-databases/

Затем используйте то, что вы научились создавать и управлять несколькими базами данных SQL и запускать запросы. Знакомство с экспертным уровнем действительно связано с практикой. Но, конечно же, вам нужно изучить предметы, прежде чем вы сможете практиковать.