0

Оптимизация базы данных MySQL — как мы уменьшили нагрузку в 10 раз

Опубликовано 17 июля 2022 в рубрике SEO. . Автор: seouspeh

Оптимизация базы данных MySQL — как мы уменьшили нагрузку в 10 раз и сильно увеличили скорость сайта.

Если у вас нестандартный движок, то он может сильно нагружать БД и соответственно тормозить сайт.

Сразу пример

Сразу покажем наш пример (нажмите на изображение, чтобы увеличить):

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

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

Что было сделано:

  • обследовалась вся логика сайта — необходимо понимание всех процессов на сайте
  • оптимизировались запросы к базе данных
  • проводилась работа с индексами БД (обратите внимание FULLTEXT индекс работает значительно медленнее, так как это полнотекстовый индекс)

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

 

10 тонкостей при работе с бд MySQL, о которых мало-кто пишет

  1. Меньшие по размеры типа данных быстрее обрабатываются процессорами и «съедают» меньшего его мощности. В этой связи, проектирование БД очень важно, и делаться должно не после создания проекта, а до. Типы данных с меньшим размером занимаются меньше места на диске и в кэше процессора.
  2. Дату следует хранить в специальных встроенных типах данных, которые уже есть в MySQL. Также знаете ли вы, что лучше выбрать DATETIME или TIMESTAMP? Так вот, TIMESTAMP лучше, так помимо того, что занимает в 2 раза меньше места, так еще и позволяет работать с часовыми поясами и обладает спец средствами для автоматического обновления.
  3. Для IP адресов нужно использовать целочисленные типы данных.
  4. Значение NULL очень сложно для обработки, поэтому не стоит хранить их в значениях.
  5. TINYINT, SMALLINT, MEDIUMINT, INT и BIGINT требуют для хранения 8, 16, 24, 32 и 64 бита соответственно.
  6. Тип FLOAT использует 4 байта, а DECIMAL — 8 байт, так как используется для хранения чисел с плавающей точкой, но с больше точностью. Если большая точность не нужна, то выбор FLOAT.
  7. CHAR — хранить строки точной длины, а VARCHAR — переменной + 1-2 доп байта. Например, VARCHAR(10) — хранить 10 байт +1 дополнительный, а VARCHAR(1000) — 1002 байта. Все эти цифры, вроде малы, но в больших количествах информация имеет тенденцию накапливаться и тратить при обработке большое количество процессорного времени. И CHAR — удаляет пробелы по краям строки — так что будьте внимательны.
  8. Типы данных BLOB и TEXT обрабатываются как отдельный объект. Занимают в базе от 1 до 4 байт и остальное место на диске потребуется.
  9. Значение VARCHAR(10) и VARCHAR(200) могут хранить одинаковое количество информации, но вот обрабатываются они будут по разному, так как под них отводится разное количество памяти. Если вы задумываетесь о производительности, то тут есть простор для оптимизации.
  10. Сортировка ORDER BY — сложный процесс, который затрачивает большое количество «процессора» и происходит во временных пространства. Поэтому, например, таблицы, которые содержат VARCHAR(1000) и с большим количеством строк (млн например) будут очень затратны, с точки зрения производительности.

 

 

 

Смотрите также:

Рекомендовать к прочтению другом?


Еще интересное:



Прокомментировать