Какова хорошая стратегия для планирования роста WordPress DB?

Надеясь на некоторые отзывы по теме оптимизации и оставаясь на вершине производительности по мере того, как база данных WordPress растет … рисовать картину … скажем, у вас есть сайт WordPress / Buddypress MU, который начинается примерно в 150 кб (ванильная установка) … с течением времени пользователи добавляют блоги, форумы, сообщения и комментарии, а база данных растет до 5 мб …. затем 10 мб в следующем году …. Также предполагается, что элементы управления хостингом – это стандартная система с размещением, такая как Cpanel или Plesk.

  • В какой момент количество записей в базе данных влияет на производительность внешнего веб-сайта?
  • Что вы можете сделать в качестве менеджера веб-сайта, чтобы он работал плавно, по мере роста вашей базы данных?
  • Что вы можете ожидать с точки зрения производительности после 5-го года, когда ваша база данных составляет 500-600 мб?

Благодарим за любые отзывы, которые могут возникнуть при хранении плотного корабля.

С Уважением,

С.

Ваши конкретные вопросы:

1) Не существует строгого ограничения «количества записей», которые может содержать БД до того, как будет затронута производительность. Производительность зависит от вашего оборудования и конфигурации, как и от размера и структуры БД.

2) Если вас беспокоит масштабируемость вашего уровня БД, вы можете запустить его в кластере или в облачном поле или VPS, который позволяет изменять размер. Если ваша БД начинает становиться вялой, вы можете увеличить ее (хотя обычно за дополнительную плату). Эти параметры добавляют стоимость, но на самом деле это лучший способ обеспечить масштабируемость БД.

3) Это действительно зависит от вашей настройки хостинга и вашей архитектуры БД. Но в целом (если вы не находитесь в действительно дешевой коробке), я бы не стал беспокоиться о базе данных WordPress размером 30 МБ. WordPress отлично справляется с индексацией таблиц, и даже конфигурация OOB MySQL должна легко обрабатывать запросы WordPress в БД такого размера. Когда вы входите в Gigabytes – вот тогда вам, возможно, придется серьезно относиться к параметрам оптимизации производительности.

В целом:

Если вы беспокоитесь о производительности, сосредоточьтесь на настройке существующей настройки MySQL и / или настройке слоя кеширования. Кэширование может значительно снизить нагрузку на MySQL (особенно на сайтах WordPress, поскольку они обычно выполняют большое количество запросов БД).

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

Ни один из этих материалов не относится к WordPress. И я не уверен, что у вопроса есть ответы, которые не относятся ни к какому веб-сайту или приложению, запущенному в стек LAMP. Но, возможно, у кого-то есть предложения относительно структур таблицы MU или других трюков DB, ​​специфичных для WP … Я не знаю.

Строго из точки зрения MySQL, у меня есть предложения по улучшению кэширования данных / индексов для экземпляра MySQL.

Имейте в виду, что существуют два основных механизма хранения для MySQL

  • MyISAM
  • InnoDB

Их механизмы кэширования различны. Есть что-то, что вы можете сделать, чтобы настроить для Engine Engine по вашему выбору.

MyISAM

MyISAM кэширует только индексные страницы. Он никогда не кэширует данные. Вы можете сделать две вещи для улучшения ввода-вывода для таблиц MyISAM.

Улучшение MyISAM # 1

Любая таблица MyISAM, которая имеет столбцы VARCHAR, может быть внутренне преобразована в CHAR, не касаясь первоначального дизайна. Предположим, что у вас есть таблица mydb.mytable, и вы хотите улучшить ее ввод / вывод, выполните следующие действия:

ALTER TABLE mydb.mytable ROW_FORMAT=Fixed; 

Это увеличит размер таблицы 60% -100%, но приведет к увеличению производительности ввода-вывода на 20-30% без изменения чего-либо еще . Я писал об этом раньше в DBA StackExchange:

Улучшение MyISAM # 2

Вам необходимо увеличить кеш-ключ MyISAM (по размеру key_buffer_size ). Запустите этот запрос, пожалуйста:

 SELECT CONCAT(ROUND(KBS/POWER(1024, IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.4999), SUBSTR(' KMG',IF(PowerOf1024<0,0, IF(PowerOf1024>3,0,PowerOf1024))+1,1)) recommended_key_buffer_size FROM (SELECT LEAST(POWER(2,32),KBS1) KBS FROM (SELECT SUM(index_length) KBS1 FROM information_schema.tables WHERE engine='MyISAM' AND table_schema NOT IN ('information_schema','mysql','performance_schema')) AA ) A, (SELECT 2 PowerOf1024) B; 

Это покажет вам идеальный key_buffer_size, основанный на вашем текущем наборе данных.

InnoDB

InnoDB кэширует данные и индексы. Если вы преобразовали все данные в InnoDB и в настоящее время запускаете WordPress из всей базы данных InnoDB, вам необходимо определить размер буфера InnoDB Buffer Pool (размер файла innodb_buffer_pool_size ). Запустите этот запрос, пожалуйста:

 SELECT CONCAT(ROUND(KBS/POWER(1024, IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.49999), SUBSTR(' KMG',IF(PowerOf1024<0,0, IF(PowerOf1024>3,0,PowerOf1024))+1,1)) recommended_innodb_buffer_pool_size FROM (SELECT SUM(data_length+index_length) KBS FROM information_schema.tables WHERE engine='InnoDB') A, (SELECT 2 PowerOf1024) B; 

Это покажет вам идеальный key_buffer_size, основанный на вашем текущем наборе данных.

Прогнозы

Если вы прогнозируете, что ваш набор данных будет расти в 20 раз больше, просто несколько, что рекомендует этот запрос на 20. Предположим, что ваш набор данных MyISAM составляет 15 МБ, а 3 МБ – это сумма ваших индексов. Если вы оцениваете, что у вас будет в 20 раз больше данных, установите key_buffer_size в 60MB, как это, в /etc/my.cnf:

 [mysqld] key_buffer_size=60M 

затем перезапустите MySQL. То же самое относится к буферному пулу InnoDB.

Если все ваши данные – InnoDB, вам необходимо выполнить полную очистку инфраструктуры InnoDB, которую я разместил в StackOverflow .

В какой момент количество записей в базе данных влияет на производительность внешнего веб-сайта?

Когда запросы запускают ограничение ресурса вашей учетной записи хостинга.

Что вы можете сделать в качестве менеджера веб-сайта, чтобы он работал плавно, по мере роста вашей базы данных?

Следите за использованием ресурсов. Примите меры для увеличения ресурсов и / или оптимизации использования.

Что вы можете ожидать с точки зрения производительности после 5-го года, когда ваша база данных составляет 25-30 мегабайт?

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

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