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,233 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,233
On SlideShare
0
From Embeds
0
Number of Embeds
1,497
Actions
Shares
0
Downloads
5
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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 ˛

×