Intereting Posts
Простой пользовательский почтовый запрос для всех сообщений, или многие из них не работают Детская тема над правилами записи Где находится файл php профиля профиля одного члена (BuddyPress) Как показать содержимое пользовательских полей в результатах поиска? Создайте клон с одного сайта WordPress на другой в течение нескольких минут Пример рабочего кода PHP XML-RPC connex на сайт? Что случилось с моим $ wpdb-запросом? Как исключить сообщения по ID в цикле категории / архива Где я должен добавить необходимый код для добавления дополнительного атрибута в массив тегов kses? При создании страницы изменяются многоузловые ссылки Получать пользователей в запросе и ограничивать вывод пользователя до пяти в случайном порядке Перемещение надписей под изображениями галереи в двадцать четырнадцатой теме fatal Ошибка undefined function switch_to_blog () Проверка HTML не выполняется из-за амперсандов в RSS-ссылке Как повлиять на главную страницу с помощью плагина

Разделить базу данных на большом сайте?

Что будет лучшим способом разделить большую базу данных на одном сайте, а не на нескольких сайтах wp-установки? HyperDB , возможно, для этого (только менее 10 веб-мастеров смогли выяснить, как их установить, согласно активной установке).

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

Сайт имеет эту постоянную ссылку:

sitename.com/year/month/day/postid/post-name Практически только новые сообщения редактируются, и как только опубликованные сообщения не изменяются.

Любая идея, как ускорить создание базы данных или, лучше, опубликовать сообщение в одной базе данных и создать новую базу данных для будущих сообщений?


Обновить:

Первая установка : установка в корне сайта с новой базой данных, без старых опубликованных сообщений, только для будущих сообщений. Структура Permalink как бы:

sitename.com/year/month/day/postid/post-name

Вторая установка: Создала папку «2015» в корне сайта и установила WP в этой папке с базой данных sql из исходной установки WP от root, со всеми сообщениями до конца сентября, только постоянная ссылка изменена на:

sitename.com/month/day/postid/post-name

и он предоставит ту же структуру URL, что и она (потому что WP находится в подпапке «2015»):

sitename.com/year/month/day/postid/post-name

Этот подход работает, когда мне нужно разделить базу данных один раз в год (например, на 2014 год). За каждый прошлый год у меня может быть одна папка, названная в прошлом году, и с установкой WP в этой папке с базой данных с сообщениями за последний год.

Таким образом, когда посетитель попытается открыть URL-адрес, например:

sitename.com/2014/01/01/post-name-here

сервер будет выглядеть первым в подпапке / 2014 /, и там будет установка WP, которая вернет эту запись.

Проблема: когда база данных слишком велика для текущего года, я попытался разделить посты с текущего года на две базы данных, одна из которых опубликовала сообщения с этого года до конца сентября, а другая – в будущем.

У меня есть это:

В корне сайта у меня есть папка «2015» с установкой WP с постоянной структурой:

sitename.com/month/day/postid/post-name

И в корневой установке WP с постоянной структурой:

sitename.com/year/month/day/postid/post-name

Если я попытаюсь открыть URL-адрес:

sitename.com/2015/09/01/post-name-here

сервер проверит папку «2015», и установка WP из этой папки вернет сообщение с 1 сентября, и он отлично работает.

Если я опубликую новое сообщение сегодня в WP-установке в корне сайта, у него будет URL-адрес: sitename.com/2015/10/29/post-name-here

И если я попытаюсь открыть его, сервер будет выглядеть в WP-установке внутри папки «2015», но у этой установки есть сообщения только до конца сентября, и я получаю 404. После этого сервер не будет заглядывать в установку WP в корне где это сообщение.

Вопрос:

Как заставить сервер выглядеть в установке WP внутри подпапки «2015», и если в этой установке нет сообщения для поиска этого сообщения внутри установки WP в корне сайта?

Solutions Collecting From Web of "Разделить базу данных на большом сайте?"

У меня была аналогичная проблема на веб-сайте с ~ 100k строк в wp_posts и ~ 500k в wp_postmeta.

Правда, у WordPress есть некоторые очень медленные запросы администратора, когда вы начинаете много сообщений.

Лучший способ найти узкое место – использовать плагин Debug Bar .

Вероятно, вы обнаружите некоторые сумасшедшие медленные запросы, например:

SELECT DISTINCT meta_key FROM lc_postmeta WHERE meta_key NOT BETWEEN '_' AND '_z' HAVING meta_key NOT LIKE '\\_%' ORDER BY meta_key LIMIT 30 

или

 SELECT ID FROM lc_posts WHERE post_type = 'attachment' AND post_mime_type LIKE 'audio%' LIMIT 1 

а также

 SELECT ID FROM lc_posts WHERE post_type = 'attachment' AND post_mime_type LIKE 'video%' LIMIT 1 

К сожалению, это известные проблемы, но вы можете настроить их быстрее.

Например, я просто удалил пользовательские поля metabox, которые я не использовал, и получил 50% времени загрузки.

 add_action( 'admin_menu' , 'pu_remove_post_custom_fields' ); function pu_remove_post_custom_fields() { remove_meta_box( 'postcustom' , 'post' , 'normal' ); } 

Я не уверен, что разделение вашей БД на несколько экземпляров чтения поможет.

Вы не можете разбить БД без потери функциональности, такой как поиск, rss, теги, категории. Если вас это не волнует, вам нужно переключить свой сайт в сеть с сайтом в год или даже месяц.

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