Jaka jest dobra strategia planowania wzrostu WordPress DB?

9

Licząc na opinie na temat optymalizacji i utrzymania najwyższej wydajności, gdy baza danych WordPress rośnie ... do namalowania obrazu ... załóżmy, że masz witrynę WordPress / Buddypress MU, która zaczyna się od około 150 KB (instalacja waniliowa) ... z biegiem czasu użytkownicy dodają blogi, fora, posty i komentarze, a baza danych powiększa się do 5 MB .... a następnie 10 MB w przyszłym roku ... Zakładając również, że kontrola hostingu to standardowa konfiguracja kolokacji, taka jak Cpanel lub Plesk.

  • W którym momencie liczba wpisów w bazie danych wpływa na wydajność witryny frontonu?
  • Co możesz zrobić jako menedżer witryny, aby zapewnić płynne działanie w miarę wzrostu bazy danych?
  • Czego możesz oczekiwać pod względem wydajności po 5. roku, gdy Twoja baza danych ma wielkość 500–600 MB?

Dziękujemy za wszelkie uwagi dotyczące utrzymywania ciasnego statku.

Pozdrowienia,

S.

Szymon
źródło
3
Zadałeś 7 pytań i zaakceptowałeś tylko 1. Niezbyt dobry zapis. :-(
8
25 MB to nic. Powinieneś martwić się o rozmiar bazy danych, gdy osiągnie ona GB.
Dunhamzzz
Dziękuję za twój komentarz. Jeśli mamy problemy z wydajnością na 500 MB, to prawdopodobnie nasza firma hostingowa. PS Wróciłem i zaakceptowałem odpowiedzi na pytania.
Simon

Odpowiedzi:

4

Twoje szczegółowe pytania:

1) Nie ma ścisłego ograniczenia „liczby wpisów”, które DB może zawierać zanim wpłynie to na wydajność. Wydajność zależy w równym stopniu od sprzętu i konfiguracji, jak od wielkości i struktury bazy danych.

2) Jeśli martwisz się skalowalnością warstwy DB, możesz uruchomić ją w klastrze lub w chmurze lub VPS, która pozwala na zmianę rozmiaru. Jeśli twoja baza danych zaczyna być powolna, możesz zwiększyć rozmiar (choć zwykle za dodatkową opłatą). Te opcje zwiększają koszty, ale są naprawdę najlepszym sposobem na zapewnienie skalowalności bazy danych.

3) To naprawdę zależy od konfiguracji hostingu i architektury DB. Ale ogólnie (chyba, że ​​masz naprawdę tanie pudełko), nie martwiłbym się o 30 MB bazy danych WordPress. WordPress dobrze wykonuje indeksowanie tabel, a nawet konfiguracja OOB MySQL powinna z łatwością obsługiwać zapytania WordPress na DB o tym rozmiarze. Kiedy wchodzisz do gigabajtów - wtedy może być konieczne poważne rozważenie opcji optymalizacji wydajności.

Ogólnie:

Jeśli martwisz się wydajnością, skoncentruj się na dostrojeniu istniejącej konfiguracji MySQL i / lub skonfigurowaniu warstwy buforowania. Buforowanie może znacznie zmniejszyć obciążenie MySQL (szczególnie w przypadku witryn WordPress, ponieważ generalnie wykonują one dużą liczbę zapytań DB).

Jeśli po odpowiednim dostrojeniu MySQL i skonfigurowaniu przyzwoitej warstwy pamięci podręcznej nadal martwisz się przerośnięciem konfiguracji sprzętowej, możesz ustanowić zasadę usuwania zawartości po x czasie.

Żadna z tych rzeczy nie jest specyficzna dla WordPress. Nie jestem pewien, czy pytanie zawiera odpowiedzi, które nie dotyczą żadnej witryny lub aplikacji działającej na stosie LAMP. Ale może ktoś inny ma sugestie dotyczące struktur tabel MU lub innych sztuczek DB specyficznych dla WP ... Nie wiem.

MathSmath
źródło
4

Ściśle z punktu widzenia MySQL mam sugestie, jak poprawić buforowanie danych / indeksów dla instancji MySQL.

Należy pamiętać, że istnieją dwa główne silniki pamięci masowej dla MySQL

  • MyISAM
  • InnoDB

Ich mechanizmy buforowania są różne. Jest coś, co możesz zrobić, aby dostroić wybrany silnik pamięci masowej.

MyISAM

MyISAM buforuje tylko strony indeksowe. Nigdy nie buforuje danych. Możesz zrobić dwie rzeczy, aby poprawić I / O dla tabel MyISAM.

Ulepszenie MyISAM # 1

Dowolną tabelę MyISAM, która ma kolumny VARCHAR, można wewnętrznie przekonwertować na CHAR bez dotykania początkowego projektu. Załóżmy, że masz tabelę o nazwie mydb.mytable i chcesz ulepszyć we / wy, wykonaj następujące czynności:

ALTER TABLE mydb.mytable ROW_FORMAT=Fixed;

Zwiększy to rozmiar tabeli o 60% -100%, ale da 20-30% wzrost wydajności we / wy bez zmiany czegokolwiek innego . Pisałem o tym wcześniej w DBA StackExchange:

Ulepszenie MyISAM # 2

Musisz zwiększyć pamięć podręczną kluczy MyISAM (według wielkości key_buffer_size ). Uruchom to zapytanie:

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;

To pokaże ci idealny key_buffer_size w oparciu o twój aktualny zestaw danych.

InnoDB

InnoDB buforuje zarówno dane, jak i indeksy. Jeśli przekonwertowałeś wszystkie swoje dane na InnoDB i obecnie korzystasz z WordPress z bazy danych All InnoDB, musisz zmienić rozmiar puli buforów InnoDB (rozmiar z innodb_buffer_pool_size ). Uruchom to zapytanie:

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;

To pokaże ci idealny key_buffer_size w oparciu o twój aktualny zestaw danych.

Projekcje

Jeśli przewidujesz, że Twój zestaw danych wzrośnie 20 razy, tylko kilka razy to, co zaleca to zapytanie do 20. Załóżmy, że Twój zestaw danych MyISAM ma 15 MB, a 3 MB to suma indeksów. Jeśli szacujesz, że będziesz miał 20 razy więcej danych, ustaw key_buffer_size na 60 MB w następujący sposób w /etc/my.cnf:

[mysqld]
key_buffer_size=60M

następnie ponownie uruchom MySQL. To samo dotyczyłoby puli buforów InnoDB.

Jeśli wszystkie twoje dane to InnoDB, musisz wykonać pełne czyszczenie infrastruktury InnoDB, które opublikowałem w StackOverflow .

RolandoMySQLDBA
źródło
2

W którym momencie liczba wpisów w bazie danych wpływa na wydajność witryny frontonu?

Gdy zapytania zaczną przekraczać limit zasobów konta hostingowego.

Co możesz zrobić jako menedżer witryny, aby zapewnić płynne działanie w miarę wzrostu bazy danych?

Miej oko na wykorzystanie zasobów. Podejmij kroki, aby zwiększyć zasoby i / lub zoptymalizować wykorzystanie.

Czego możesz oczekiwać pod względem wydajności po 5. roku, gdy Twoja baza danych ma wielkość 25–30 MB?

Nie powinno być żadnych zmian w wydajności tego malutkiego bazy danych.

Jeśli oczekujesz, że Twoja witryna będzie rosła tak wolno, masz mnóstwo czasu, aby nauczyć się, jak zarządzać wzrostem.

shanebp
źródło