Apr 30 2008

MySQL i kolumny typu SET

Tag: MySQLbuka @ 11:25

Wszyscy znamy sql’owy SET jako np. określenie zestawu danych wrzucanych w odpowiednie kolumny. Ale SET jako typ kolumny, okazuje się nie wszystkim jest znany. Najprościej mówiąc jest to “trochę inny ENUM” :) A czym się różni i do czego go stosować możecie przeczytać dalej…
Continue reading “MySQL i kolumny typu SET”


Apr 23 2008

Commit MySQLowych transakcji

Tag: MySQLdooshek @ 12:54

Jak dobrze wiemy transakcje czasami się przydają. Wprawdzie używamy ich rzadko ale niekiedy są idealnym rozwiązaniem służącym głównie upraszczaniu kodu (nie musimy stosować wielu warunków) i zapewnienia integralności zapisywanych do bazy danych.

Kilkukrotnie jednak mieliśmy problem ze stwierdzeniem co dzieje się jeśli program zakończy swoje działanie po wykonaniu SQLa BEGIN (czy też START TRANSACTION). Przeprowadziłem mały inwestygejszyn i chciałbym to tutaj raz na zawsze wyjaśnić :)

Wygląda to tak, że dopóki nie wykonamy SQLa COMMIT dopóty zmiany nie zostaną zachowane w bazie. W praktyce nie trzeba nawet robić ROLLBACK - jeśli do końca danego połączenia nie wykonamy komita, to dane się nie zapiszą.

Poniżej przykład:

Wykonanie tego przykładu i zakończenie połączenia nie spowoduje wstawienia rekordu do tabeli sessions.

natomiast to jak najbardziej zadziała :) Być może są jakieś wyjątki od tych reguł - ja ich nie znalazłem.

Uwaga! W ramach tego samego połączenia - jeśli nie zrobimy ROLLBACK to dane będą “dostępne” czyli wykonanie:

spowoduje zwrócenie wstawionego wcześniej rekordu! Żeby tego uniknąć należy wykonać ROLLBACK (np. w przypadku kiedy jednak nie chcemy aby dane te zostały zapisane do bazy)

Uwaga! Zakończenie połączenia następuje również wtedy kiedy pojawi się jakiś błąd SQL (nasz framework w takim momencie kończy działanie z błędem lub pokazuje stosowny komunikat) więc w przypadku błędu SQL dane pomiędzy BEGIN…COMMIT nie zostaną zapisane (bo zabraknie COMMIT)


Apr 02 2008

Testowanie szybkości wykonywania SQLi

Tag: MySQLdooshek @ 09:12

MySQLZapewne większość wie, że MySQL posiada wbudowany mechanizm cacheowania SQLi. Sprawdza się w miarę dobrze i w większości przypadków jego wyłączenie nie jest zalecane.

My programiści, potrzebujemy jednak do testów prędkości wykonywania SQLi (szczególnie tych operujących na większej liczbie danych) realnych prędkości.

Continue reading “Testowanie szybkości wykonywania SQLi”


Mar 12 2008

Sposób na wyciągnięcie losowego rekordu z tablicy MySql

Tag: MySQLwoojo @ 12:09

Przeglądając z rana to co zaproponował mi
google alerts na temat MySqla natknąłem się na ciekawy
artykuł na temat wyciągania losowych rekordów z tablic tej właśnie bazy danych.
Nie będę przepisywał treści zawartej w tym artykule, chciałem tylko przedstawić swoje własne wyniki uzyskane podczas testowania tej metody. Badania przeprowadziłem na tablicy
InnoDB z 135k elementów. Wyciągając losowy element w ‘tradycyjny’ sposób, czyli:

zajęło to 60 sek. Wartość niedopuszczalna aby używać tego np. na stronie www.

Wykorzystując pomysł zaproponowany na tym blogu i wykonując zapytanie:

wynik otrzymuje już po około 30ms, a więc wzrost prędkości 1000 krotny!!!


Mar 10 2008

Krótko o funkcjach w MySQL

Tag: MySQLradmen @ 10:48

Podobnie jak PHP, C++, Java i masa innych języków programowania ma funkcje. Jak wiadomo mogą one posłużyć do wielu różnych rzeczy. W MySQL można je wykorzystać aby zwiększyć bezpieczeństwo. Zapisana funkcja/procedura może być bez problemu wywołana z poziomu PHP, ponieważ wystarczy wysłać zapytanie do bazy będące wywołaniem funkcji.
W dalszej części postaram się nieco opisać sposób tworzenia, oraz wykonywania funkcji.

Continue reading “Krótko o funkcjach w MySQL”


« Previous Page