Aplikacja sprawdzona na dwustu rekordach działa. Ta sama aplikacja przy dwustu tysiącach potrafi przestać odpowiadać — i zwykle nikt tego wcześniej nie sprawdził.
Próba na danych docelowych
Nie na próbce. Zbiór odpowiadający wielkością temu, co będzie za dwa lata, ujawnia problemy, których na małych danych nie widać.
Dane próbne można wygenerować, ale muszą mieć realny rozkład: część kontrahentów z setkami dokumentów, część z jednym. Zbiór równomierny nie pokaże tego, co w praktyce zatrzymuje ekrany.
Stronicowanie
Lista pobierająca wszystkie rekordy naraz działa do pewnej wielkości, a potem przestaje. Podział na strony musi być od początku, nie po zgłoszeniu.
Dotyczy to także eksportu i wydruków. Zestawienie obejmujące całą historię trzeba przygotować partiami, inaczej pierwsza próba pobrania go blokuje aplikację dla wszystkich pozostałych użytkowników.
Indeksy
Kolumny używane do wyszukiwania i sortowania. Ich brak jest najczęstszą przyczyną nagłego spowolnienia po roku pracy.
Spowolnienie bywa nagłe, bo baza radzi sobie z przeglądaniem całej tabeli do pewnej wielkości, a potem przestaje. Objaw wygląda wtedy jak awaria, choć nic się nie zmieniło poza liczbą wierszy. Przegląd zapytań i indeksów warto wpisać w rytm utrzymania, a nie robić go dopiero pod presją.
Zakres domyślny
Ekran otwierający się na bieżącym miesiącu zamiast na całej historii. Użytkownik i tak najczęściej patrzy na dane świeże.
Ten sam mechanizm dotyczy wyszukiwania: minimalna liczba znaków przed rozpoczęciem szukania i ograniczenie liczby wyników. Zapytanie o jedną literę w wielkiej kartotece potrafi obciążyć bazę bardziej niż cała reszta pracy w tym czasie.
Zestawienia w tle
Ciężkie wyliczenia wykonywane poza oknem przeglądarki, z powiadomieniem o gotowości. Oczekiwanie na ekranie kończy się przerwaniem połączenia.
Wartości pokazywane na pulpicie wskaźników zwykle wylicza się z góry i zapisuje gotowe. Liczenie ich przy każdym otwarciu ekranu jest pierwszą rzeczą, która przestaje działać wraz ze wzrostem danych.
Archiwum
Dokumenty sprzed lat rzadko są potrzebne w codziennej pracy, a obciążają każde zapytanie. Przeniesienie ich do osobnego zbioru z zachowaniem dostępu na żądanie bywa prostszym rozwiązaniem niż optymalizacja. Trzeba tylko wcześniej ustalić, jak długo dane muszą być dostępne od ręki, i sprawdzić, czy nie stoją za tym wymogi wynikające z przepisów o przechowywaniu dokumentów.
Załączniki
Zdjęcia i skany rosną szybciej niż same rekordy i to one zwykle zapełniają miejsce na serwerze. Warto trzymać je poza bazą, pomniejszać przy zapisie i nie wczytywać na listach — wystarczy miniatura albo sama informacja o liczbie plików.
Pomiar zamiast domysłów
Wolne miejsce trzeba zmierzyć, a nie zgadywać. Optymalizacja fragmentu, który nie jest wąskim gardłem, to praca bez efektu.
Warto zbierać czasy odpowiedzi z działającej aplikacji. Wtedy wiadomo, co spowalnia i od kiedy, zamiast szukać po zgłoszeniu, że „coś dziś wolno chodzi". Ta sama zasada odróżnia aplikację od arkusza, w którym o wydajności dowiadujemy się dopiero przy otwarciu pliku.