Как оптимизировать БД WP (145 Мб на 168 записей)

T
На сайте с 04.07.2013
Offline
92
1239

Уважаемые форумчане, помогите пжст советом по оптимизации базы данных блога на WordPress.

По результатам сканирования базы плагином Duplicator, выдал следующие предупреждения (Warn!):

1) Database total size: Tables: 49 | Records: 530,780 | Size: 145.85MB (в блоге всего 168 простых текстовых записей с внешними ссылками, никаких вложенных медиафайлов)

2) Table details, которая выглядит так:

yg5g9f4_aiowps_events

Rows:0
Size:1KB
yg5g9f4_aiowps_failed_logins
Rows:10
Size:2.43KB
yg5g9f4_aiowps_global_meta
Rows:0
Size:1KB
yg5g9f4_aiowps_login_activity
Rows:11
Size:2.56KB
yg5g9f4_aiowps_login_lockdown
Rows:10
Size:2.63KB
yg5g9f4_bpspro_login_security
Rows:0
Size:1KB
yg5g9f4_bpspro_seclog_ignore
Rows:0
Size:1KB
yg5g9f4_commentmeta
Rows:0
Size:4KB
yg5g9f4_comments
Rows:0
Size:1KB
yg5g9f4_duplicator_packages
Rows:1
Size:5.39KB
yg5g9f4_forum_forums
Rows:0
Size:1KB
yg5g9f4_forum_groups
Rows:3
Size:2.65KB
yg5g9f4_forum_posts
Rows:0
Size:1KB
yg5g9f4_forum_threads
Rows:0
Size:1KB
yg5g9f4_forum_usergroup2user
Rows:0
Size:1KB
yg5g9f4_forum_usergroups
Rows:0
Size:1KB
yg5g9f4_links
Rows:0
Size:1KB
yg5g9f4_options
Rows:276
Size:84.44KB
yg5g9f4_postmeta
Rows:439,233
Size:39.82MB
yg5g9f4_posts
Rows:69,755
Size:103.64MB
yg5g9f4_spidercalendar_calendar
Rows:1
Size:2.07KB
yg5g9f4_spidercalendar_event
Rows:1
Size:2.07KB
yg5g9f4_spidercalendar_event_category
Rows:0
Size:1KB
yg5g9f4_spidercalendar_theme
Rows:1
Size:2.41KB
yg5g9f4_spidercalendar_widget_theme
Rows:1
Size:2.23KB
yg5g9f4_term_relationships
Rows:1,004
Size:73.59KB
yg5g9f4_term_taxonomy
Rows:667
Size:53.98KB
yg5g9f4_terms
Rows:649
Size:83.13KB
yg5g9f4_usermeta
Rows:29
Size:11.97KB
yg5g9f4_users
Rows:1
Size:4.1KB
yg5g9f4_wfBadLeechers
Rows:0
Size:1KB
yg5g9f4_wfBlocks
Rows:1
Size:3.06KB
yg5g9f4_wfBlocksAdv
Rows:0
Size:1KB
yg5g9f4_wfConfig
Rows:98
Size:13.42KB
yg5g9f4_wfCrawlers
Rows:0
Size:1KB
yg5g9f4_wfFileMods
Rows:2,732
Size:382.26KB
yg5g9f4_wfHits
Rows:2,200
Size:526.58KB
yg5g9f4_wfHoover
Rows:0
Size:1KB
yg5g9f4_wfIssues
Rows:6
Size:5.84KB
yg5g9f4_wfLeechers
Rows:1,352
Size:38.16KB
yg5g9f4_wfLockedOut
Rows:0
Size:1KB
yg5g9f4_wfLocs
Rows:1
Size:2.02KB
yg5g9f4_wfLogins
Rows:562
Size:77.2KB
yg5g9f4_wfNet404s
Rows:5
Size:3.54KB
yg5g9f4_wfReverseCache
Rows:1
Size:2.05KB
yg5g9f4_wfScanners
Rows:7,271
Size:182.11KB
yg5g9f4_wfStatus
Rows:1,207
Size:106.61KB
yg5g9f4_wfThrottleLog
Rows:0
Size:1KB
yg5g9f4_wfVulnScanners
Rows:0
Size:1KB

По объему БД нагружают эти данные:

No. Tables Records Data Size Index Size Type Overhead

19 yg5g9f4_postmeta 439 257 26,0 MB 13,8 MB MyISAM 0 bytes

20 yg5g9f4_posts 69 767 99,0 MB 4,6 MB MyISAM 0 bytes

Я запускал repair.php, а также всевозможные плагины по оптимизации (Better Delete Revision, WP-Optimize, WP Clean Up, WP Database Cleaner, Optimize Database after Deleting Revisions), которые прошли успешно. Но проблема осталась: размер базы практически не изменился, плагин Duplicator по-прежнему выдает свои предупреждения (и не делает копию сайта). Что еще можно предпринять?

K
На сайте с 03.06.2015
Offline
45
#1

Надо было отсортировать отчет по размеру или числу записей в таблицах.

Чтобы не приходилось глазками искать, например


yg5g9f4_postmeta Rows:439,233 Size:39.82MB
yg5g9f4_posts Rows:69,755 Size:103.64MB

Почти 70 тыщ постов на 100 мегов. Ищите сирот. В обычном sql элементарный запрос, надо только знать о связях.

MYSQL PHP JS HTML CSS SEO TXT США СССР
T
На сайте с 04.07.2013
Offline
92
#2

kostyanet, не подскажете где об этом можно почитать? Эти "сироты" имеют какое-нибудь формальное обозначение, по которому можно нагуглить информацию?

---------- Добавлено 15.06.2015 в 00:29 ----------

Еще вопрос: плагин Plugins Garbage Collector показал несколько таблиц, которые по его мнению не используются. В т.ч:

Table Name------------Records-----KBytes
yg5g9f4_wfscanners------7271-----182.11
yg5g9f4_wffilemods------2732-----382.26
yg5g9f4_wfhits------------2200-----526.58
yg5g9f4_wfleechers------1352-------38.16
yg5g9f4_wfstatus---------1207------106.61

Т.е. объем ничтожный, но записей около 15 тысяч. Стоит ли удалить? Беда в том, что из-за огромной базы я даже резервную копию толком не могу сделать, так что напрасно рисковать не хотелось бы.

T
На сайте с 04.07.2013
Offline
92
#3

Узнал в чем дело. В свое время ставил форум - он и наполнился спамом (на 70 тысяч тем и записей). Таблицу posts почистил. Подскажите пжст кто знает SQL - как теперь почистить метаданные (postmeta) и где еще может быть мусор?

K
На сайте с 03.06.2015
Offline
45
#4

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

Ну или надо знать как устроен ВП.

T
На сайте с 04.07.2013
Offline
92
#5

Мне порекомендовали такие запросы на очистку таблиц postmeta и term_relationships:

DELETE FROM yg5g9f4_postmeta pm
LEFT JOIN yg5g9f4_posts p ON pm.post_id = p.ID
WHERE p.ID IS NULL;

DELETE FROM yg5g9f4_term_relationships tr
LEFT JOIN yg5g9f4_posts p ON tr.object_id = p.ID
WHERE p.ID is NULL;

Подскажите пжст кто знает SQL - насколько правильно составлены запросы? Я не рискую повредить базу, воспользовавшись ими?

---------- Добавлено 15.06.2015 в 13:22 ----------

Я синтаксис этого запроса не понимаю. Нельзя ли просто удалить все записи в таблице postmeta, которые ссылаются на несуществующие записи в posts? В моем случае:

DELETE FROM yg5g9f4_postmeta WHERE post_id NOT IN (SELECT ID FROM yg5g9f4_posts)

post_id - поле в yg5g9f4_postmeta, которое, как я понимаю, ссылается на записи в yg5g9f4_posts

ID - поле в yg5g9f4_posts, которое, как я понимаю, является ключевым номером записи в этой таблице.

---------- Добавлено 15.06.2015 в 14:20 ----------

В общем, при помощи своих простеньких запросов (удалить все записи, ID которых не найдены в таблице posts) удалил все лишние записи из таблиц postmeta и term_relationships. До это вычистил весь спам в posts - там теперь 160 записей вместо 70 тысяч. Но объем всех таблиц совершенно не изменился: 103 Мб на 160 записей в posts и 39 Мб на 497 записей в postmeta. Что делать?

---------- Добавлено 15.06.2015 в 14:41 ----------

Сделал оптимизацию через phpMyAdmin, есть там такая возможность. Теперь все отлично, вся база целиком - 2.5 Мб. Проблема решена.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий