Проектирование баз данных. Основы

Автор: | 10.05.2019

Процесс проектирования базы данных начинается с ее нормализации.

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

  • остаются типы столбцов, обеспечивающие минимальный размер
  • по возможности из базы данных исключаются значения null
  • по мере возможности остаются числовые столбцы
  • преимущественно остаются столбцы фиксированной длины
  • по возможности для столбцов задаются значения по умолчанию

Если MySQL выполняется с установленным параметром log-long-format, то база данных будет записывать в журнал запросы, которые не используют индексы.

На быстродействие базы данных большое влияние оказывает корректное использование индексов. Объявление индексов представляет собой своего рода искусство. При работе с индексами соблюдайте несколько простых правил:

  • индексируйте столбцы, указанные в операторах where и order by
  • не индексируйте столбцы, в которых допускается значение null
  • применяйте ограничения по длине к индексам, созданным для столбцов переменной длины, например индексируйте только первые несколько символов фамилии
  • используйте запросы explain, чтобы подтвердить использование индексов
  • просматривайте индексы после определенного периода активности сайта, чтобы убедиться в том, что они соответствуют реальным данным.

Заключительное замечание по проектированию баз данных, которому обычно уделяют меньше внимания, касается применяемого механизма хранения данных (или типа таблиц). Одно из преимуществ MySQL заключается в поддержке нескольких хранилищ данных, среди которых можно выбрать наиболее подходящие для нас. Например, можно создавать таблицы MySQL в памяти. В результате обеспечивается исключительно большая скорость обработки таблиц, но становится не возможным постоянное хранение данных. Чаще всего применяются механизмы хранения данных MySQL, которые называются InnoDB и MyISAM. В последних версиях механизм InnoDB применяется в MySQL по умолчанию и обеспечивает сохранность данных в опасных ситуациях.

Параметр log-slow-queries в MySQL может применяться для перехвата «зловредных» запросов.

В соответствии со стандартами производительности и нормализации столбцы таблиц должны определяться как not null. Также соответствующим образом установлены заданные по умолчанию значения.

Индексы нужно создавать в столбцах первичных ключей, в столбцах с уникальными значениями, в столбцах, используемых в объединениях и в конструкциях WHERE и ORDER BY.

Если вы обладаете правами доступа к базе данных на уровне администратора, то должны знать о конфигурациях, влияющих на быстродействие базы данных MySQL. Начните с настроек back_log, key_buffer_size, max_connections и thread_cache_size. С помощью файла конфигурации можно перейти от заданных по умолчанию значений этих настроек к настройкам, которые являются более уместными для вашего сервера и сайта. Обратитесь к руководству по MySQL, чтобы получить дополнительные сведения о версии MySQL, выполняющейся на сервере. Предполагается, что вы обладаете соответствующим уровнем контроля над сервером.

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