Marek C.

Marek C. profesjonalny opis

Temat: Tabela w MySQL - 350 mb

Jedna z agencji stworzyła znajomemu serwis, ale zapomnieli mu powiedzieć, aby do edytora WYSIWYG nie kopiował tekstów bezpośrednio z Worda. Dziś serwis niemal nie chodzi, błąd 503. Znajomy poprosił mnie abym do tego zajrzał, no i tak zrobiłem, okazało się, że tabela, która jest przeszukiwana przy każdym wyświetlaniu jego strony ma już przy 8500 wpisów, prawie 350 MB. Większość to śmieci przyniesione do edytora WYSIWYG bezpośrednio z Worda. Ktoś ma pomysł co z tym da się szybko zrobić?

konto usunięte

Temat: Tabela w MySQL - 350 mb

Wyeksportować ... napisać skrypt który usunie śmieci z tabeli, zaimportować.
Dodatkowo stworzyłbym osobną tabelę z samym tekstem (bez html'a) służącą do przeszukiwania pełnotekstowego.
Marcin Lulek

Marcin Lulek Programista -
WebReactor

Temat: Tabela w MySQL - 350 mb

przeciez 350 mb to jest pierdniecie dla jakielkolwiek bazy danych, powinno smigac nawet jak bedziesz mial tam 1gb danych, jestes pewien ze problem tam lezy ?

konto usunięte

Temat: Tabela w MySQL - 350 mb

Marcin Lulek:
przeciez 350 mb to jest pierdniecie dla jakielkolwiek bazy danych, powinno smigac nawet jak bedziesz mial tam 1gb danych, jestes pewien ze problem tam lezy ?

Tak na moje oko wyszukiwanie odbywa się tam przy użyciu "zwyczajnego" LIKE'a ... a w takim wypadku każde nawet małe "pierdnięcie" może zamienić się w gigantycznego "pierda" ;)
Marcin Lulek

Marcin Lulek Programista -
WebReactor

Temat: Tabela w MySQL - 350 mb

no to ja bym zaczal od tego zeby tego likea usunac ;-)a nie zajmowac sie pierdolami typu markup contentu
Marek C.

Marek C. profesjonalny opis

Temat: Tabela w MySQL - 350 mb

nie chodzi o wyszukiwanie w sensie wyszukiwarki, chodzi o zwykłe zapytanie SELECT. Jeśli serwis ma w tej samej chwili kilkudzisięciu userów, to mamy 503.

Napisać skrypt, który usunie śmieci worda, a pozostawi te elementy formatowania w htmlu, które są potrzbne? Obawiam się, że łatwiej powiedzieć, gorzej wykonać.
Janusz Skudrzyk

Janusz Skudrzyk Członek zarządu,
weblabs.pl

Temat: Tabela w MySQL - 350 mb

na pewno jest to zwykłe "select kolumny from tabela limit liczba_wpisów" ? a może "select * from tabela" i w skrypcie odsianie paru rekordów ze wszystkich paru tysięcy ?
Przemek Szalko

Przemek Szalko iOS Developer + Full
Stack Developer

Temat: Tabela w MySQL - 350 mb

Sprawdziłbym najpierw czy indeksy w tabeli są, a jeśli są to czy zapytania ich używają ;-)
Marek C.

Marek C. profesjonalny opis

Temat: Tabela w MySQL - 350 mb

zastrzegam, że nie ja to stworzyłem ;-)

zapytania są mniej więcej takie SELECT * where data_publikacji < data_aktualna and i tu jeszcze z 4 parametry dotyczace kategorii wpisów itp order by data_publikacji
Janusz Skudrzyk

Janusz Skudrzyk Członek zarządu,
weblabs.pl

Temat: Tabela w MySQL - 350 mb

explain select ....
to wrzucasz do phpmyadmina i patrzysz co się pojawi w tabelce; najważniejsze są kolumny: key oraz rows
jak gdzieś nie ma klucza, albo liczba rekordów jest spora, to trzeba poprawić tabele i zapytania
edit: jakby co, to pwJanusz Skudrzyk edytował(a) ten post dnia 29.10.08 o godzinie 20:12

konto usunięte

Temat: Tabela w MySQL - 350 mb

Zgadzam się, że 350MB to nie jest straszna ilość danych. I raczej problem leży gdzie indziej.

Podaj parametry komputera, na którym stoi serwis. Jakie dyski siedzą w tej maszynie i jak są skonfigurowane?
Serwis jest sam jeden?
Baza danych na tej samej maszynie?
Jakie aplikacje są użyte - w jakich wersjach? Np. MySQL w wersji 3 coś tam, Apache 2 coś, PHP4...
Jak skonfigurowany jest MySQL? - głównie chodzi o ustawienia buforów.

Ja bym strzelał, że bufor wyników zapytań jest wyłączony. No, albo maszyna jest przedpotopowa. Albo też ktoś postawił tabelkę i odwołuje się bez indeksu. Jak widać problem może być wszędzie - bez danych ciężko będzie coś poradzić.
Marek C.

Marek C. profesjonalny opis

Temat: Tabela w MySQL - 350 mb

Michał Z.:
Zgadzam się, że 350MB to nie jest straszna ilość danych. I raczej problem leży gdzie indziej.

Podaj parametry komputera, na którym stoi serwis. Jakie dyski siedzą w tej maszynie i jak są skonfigurowane?
Serwis jest sam jeden?
Baza danych na tej samej maszynie?
Jakie aplikacje są użyte - w jakich wersjach? Np. MySQL w wersji 3 coś tam, Apache 2 coś, PHP4...
Jak skonfigurowany jest MySQL? - głównie chodzi o ustawienia buforów.

Ja bym strzelał, że bufor wyników zapytań jest wyłączony. No, albo maszyna jest przedpotopowa. Albo też ktoś postawił tabelkę i odwołuje się bez indeksu. Jak widać problem może być wszędzie - bez danych ciężko będzie coś poradzić.


konto professional pro na home.pl ;-) nie strzaelać, ja tylko chce pomóc koledze ;-)
Marek C.

Marek C. profesjonalny opis

Temat: Tabela w MySQL - 350 mb

Albo też ktoś postawił tabelkę i odwołuje się bez indeksu.

bez indeksu tzn.?
Łukasz Ważny

Łukasz Ważny winning doesn't
really matter as
long as you win

Temat: Tabela w MySQL - 350 mb

Marek Czerniak:
zastrzegam, że nie ja to stworzyłem ;-)

zapytania są mniej więcej takie SELECT * where data_publikacji < data_aktualna and i tu jeszcze z 4 parametry dotyczace kategorii wpisów itp order by data_publikacji

Jeśli pobierane dane względnie rzadko się zmieniają, np artykuł jest dodawany raz na godzinę lub rzadziej, to spróbuj zrobić prosty mechanizm cache, np. wynik zapytania, zserializować i zapisać ten badziew do plik :), przed wyświetleniem strony sprawdzaj czy dane można pobrać z pliku, są w miarę aktualne i je wyświetlaj zamiast odpytywać bazę.
Janusz Skudrzyk

Janusz Skudrzyk Członek zarządu,
weblabs.pl

Temat: Tabela w MySQL - 350 mb

Marek Czerniak:
bez indeksu tzn.?
bez dodatkowych informacji pozwalających w szybki sposób określić położenie właściwych informacji

wyobraź sobie, że masz bibliotekę, pełno jest w niej książek; szukasz w niej jednej konkretnej, będziesz przeglądać po jednej, czy zajrzysz do spisu, żeby sprawdzić na której półce jest ta książka ?
Marek C.

Marek C. profesjonalny opis

Temat: Tabela w MySQL - 350 mb

Janusz Skudrzyk:
Marek Czerniak:
bez indeksu tzn.?
bez dodatkowych informacji pozwalających w szybki sposób określić położenie właściwych informacji

wyobraź sobie, że masz bibliotekę, pełno jest w niej książek; szukasz w niej jednej konkretnej, będziesz przeglądać po jednej, czy zajrzysz do spisu, żeby sprawdzić na której półce jest ta książka ?


tak, tak, chodzi mi o to, że podając jak wygląda zapytanie mniej więcej - patrz wyżej - to czy nadałbyś parametr danych kluczowych dla kolumny data_publikacji, skoro po tym w pierwszej kolejności odbywa sie wyszukiwanie, a potem jest w dalszej części zapytania doszczegółowienie o kategorie tego wpisu itp.
Janusz Skudrzyk

Janusz Skudrzyk Członek zarządu,
weblabs.pl

Temat: Tabela w MySQL - 350 mb

być może
explain powinien wyjaśnić co nieco

Następna dyskusja:

Tabela krzyżowa w MySQL




Wyślij zaproszenie do