czwartek, 8 kwietnia 2010

Wolne działanie tabeli MySQL

Nie jestem specjalistą od baz danych, więc pewnie dlatego pojawił mi się dzisiaj dziwny problem z tabelą w bazie, której przeglądnięcie pomimo niewielkiej liczby rekordów (200 z hakiem) trwało wieki.
Co się okazuje? MySQL podczas kasowania danych w tabeli nie usuwa ich fizycznie, tylko nadpisuje jakimiś swoimi zerami, nullami, czy czymś podobnym ;)
NIe będę się tutaj rozpisywał, bo nie o to chodzi, ale dane typu tekstowego są przechowywane jako listy linkowane, więc 'pełne' usuwanie byłoby długie, ale za to przez taki śmietnik wyszukiwanie robi się dłuższe, bo wskaźnik chodzi po pustych rekordach. Informację o tym śmietniku MySQL pokazuje nam jako: NADMIAR. Tabela, która mi się zamuliła jest częścią systemu mailingowego i służy jako bufor, wszystkie maile są wrzucane do niej, a skrypt działający w tle sobie je wyciąga, wysyła i po wysłaniu kasuje. W ten sposób zostaje dużo nadmiaru (w moim przypadku ponad 1 MB, czyli sporo jak na tekst). Rozwiązanie okazuje się banalne i oto ono:

OPTIMIZE TABLE nazwa_tabeli

PO wykonaniu takiego zapytania wszystko zaczęło śmigać jak należy ;)
Proste, ale jeszcze wczoraj o tym nie wiedziałem - warto zaszyć taką optymalizację w swoich systemach, żeby jakoś okazjonalnie się wykonywała, co może nam czasem oszczędzić kłopotów ;)

AHA ODPOWIEDNIKIEM OPTIMIZE W PostgreSQL JEST VACUUM :)

wtorek, 6 kwietnia 2010

Czat jak na FACEBOOK

Jednym z ciekawszych narzędzi na portalu facebook.com jest czat. Posiada kilka sympatycznych cech, które czynią go lepszym od tradycyjnych czatów i moim zadaniem są to:
  • PRZYWRACANIE POPRZEDNIEGO STANU PO PRZEŁADOWANIU STRONY
  • mały, a jednocześnie umożliwia prowadzenie wielu rozmów jednocześnie i wygodne zarządzanie oknami
  • integracja z samym portalem - emotki, przyjaciele, statusy
Takie udane rozwiązanie musiało szybko zdobyć popularność i pojawiły się gotowce podobne do chata z facebooka.
Pytanie co wybrać?
Ja trafiłem na footerchat, który jest banalny jeśli chodzi o instalację - skopiowanie kilku linijek javascriptu, ale niestety tutaj kończą się plusy. Brak polskich znaków (nie tylko polskich:) ), nie zapamiętuje stanu przy przeładowaniu strony, wszystko działa na obcym serwerze, więc jesteśmy ograniczeni w zakresie modyfikacji.
Inne rozwiązanie jakie udało mi się znaleźć jest płatne (cometchat $49 ). Wydaje mi się, że warte swej ceny, szczególnie, że posiada gotowe paczki instalacyjne do popularnych systemów, w tym socialengine - a o to właśnie mi chodziło. Są też gotowce do forów (phpBB, VBuletin)... Jaka zaleta tych gotowców - w przypadku socialengine po instalacji, która polega na skopiowaniu plików, ustawieniu uprawnień i wklejeniu kilku linijek skryptu do strony, dostajemy od razu zintegrowane takie rzeczy jak avatary, czy statusy użytkowników, z czym trzeba by się pewnie troszkę pobawić.
Całość ma nie wiele słów, więc łatwo przetłumaczyć na inny język w pliku konfiguracyjnym, można tworzyć własne skórki, ogólnie wszystko sympatycznie...

poniżej screen z portalu abnormals.org, gdzie instalowałem rozwiązanie: