Archiwum

Archiwum dla ‘Zawodowo’ Kategoria

Optymalizacja MySQL, część 1 - Indeksy

listopad 4th, 2009

Wstęp

MySQL jest chyba najpowszechniej używaną bazą danych w różnego typu aplikacjach internetowych: od portali, przez fora, blogi, gry i inne rodzaje stron. Dlaczego? Bo jest szybka, prosta, darmowa i się przyjęła. Oprócz ewidentnych zalet ma też serię wad: standardowy engine MyISAM nie jest transakcyjny, nie jest bezpieczny, przy zapisie blokuje całą tabelę, a nie pojedynczy rekord. Jakby tego jeszcze było mało, to w 95% procentach przypadków, właśnie baza MySQL jest wąskim gardłem całej aplikacji i to jej wydajność (szybkość przetwarzania zapytań) decyduje o wydajności całego rozwiązania. Pracując nad pewną aplikacją (Pulsar-Online), przez ostatni tydzień starałem się skupić właśnie nad sprawą wydajności MySQL na której oparty jest Pulsar i podzielić się swoimi spostrzeżeniami na ten temat.

Po pierwsze, specyfika aplikacji internetowych, a przynajmniej ich większość, więcej odczytuje z bazy danych, niż do niej zapisuje. UPDATE i INSERT stanowią mniejszość w porównaniu z liczbą wykonywanych SELECTów. Wydajność pobierania rekordów z bazy ma więc dość duże znaczenie.

Ogólnie

Zastanówmy się, jak MySQL pobiera dane z tabeli, jeśli wybrana tabela nie posiada indeksów na polach które uwzględnimy w zapytaniu (zarówno w JOIN jak i WHERE lub ORDER BY). Dla każdego zapytania skanuje od początku wszystkie rekordy w tabeli, aż warunek nie zostanie znaleziony. Jeśli nie uwzględnimy LIMIT, MySQL będzie skanował dalej, aż do końca tabeli. Co to dla nas oznacza? Wyjaśnię na przykładzie.

Czytaj więcej…

Paweł Wujek Dobra Rada, Zawodowo | , , , , , , ,

psDebug: wersja 0.6

sierpień 17th, 2009

Przysiadłem dziś troszkę nad psDebug i przygotowałem nowy release. Zmian wiele nie ma, kosmetyka i usunięty jeden błąd związany z wyświetlaniem backtrace. Dodatkowo, dodałem kod źródłowy do repozytorium na sourceForge. I to tyle.

Wersję 0.6 można pobrać ze strony projektu na sourceForge.

Paweł Zawodowo | , , , ,

psDebug: od dziś na sourceForge

sierpień 10th, 2009

Jak iść w OpenSource, to iść w OpenSource. Od dziś klasa psDebug o której pisałem jakiś czas temu jest dostępna jako projekt na sourceForge. W najbliższym czasie postaram się o kawałek dokumentacji po angielsku.

Paweł Zawodowo | , , , ,

PHP: Własna obsługa błędów i wyjątków: psDebug

lipiec 30th, 2009

PHP, szczególnie od wersji 5 w górę jest całkiem przyjemnym językiem i swoimi możliwościami nie odstaje aż tak bardzo od C++, czy Java. Fakt, jest prostszy, ale odkąd działa w nim prawdziwa obiektówka i wyjątki, dobre programowanie stało się wygodniejsze.

Niestety, PHP nie jest pozbawione kilku niedociągnięć, czasami przeradzających się gigantyczny ból w tyłku. Jednym z nich jest niekonsekwencja zachowania funkcji na błędy. Część rzuca wyjątki, część rzuca błędy, a jeszcze inne zwracają FALSE lub NULL gdy coś nie idzie po ich myśli. Z tego powodu, sensowym wyjściem jest napisanie własnej funkcji obsługi błędów przekształcających je na wyjątki. A skoro można napisać coś takiego, to czemu od razu nie napisać własnej funkcji obsługi wyjątków i dodać kilka innych usprawnień?

Z tych powodów, bazując na klasie wfErrorHandler Grzegorza Godlewskiego, napisałem własną klasę obsługi błędów: psDebug. Jej główne cechy to:

  • wszystkie błędy są przekształcane na wyjątki w celu ich późniejszego przechwycenia
  • wyjątki które nie zostały przechwycone mogą być raportowane na następujące sposoby:
    • elegancki komunikat dla użytkownika nie zawierający szczegółów
    • pełny komunikat o błędzie razem ze ścieżką wykonania
    • przesłanie w tle komunikatu o błędzie do phHelpdesk (który kiedyś wreszcie opublikuję jako OpenSource)
  • dodatkowe funkcje wspomagające obsługę błędów

Czytaj więcej…

Paweł Projekty, Zawodowo | , , , , ,

Pomiar jakości kodu

listopad 28th, 2008

Źródło: osnews.com

Paweł Na wesoło, Zawodowo | ,

Czy w ZUS można normalnie?

wrzesień 7th, 2008

Właśnie. Czy w ZUS można normalnie? Na tak postawione pytanie część osób która miała styczność z tą instytucją pewnie odpowie: nie. Ja też tak uważałem, lecz w piętek częściowo zmieniłem zdanie.

Zacznijmy od początku. Prowadzę firmę, więc co miesiąc odprowadzam do ZUS pewną kwotę pieniędzy. Pieniędzy, których pewnie nigdy w życiu nie zobaczę. Ale mus to mus, więc płacę i nie marudzę za bardzo. Do tej pory miałem to szczęście, że płaciłem stawkę “promocyjną” (w sumie około 300zł miesięcznie). Promocja jednak się skończyła i czas płacić pełną najniższą stawkę (około 740zł). Zakładałem, że skoro kończy się promocja, to raz wyślę ZUS-DRA i będę miał problem deklaracji z głowy (skoro tylko zmieniają się stawki). Okazało się, że nie jest to jednak takie proste. Przez przypadek, odbierając druki deklaracji ZUS-DRA, dowiedziałem się, że nie wystarczy zacząć płacić więcej. Najpierw trzeba się wyrejestrować, później zarejestrować ponownie, raz wypełnić DRA i dopiero wtedy można płacić co się ZUS należy. Moim zdaniem absurd. Gdy podzieliłem się tą myślą z osobą wydającą druki, zostałem odesłany na salę obsługi klientów.

Czytaj więcej…

Paweł Trudno powiedzieć / inne, Zawodowo | ,

Google Chrome

wrzesień 4th, 2008

My tu pitu pitu o hostingu, a tu proszę, Google pokazało światu swoje najnosze dzieło, czy przeglądarkę internetową Google Chrome. Ponieważ przeglądarkami interesuję się z zawodowego punktu widzenia, nie mogłem nie pokusić się o wypróbowanie Chrome.

Instalacja Chrome jest szybka, instalator spytał się, czy zaimportować zakładki i inne dane z Mozilla Firefox. Miło. Niestety tutaj pojawił się pierwszy zgrzyt: po imporcie zakładek instalator zawiesił się. Na szczęście, sama przeglądarka zainstalowała się poprawnie i uruchomiła się za pierwszym podejściem.

Lekkim zaskoczeniem był dla mnie wygląd przeglądarki. Z jednej strony lekkie ‘Vista style’ pod Widnows XP, z drugiej zauważyłem lekkie podobieństwo interface do znanego z Firefoksa. Na dzień dobry, na głównym ekranie otrzymujemy miniatury ostatnio odwiedzanych stron, historię zakładek i okno wyszukiwania Google. Sam interface i design oceniam na solidną czwórkę z plusem. Lekko, dość intuicyjnie i ładnie.

Czytaj więcej…

Paweł Recenzje / Relacje, Zawodowo | , , , , , ,

Pulsar Online: worklog

lipiec 10th, 2008

Może ktoś pamięta, ponad rok temu zacząłem prace nad grą internetową typu MMORPG pod tytułem Pulsar Online. Po dość długiej przerwie wróciłem do tematu. Niestety, gdy tylko zobaczyłem ukończone fragmenty kodu stwierdziłem, że coś tu nie halo i przez ponad 3 tygodnie w czasie wolnym przepisywałem to, co niby już działało. Teraz też działa, ale lepiej. Trochę ruszenia mózgownicą, kilka przydatnych klas w PHP (z dwóch jestem szczególnie dumny: klasa cache w danych sesji i klasa trochę upodobniająca MySQL do bazy obiektowej z automatyczną synchronizacją cache i bazy) i to co działało, działa dalej, tyle, że lepiej, szybciej i wygodniej się to oprogramowuje.

Anyway, powstały też nowe rzeczy:

  • mapa systemu
  • nawigacja i wyszukiwanie najkrótszej drogi do celu
  • podstawowe operacje na wyposażeniu i uzbrojeniu
  • inne drobne sprawy

Obecnie siedzę nad obsługą NPC. Drugi dzień męczę skrypt tworzący NPC na podstawie szablonów. Jeszcze kilka dni i choćby ta drobnostka będzie działać…

Paweł Pulsar Online, Zawodowo | , , , , ,

Switch to our mobile site