Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Tytułem wstepu                                 ˛                      Czas procesora                                  I/O ...
Tytułem wstepu                                      ˛                           Czas procesora                            ...
Tytułem wstepu                                     ˛                          Czas procesora                              ...
Tytułem wstepu                                     ˛                                            Zadania w tle             ...
Tytułem wstepu                                     ˛                                            Zadania w tle             ...
Tytułem wstepu                                     ˛                                            Zadania w tle             ...
Tytułem wstepu                                     ˛                                            Zadania w tle             ...
Tytułem wstepu                                     ˛                                            Zadania w tle             ...
Tytułem wstepu                                     ˛                                            Zadania w tle             ...
Tytułem wstepu                                     ˛                                            Zadania w tle             ...
Tytułem wstepu                                   ˛                                          Zadania w tle                 ...
Tytułem wstepu                                     ˛                                            Zadania w tle             ...
Tytułem wstepu                                    ˛                                           Zadania w tle               ...
Tytułem wstepu                                     ˛                                            Zadania w tle             ...
Tytułem wstepu                                     ˛                          Czas procesora                              ...
Tytułem wstepu                                     ˛                          Czas procesora                              ...
Tytułem wstepu                                    ˛                         Czas procesora                                ...
Tytułem wstepu                                    ˛                         Czas procesora                                ...
Tytułem wstepu                                      ˛                           Czas procesora                            ...
Tytułem wstepu                                    ˛                         Czas procesora                                ...
Tytułem wstepu                                    ˛                         Czas procesora                                ...
Tytułem wstepu                                    ˛                         Czas procesora                                ...
Tytułem wstepu                                    ˛                         Czas procesora                                ...
Tytułem wstepu                                    ˛                         Czas procesora                                ...
Tytułem wstepu                                    ˛                         Czas procesora                                ...
Tytułem wstepu                                    ˛                         Czas procesora                                ...
Tytułem wstepu                                     ˛                          Czas procesora                              ...
Tytułem wstepu                                      ˛                                             Indeksy                 ...
Tytułem wstepu                                      ˛                                             Indeksy                 ...
Tytułem wstepu                                             ˛                                                    Indeksy   ...
Tytułem wstepu                                             ˛                                                    Indeksy   ...
Tytułem wstepu                                             ˛                                                    Indeksy   ...
Tytułem wstepu                                             ˛                                                    Indeksy   ...
Tytułem wstepu                                             ˛                                                    Indeksy   ...
Tytułem wstepu                                   ˛                                          Indeksy                       ...
Tytułem wstepu                                   ˛                                          Indeksy                       ...
Tytułem wstepu                                   ˛                                          Indeksy                       ...
Tytułem wstepu                                    ˛                                           Indeksy                     ...
Tytułem wstepu                                   ˛                                          Indeksy                       ...
Tytułem wstepu                                    ˛                                           Indeksy                     ...
Tytułem wstepu                                   ˛                                          Indeksy                       ...
Tytułem wstepu                                   ˛                                          Indeksy                       ...
Tytułem wstepu                                  ˛                                         Indeksy                       Cz...
Tytułem wstepu                                   ˛                                          Indeksy                       ...
Tytułem wstepu                                  ˛                       Czas procesora                                   I...
Upcoming SlideShare
Loading in …5
×

Za co nie lubi Cię Twój hoster

3,288 views

Published on

Published in: Technology
  • Be the first to comment

Za co nie lubi Cię Twój hoster

  1. 1. Tytułem wstepu ˛ Czas procesora I/O Bazy danych QA Za co nie lubi Cie Twój hoster ˛Czyli jak wdro˙ y´ aplikacje na produkcje i prze˙ y´ by o tym z c ˛ ˛ z c opowiedzie´c Grzegorz Nosek, MegiTeam PyKonik, Kraków 9.02.2011 Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  2. 2. Tytułem wstepu ˛ Czas procesora I/O Bazy danych QADisclaimer Bedzie: ˛ 1 subiektywnie 2 bez zmy´ lania s 3 o cz˛ estych problemach i uniwersalnych rozwiazaniach ˛ 4 nie tylko o shared hostingu Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  3. 3. Tytułem wstepu ˛ Czas procesora I/O Bazy danych QAZasoby serwera Podstawowe zasoby: czas procesora dostep do dysków ˛ Serwery dostepne dla u˙ ytkownika: ˛ z serwer aplikacji serwer baz danych inne dedykowane serwery, np. pocztowe Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  4. 4. Tytułem wstepu ˛ Zadania w tle Czas procesora Miniaturki itp. I/O Pliki statyczne Bazy danych Strony prawie statyczne QACzas procesora zadania w tle miniaturki itp. pliki statyczne strony prawie statyczne Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  5. 5. Tytułem wstepu ˛ Zadania w tle Czas procesora Miniaturki itp. I/O Pliki statyczne Bazy danych Strony prawie statyczne QAZadania w tle ˙˛ okresowe (nie powiazane z konkretnym zadaniem) – ˛ mailingi, backupy itp. odroczone (zadania zbyt czasochłonne by je wykonywa´ w c ˙˛ obsłudze zadania) – przekodowanie wideo, analiza danych u˙ ytkownika itp. z Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  6. 6. Tytułem wstepu ˛ Zadania w tle Czas procesora Miniaturki itp. I/O Pliki statyczne Bazy danych Strony prawie statyczne QAZadania w tle Kryminalnie zle: ´ Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  7. 7. Tytułem wstepu ˛ Zadania w tle Czas procesora Miniaturki itp. I/O Pliki statyczne Bazy danych Strony prawie statyczne QAZadania w tle Kryminalnie zle: ´ while True: if mam_co_robic(): zrob_cos() time.sleep(1) # albo i to nie Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  8. 8. Tytułem wstepu ˛ Zadania w tle Czas procesora Miniaturki itp. I/O Pliki statyczne Bazy danych Strony prawie statyczne QAZadania w tle ´ Zle: while True: if mam_co_robic(): zrob_cos() time.sleep(600) Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  9. 9. Tytułem wstepu ˛ Zadania w tle Czas procesora Miniaturki itp. I/O Pliki statyczne Bazy danych Strony prawie statyczne QAZadania w tle Dobrze: zadania okresowe (time.sleep(600)): cron zadania w tle (time.sleep(1)): messaging (celery, RabbitMQ) Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  10. 10. Tytułem wstepu ˛ Zadania w tle Czas procesora Miniaturki itp. I/O Pliki statyczne Bazy danych Strony prawie statyczne QAMiniaturki Miniaturki i inne generowane pliki wzglednie czasochłonne do wygenerowania ˛ w sam raz do cache’owania na dysku cache mo˙ e by´ przezroczysty dla aplikacji z c ...ale to niekoniecznie dobry pomysł “There are only two hard things in Computer Science: cache invalidation and naming things”. Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  11. 11. Tytułem wstepu ˛ Zadania w tle Czas procesora Miniaturki itp. I/O Pliki statyczne Bazy danych Strony prawie statyczne QAMiniaturki Nginx location /obrazki { document_root /gdzies/tam/; try_files $uri @aplikacja; } location @aplikacja { # ... proxy_pass http://127.0.0.1:9000/; } Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  12. 12. Tytułem wstepu ˛ Zadania w tle Czas procesora Miniaturki itp. I/O Pliki statyczne Bazy danych Strony prawie statyczne QAPliki statyczne „...mógłbym ale serwer WWW zrobi to lepiej” django.views.static.serve kontrola dostepu: X-Sendfile, X-Accel-Redirect ˛ Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  13. 13. Tytułem wstepu ˛ Zadania w tle Czas procesora Miniaturki itp. I/O Pliki statyczne Bazy danych Strony prawie statyczne QAPliki statyczne Nginx location /scisle-tajne { internal; document_root /gdzies/tam/; } Aplikacja: HTTP/1.1 200 OK Content-Type: image/jpeg X-Accel-Redirect: /scisle-tajne/1234567.jpg Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  14. 14. Tytułem wstepu ˛ Zadania w tle Czas procesora Miniaturki itp. I/O Pliki statyczne Bazy danych Strony prawie statyczne QAStrony prawie statyczne Statyczna strona (np. artykuł) z dynamicznymi elementami (komentarze, reklamy) cache’owanie obiektów z bazy danych cache’owanie fragmentów HTML całkowicie statyczna strona z elementami dynamicznymi javascript SSI <!#include virtual=/ssi/comments?foo=bar Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  15. 15. Tytułem wstepu ˛ Czas procesora Pliki tworzone przez aplikacje ˛ I/O Hashowanie nazw plików Bazy danych QAI/O przełaczenie kontekstu CPU – kilka(-dziesiat) µs ˛ ˛ ruch głowica dysku – kilka(-na´ cie) ms ˛ s trudno dokładnie zmierzy´ , jeszcze trudniej sprawiedliwie c podzieli´ c Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  16. 16. Tytułem wstepu ˛ Czas procesora Pliki tworzone przez aplikacje ˛ I/O Hashowanie nazw plików Bazy danych QAI/O – pliki tworzone przez aplikacje ˛ Liczba plików tworzonych przez aplikacje ˛ s´ ´ do´ c dobry wyznacznik wymagan I/O w jednym katalogu im mniej plików tym szybszy dostep ˛ odgórne ograniczenia (ext3) łacznie ˛ czas tworzenia i odtwarzania kopii zapasowych Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  17. 17. Tytułem wstepu ˛ Czas procesora Pliki tworzone przez aplikacje ˛ I/O Hashowanie nazw plików Bazy danych QAI/O – pliki tworzone przez aplikacje ˛ Pliki tymczasowe (w tym rozmaite cache) niech beda naprawde tymczasowe ˛ ˛ ˛ nieu˙ ywane pliki cache usuwane z crona z łatwo zapomnie´ podczas tworzenia aplikacji c atime Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  18. 18. Tytułem wstepu ˛ Czas procesora Pliki tworzone przez aplikacje ˛ I/O Hashowanie nazw plików Bazy danych QAI/O – pliki tworzone przez aplikacje ˛ Pliki tymczasowe (w tym rozmaite cache) niech beda naprawde tymczasowe ˛ ˛ ˛ nieu˙ ywane pliki cache usuwane z crona z łatwo zapomnie´ podczas tworzenia aplikacji c atime, którego i tak nie ma mtime Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  19. 19. Tytułem wstepu ˛ Czas procesora Pliki tworzone przez aplikacje ˛ I/O Hashowanie nazw plików Bazy danych QAI/O – pliki tworzone przez aplikacje ˛ Pliki trwałe (nie mo˙ na ich usuna´ ) z ˛c niech beda naprawde trwałe ˛ ˛ ˛ nie zmieniaj im nazwy bez zmiany zawarto´ ci i vice-versa s Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  20. 20. Tytułem wstepu ˛ Czas procesora Pliki tworzone przez aplikacje ˛ I/O Hashowanie nazw plików Bazy danych QAI/O – pliki tworzone przez aplikacje ˛ Hashowanie nazw plików zamiast /obrazki/1234567.jpg: /obrazki/12/1234/1234567.jpg 2-3 poziomy katalogów ok. 1000 plików w katalogu ostatniego poziomu równomierny rozkład plików pierwsze znaki z MD5 itp. http://en.wikipedia.org/wiki/Benfords_law Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  21. 21. Tytułem wstepu ˛ Czas procesora Pliki tworzone przez aplikacje ˛ I/O Hashowanie nazw plików Bazy danych QAI/O – pliki tworzone przez aplikacje ˛ Hashowanie nazw plików – ku przestrodze adresy e-mailowe, hashowane wg pierwszej litery poczta/l/login@domena.pl Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  22. 22. Tytułem wstepu ˛ Czas procesora Pliki tworzone przez aplikacje ˛ I/O Hashowanie nazw plików Bazy danych QAI/O – pliki tworzone przez aplikacje ˛ Hashowanie nazw plików – ku przestrodze adresy e-mailowe, hashowane wg pierwszej litery poczta/l/login@domena.pl 15% zaczynało sie od biuro@ ˛ kolejne 10% od info@ Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  23. 23. Tytułem wstepu ˛ Czas procesora Pliki tworzone przez aplikacje ˛ I/O Hashowanie nazw plików Bazy danych QAI/O – pliki tworzone przez aplikacje ˛ Hashowanie nazw plików – ku przestrodze it’s MD5 all the way down Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  24. 24. Tytułem wstepu ˛ Czas procesora Pliki tworzone przez aplikacje ˛ I/O Hashowanie nazw plików Bazy danych QAI/O – pliki tworzone przez aplikacje ˛ Hashowanie nazw plików – ku przestrodze it’s MD5 all the way down 68/b3/29/da/... Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  25. 25. Tytułem wstepu ˛ Czas procesora Pliki tworzone przez aplikacje ˛ I/O Hashowanie nazw plików Bazy danych QAI/O – pliki tworzone przez aplikacje ˛ Hashowanie nazw plików – ku przestrodze it’s MD5 all the way down 68/b3/29/da/... 98/93/e3/40/... Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  26. 26. Tytułem wstepu ˛ Czas procesora Pliki tworzone przez aplikacje ˛ I/O Hashowanie nazw plików Bazy danych QAI/O – pliki tworzone przez aplikacje ˛ Hashowanie nazw plików – ku przestrodze it’s MD5 all the way down 68/b3/29/da/... 98/93/e3/40/... 99/c7/d8/ad/... Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  27. 27. Tytułem wstepu ˛ Czas procesora Pliki tworzone przez aplikacje ˛ I/O Hashowanie nazw plików Bazy danych QAI/O – pliki tworzone przez aplikacje ˛ Hashowanie nazw plików – ku przestrodze it’s MD5 all the way down 68/b3/29/da/... 98/93/e3/40/... 99/c7/d8/ad/... .../5c/b9/c9/40/68b329da9893e34099c7d8ad5cb9c940 ponad 3 miliony katalogów, z tego 300 tysiecy ostatniego ˛ poziomu po jednym pliku w ka˙ dym z Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  28. 28. Tytułem wstepu ˛ Indeksy Czas procesora MySQL I/O PostgreSQL Bazy danych W aplikacji QABazy danych Indeksy MySQL: storage engines PostgreSQL statystyki martwe krotki Aplikacja zbedne zapytania ˛ ORM – wierz ale sprawdzaj Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  29. 29. Tytułem wstepu ˛ Indeksy Czas procesora MySQL I/O PostgreSQL Bazy danych W aplikacji QAIndeksy „Tu jest ksia˙ ka, sprawd´ czy jest w niej co´ o lolkotkach” ˛z z s Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  30. 30. Tytułem wstepu ˛ Indeksy Czas procesora MySQL I/O PostgreSQL Bazy danych W aplikacji QAIndeksy „Tu jest ksia˙ ka, sprawd´ czy jest w niej co´ o lolkotkach” ˛z z s EXPLAIN mysql EXPLAIN SELECT votes FROM wp_votes WHERE post=3222; +----+-------------+----------+------+---------------+------+---------+------+------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+----------+------+---------------+------+---------+------+------+-------------+ | 1 | SIMPLE | wp_votes | ALL | NULL | NULL | NULL | NULL | 1407 | Using where | +----+-------------+----------+------+---------------+------+---------+------+------+-------------+ Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  31. 31. Tytułem wstepu ˛ Indeksy Czas procesora MySQL I/O PostgreSQL Bazy danych W aplikacji QAIndeksy CREATE INDEX mysql CREATE INDEX i_post_wp_votes ON wp_votes(post); Query OK, 1407 rows affected (0,04 sec) Records: 1407 Duplicates: 0 Warnings: 0 mysql EXPLAIN SELECT votes FROM wp_votes WHERE post=3222; +----+-------------+----------+------+-----------------+-----------------+---------+-------+------+------- | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra +----+-------------+----------+------+-----------------+-----------------+---------+-------+------+------- | 1 | SIMPLE | wp_votes | ref | i_post_wp_votes | i_post_wp_votes | 4 | const | 1 | +----+-------------+----------+------+-----------------+-----------------+---------+-------+------+------- Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  32. 32. Tytułem wstepu ˛ Indeksy Czas procesora MySQL I/O PostgreSQL Bazy danych W aplikacji QAIndeksy Indeks to nie wszystko megiteam= explain analyze select * from ip_traffic where ip = 77.79.227.119 and date_trunc(month, day) = 2011-01-01; QUERY PLAN --------------------------------------------------------------------------------------------------- Bitmap Heap Scan on ip_traffic (...) (actual time=3452.997..3511.852 rows=215 loops=1) Recheck Cond: (ip = 77.79.227.119::inet) Filter: (date_trunc(month::text, (day)::timestamp with time zone) = 2011-01-01 00:00:00+01::timestamp with time zone) - Bitmap Index Scan on ip_traffic_pkey (...) (actual time=532.491..532.491 rows=7748 loops=1) Index Cond: (ip = 77.79.227.119::inet) Total runtime: 3511.997 ms (6 rows) Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  33. 33. Tytułem wstepu ˛ Indeksy Czas procesora MySQL I/O PostgreSQL Bazy danych W aplikacji QAIndeksy Indeks to nie wszystko megiteam= explain analyze select * from ip_traffic where ip = 77.79.227.119 and day between 2011-01-01 and 2011-01-31; QUERY PLAN ------------------------------------------------------------------------------------------------ Bitmap Heap Scan on ip_traffic (...) (actual time=64.238..344.296 rows=215 loops=1) Recheck Cond: ((ip = 77.79.227.119::inet) AND (day = 2011-01-01::date) AND (day = 2011-01-31::date)) - Bitmap Index Scan on ip_traffic_pkey (...) (actual time=52.700..52.700 rows=215 loops=1) Index Cond: ((ip = 77.79.227.119::inet) AND (day = 2011-01-01::date) AND (day = 2011-01-31::date)) Total runtime: 344.450 ms (5 rows) Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  34. 34. Tytułem wstepu ˛ Indeksy Czas procesora MySQL I/O PostgreSQL Bazy danych W aplikacji QAIndeksy Indeks to nie wszystko megiteam= explain analyze select * from ip_traffic where ip = 77.79.227.119 and day between 2011-01-01 and 2011-01-31; QUERY PLAN ------------------------------------------------------------------------------------------------ Bitmap Heap Scan on ip_traffic (...) (actual time=64.238..344.296 rows=215 loops=1) Recheck Cond: ((ip = 77.79.227.119::inet) AND (day = 2011-01-01::date) AND (day = 2011-01-31::date)) - Bitmap Index Scan on ip_traffic_pkey (...) (actual time=52.700..52.700 rows=215 loops=1) Index Cond: ((ip = 77.79.227.119::inet) AND (day = 2011-01-01::date) AND (day = 2011-01-31::date)) Total runtime: 344.450 ms (5 rows) 10x szybciej Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  35. 35. Tytułem wstepu ˛ Indeksy Czas procesora MySQL I/O PostgreSQL Bazy danych W aplikacji QAMySQL – storage engines MyISAM szybki i w´ ciekły s brak transakcji, precyzyjnego lockowania Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  36. 36. Tytułem wstepu ˛ Indeksy Czas procesora MySQL I/O PostgreSQL Bazy danych W aplikacji QAMySQL – storage engines MyISAM szybki i w´ ciekły s brak transakcji, precyzyjnego lockowania InnoDB transakcje gwarancje spójno´ ci danych s Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  37. 37. Tytułem wstepu ˛ Indeksy Czas procesora MySQL I/O PostgreSQL Bazy danych W aplikacji QAMySQL – storage engines MyISAM szybki i w´ ciekły s brak transakcji, precyzyjnego lockowania InnoDB transakcje gwarancje spójno´ ci danych s s´ tragiczna wydajno´ c przy zapisie ´ grupowanie zapytan w transakcje Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  38. 38. Tytułem wstepu ˛ Indeksy Czas procesora MySQL I/O PostgreSQL Bazy danych W aplikacji QAPostgreSQL – statystyki ´ losowa próbka danych u˙ ywana do planowania zapytan z warto od´ wie˙ y´ po du˙ ych zmianach w tabeli s z c z tabele po´ redniczace w relacjach n:m s ˛ ANALYZE [VERBOSE] [tabela] Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  39. 39. Tytułem wstepu ˛ Indeksy Czas procesora MySQL I/O PostgreSQL Bazy danych W aplikacji QAPostgreSQL – martwe krotki MVCC – ró˙ ne transakcje widza ró˙ ne wersje danych z ˛ z ka˙ dy UPDATE i DELETE zostawia stara wersje krotki z ˛ ˛ UPDATE articles SET views=views+1 WHERE id=%d Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  40. 40. Tytułem wstepu ˛ Indeksy Czas procesora MySQL I/O PostgreSQL Bazy danych W aplikacji QAPostgreSQL – martwe krotki MVCC – ró˙ ne transakcje widza ró˙ ne wersje danych z ˛ z ka˙ dy UPDATE i DELETE zostawia stara wersje krotki z ˛ ˛ UPDATE articles SET views=views+1 WHERE id=%d cz˛ esto zmieniane dane w innej tabeli, połaczonej relacja ˛ ˛ 1:1 VACUUM ANALYZE [VERBOSE] [tabela] Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  41. 41. Tytułem wstepu ˛ Indeksy Czas procesora MySQL I/O PostgreSQL Bazy danych W aplikacji QAW aplikacji – zbedne zapytania ˛ w widoku: posts = Post.objects.filter(author=1) w szablonie: {% for post in posts %} {{ post.author }} {% endfor %} Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  42. 42. Tytułem wstepu ˛ Indeksy Czas procesora MySQL I/O PostgreSQL Bazy danych W aplikacji QAW aplikacji – zbedne zapytania ˛ w widoku: posts = Post.objects.filter(author=1) w szablonie: {% for post in posts %} {{ post.author }} {% endfor %} posts = Post.objects.filter(author=1).select_related(author) ´ cache’owanie zapytan (np. johnny-cache) Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  43. 43. Tytułem wstepu ˛ Indeksy Czas procesora MySQL I/O PostgreSQL Bazy danych W aplikacji QAW aplikacji – ORM .filter(fk=None) vs .filter(fk_id__isnull=True) django.contrib.contenttypes for obj in objs: qs = qs | Model.objects.filter(obj=obj) qs = Model.objects.filter(obj__in=objs) Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  44. 44. Tytułem wstepu ˛ Indeksy Czas procesora MySQL I/O PostgreSQL Bazy danych W aplikacji QAW aplikacji – ORM .filter(fk=None) vs .filter(fk_id__isnull=True) django.contrib.contenttypes for obj in objs: qs = qs | Model.objects.filter(obj=obj) qs = Model.objects.filter(obj__in=objs) str(queryset.query) Django debug toolbar Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛
  45. 45. Tytułem wstepu ˛ Czas procesora I/O Bazy danych QAPytania? Pytania? Grzegorz Nosek, MegiTeam Za co nie lubi Cie Twój hoster ˛

×