@RomantycznyRoman: MySQL został zaprojektowany tak by banalne rzeczy robiło się łatwo i przyjemnie, bardziej zaawansowane robi się trudno lub jest to niemożliwe. Jeszcze zatęsknisz do takich bajerów jak CTE czy window functions, nie bój nic. Że nie wspomnę o takich głupotach jak integralność danych, indeksy częściowe i indeksy na funkcjach. No i o ile rozwiązanie z CASE jest standardowe to jeśli się uprzesz to możesz użyć CHARINDEX.
  • Odpowiedz
@RomantycznyRoman: Ciekawe, osobiście podszedł bym do tego inaczej, warto będzie zapamiętać. Niestety działa tylko na jeden znak (lub ciąg kilku znaków) ale przynajmniej nie jest ograniczone brakiem generowania serii w mysql.
  • Odpowiedz
@plushy: Też kombinowałem inaczej, ale to mnie urzekło prostotą (no bo w gruncie rzeczy prościej się nie da). Plus taki, że sam se wyspecyfikowałem co chcę w stringu i mam wszędzie ładne, spójne separatory. I to rozwiązanie spełnia moje wymagania w 100% :)
  • Odpowiedz
To teraz o utrzymaniu bazy sql - gotowa procedura robiąca to:

Here’s a very simple stored procedure I use to run some maintenance on MySQL tables. It allows you to run OPTIMIZE TABLE or ANALYZE TABLE on all (or most) tables in a MySQL database.

Wypada napisać, że jeszcze jej nie odpalałem:)

Wklejam,
  • 18
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@RomantycznyRoman: Zawsze można dłuższy czas ustawić. Zapytanie o statystyki tabel jest na pewno jednym z prostszych i wykonuje się niemal błyskawicznie więc nie powinno być jakimś strasznym obciążeniem sprawdzanie tego. Jak już będziemy oszczędzać na takich rzeczach to pewnie następnym krokiem będzie wyłączenie pk i fk
  • Odpowiedz
@plushy: No właśnie sądzę, że nie. Nie ma - według mnie - sensu jakiekolwiek zbędne obciążanie (jakiekolwiek) bazy produkcyjnej w momencie sieczki generowanej przez userów. I sądzę, że można zrezygnować z analizowania w tym czasie . Ale to oczywiście kwestia priorytetów i dokładnych zadań, jakie przed tą bazą stoją (liczby requestów, etc.)
  • Odpowiedz
Ciekawostka - w mysql, w przeciwieństwie do mssql jest funkcja timediff(), znajdująca zastosowanie np. w takim zapytaniu: timediff(max(RunDate), min(RunDate)), zwracająca: '00:00:07'. Nie znalazłem opisu tejże funkcji w oficjalnej dokumentacji (może źle patrzyłem) - to wrzucam:P

#romanisql #programowanie #sql
  • 15
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

To jeszcze opis zmiennej thread_stack, która mi wczoraj dała do zrozumienia, że wypada ją ustawić;)

http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_thread_stack

http://technical-qa.blogspot.com/2010/12/mysql-problem-thread-stack-overrun.html - i wpis o tym, gdzie ją ustawić. Ja zrobiłem to z poziomu Workbencha - z poziomu sql dostawałem info, że zmienna jest tylko do odczytu:)

#romanisql #programowanie #sql
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@anonim1133: Jest ustawiona domyślnie z parametrami: 192KB (256KB for 64-bit systems), a to za mało na odpalenie procedury mega procedury, którą napisałem do wygenerowania danych - po około 40 iteracjach dostawałem error thread stack overrun (błąd skutkuje przerwaniem wykonywania zapytania) . Ustawiłem wartość czterokrotnie większą niż domyślna (wychodząc z założenia, że mogę sobie na to pozwolić w trakcie prac na instancji testowej - na produkcji zoptymalizowałbym procedurę.). Co ważne sama
  • Odpowiedz
Na razie robię sobie i ładuję strukturę głównej tabeli bazy, którą bez przerwy będzie męczył klient. Testy wydajnościowe wykonam na 100K rekordów i jak mi przez przypadek wyjdzie, że w moim zastosowaniu data w int jest wolniejsza - to dam wam znać (swoją drogą ciekawy task).

Jak już przy optymalizacji jesteśmy, będę testował wydajność zapytań z cache i bez cache (a nie jest to wcale ewidentne). Na rozgrzewkę wrzucam kilka linków na ten
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Siema! Siedzę teraz nad dość konkretną optymalizacją SQLową (mysql) i jeszcze przez kilka dni będę dłubał w kilometrach procedur... W związku z tym będę też przerzucał internet w każdą możliwą stronę. Czy wrzucać tu od czasu do czasu jakieś linki do ciekawych informacji, tematów optymalizacyjnych, etc.? Warto? Ktoś to będzie czytał?

#sql #mysql #programowanie #romanisql
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach