SQL Server w logistyce

Tabela _users_activity w bazie danych SQL Server

Ślad wywołanych transakcji — pokazuje, z których funkcji systemu użytkownicy faktycznie korzystają.

sql.server.net.pl/sql/
Uśmiechnięty analityk w garniturze przy szerokim monitorze
Uśmiechnięty analityk w garniturze przy szerokim monitorze
W skrócie
  • Wiersz odnotowuje wywołanie transakcji — nazwę funkcji, jej parametry oraz moment uruchomienia.
  • Status ACH = 1 wyróżnia ostatnią transakcję użytkownika, co pozwala pokazać mu punkt, w którym przerwał pracę.
  • Rejestr odpowiada na pytanie, których funkcji nikt nie używa — a to podstawa upraszczania menu.
  • Cztery indeksy obsługują zarówno widok „ostatnio używane”, jak i analizę wykorzystania w czasie.

Do czego służy tabela [dbo].[_users_activity]

Menu systemu magazynowego po kilku latach rozwoju liczy dziesiątki pozycji, z których codziennie używana jest garść. Tabela [dbo].[_users_activity] pozwala odróżnić jedne od drugich, rejestrując każde wywołanie transakcji razem z parametrami i czasem.

Zapis ma dwa zastosowania działające w różnych skalach czasowych. Doraźnie zasila widok ostatnio używanych funkcji — wyróżniony statusem ACH = 1 wiersz wskazuje transakcję, na której użytkownik skończył pracę, więc po zalogowaniu może do niej wrócić jednym kliknięciem. Docelowo dostarcza danych do przeglądu: które pozycje menu są martwe i można je ukryć.

Kolumny FOLDER, TRANSAKCJA i PLIK opisują wywołanie na trzech poziomach szczegółowości — od obszaru, przez nazwę funkcji, po przekazane parametry. Ta ostatnia bywa najciekawsza przy analizie: pokazuje nie tylko, że ktoś otworzył zestawienie, ale też z jakim zakresem dat i filtrem, co tłumaczy, dlaczego jedno wywołanie trwało sekundę, a inne minutę.

Dwa zastosowania rejestru aktywności
Wywołanie WywołanieUżytkownik uruchamia transakcję, powstaje wpis z parametrami
Powrót PowrótOstatnia transakcja pozwala wrócić do przerwanej pracy
Analiza AnalizaZestawienie pokazuje, które funkcje są faktycznie używane
Uproszczenie UproszczeniePozycje bez wywołań znikają z menu

Drugie zastosowanie bywa pomijane, a to ono daje najwięcej: menu ograniczone do funkcji faktycznie używanych skraca czas szkolenia nowych pracowników.

Budowa tabeli — wykaz kolumn

Dziewięć kolumn opisuje wywołanie transakcji, jego autora oraz moment wykonania.

Wykaz kolumn tabeli
KolumnaTypWymaganaZnaczenie
ACHvarchar(1)
tekst do 1 znaków
nieACH=1 - ostatnia wywołana transakcja prze użytkownika
DDOWODdate
data
takData uruchomienia transakcji
FOLDERvarchar(500)
tekst do 500 znaków
nieTransakcja
ID_USER_ACTIVITYint
liczba całkowita
takUnikalny identyfikator wiersza w tabeli
KIEDYdatetime
data i godzina
takData i godzina wywołania transakcji
OPISvarchar(max)
tekst bez limitu długości
nieOpis wywołanej transakcji
PLIKvarchar(500)
tekst do 500 znaków
nieParametry wywołanej transakcji
TRANSAKCJAvarchar(500)
tekst do 500 znaków
takWywołana transakcja
USERNAMEvarchar(50)
tekst do 50 znaków
takNazwa użytkownika

Kolumny TRANSAKCJA, FOLDER i PLIK mają po pięćset znaków, bo mieszczą pełne adresy wywołań wraz z parametrami. Przy analizie warto grupować po skróconej wartości, inaczej każde wywołanie z innym filtrem trafi do osobnej grupy.

Indeksy i wydajność zapytań

Cztery indeksy odpowiadają dwóm sposobom korzystania z rejestru: bieżącemu i analitycznemu.

Indeksy zdefiniowane na tabeli
IndeksKolumnyRodzaj
PK__users_activityID_USER_ACTIVITYklucz główny
USERNAMEUSERNAMEzwykły
USERNAME_ACHID_USER_ACTIVITY, USERNAME, ACHzwykły
USERNAME_KIEDYUSERNAME, KIEDYzwykły

Indeks USERNAME_ACH obsługuje widok ostatnio używanej transakcji — zapytanie zadawane przy każdym zalogowaniu. Indeks USERNAME_KIEDY służy analizie: pozwala pobrać aktywność jednego użytkownika w zadanym okresie bez przeglądania całej tabeli.

Przegląd menu na podstawie rzeczywistego wykorzystania

Rejestr aktywności odpowiada na pytania, których nie da się rozstrzygnąć w rozmowie — bo użytkownicy rzadko pamiętają, czego naprawdę używają.

  • Funkcje bez ani jednego wywołania w ciągu roku to najpewniejsi kandydaci do ukrycia; zwykle są pozostałością po analizie przedwdrożeniowej.
  • Funkcje używane przez jedną osobę nie muszą znikać, ale nie powinny zajmować miejsca w menu wszystkich pozostałych.
  • Rozkład w ciągu dnia pokazuje, kiedy przypada szczyt — a to podpowiada, kiedy nie planować zadań obciążających bazę.
  • Powtarzające się wywołania tej samej transakcji z tymi samymi parametrami wskazują na czynność nadającą się do automatyzacji.
  • Zestawienia otwierane z bardzo szerokim zakresem dat są zwykle przyczyną skarg na wydajność — i da się je wskazać po parametrach.

Ostatni punkt jest praktycznie najcenniejszy. Skarga „system działa wolno” rzadko dotyczy całego systemu; niemal zawsze chodzi o jedno konkretne zestawienie uruchamiane z zakresem obejmującym kilka lat. Kolumna z parametrami pozwala to potwierdzić bez zgadywania, a rozwiązaniem bywa domyślne ograniczenie zakresu, nie przebudowa zapytania.

Jak korzystać z tabeli w praktyce

Przy analizie aktywności użytkowników warto pamiętać o kilku rzeczach:

  • Grupuj po skróconej nazwie transakcji; pełna wartość zawiera parametry, więc każde wywołanie trafiłoby do osobnej grupy.
  • Porównuj listę pozycji menu z listą faktycznie wywoływanych transakcji — różnica to gotowa lista do przeglądu.
  • Sprawdzaj parametry przy skargach na wydajność; przyczyną jest zwykle zakres dat, nie samo zapytanie.
  • Nie traktuj rejestru jako narzędzia oceny pracy; mierzy liczbę kliknięć, a nie wykonaną robotę.
  • Archiwizuj wpisy starsze niż rok — do analizy trendów wystarczają dane zagregowane.
  • Uwzględnij ten rejestr w polityce ochrony danych; zawiera informacje o aktywności konkretnych osób.

Transakcje uporządkowane według rzeczywistego wykorzystania w ostatnim roku — podstawa przeglądu menu:

SELECT  LEFT(TRANSAKCJA, 60)     AS TRANSAKCJA,
        COUNT(*)                 AS WYWOLAN,
        COUNT(DISTINCT USERNAME) AS UZYTKOWNIKOW,
        MAX(KIEDY)               AS OSTATNIO
FROM    dbo._users_activity
WHERE   KIEDY >= DATEADD(YEAR, -1, GETDATE())
GROUP BY LEFT(TRANSAKCJA, 60)
ORDER BY WYWOLAN;

Sortowanie rosnące jest tu celowe — na początku wyniku znajdą się funkcje używane najrzadziej, czyli te, o które chodzi przy porządkowaniu menu.

Osobno warto ustalić okres przechowywania. Rejestr rośnie z każdym kliknięciem, więc przy kilkudziesięciu użytkownikach pracujących na trzy zmiany przyrost jest znaczny. Do analizy trendów w skali roku wystarczają dane zagregowane — liczba wywołań każdej transakcji w podziale na miesiące — a te zajmują ułamek miejsca. Szczegółowe wpisy warto zachować przez kilka miesięcy, bo tyle wystarcza do diagnozy skarg na wydajność.

Rejestr aktywności bywa mylony z kontrolą pracowników i z tego powodu bywa wyłączany. Szkoda, bo jego wartość leży gdzie indziej: to jedyne źródło danych pozwalające uprościć system na podstawie faktów zamiast wrażeń. Menu ograniczone do funkcji faktycznie używanych skraca szkolenie nowej osoby o kilka godzin.

Powiązane tabele i dokumentacja

Rejestr aktywności uzupełnia pozostałe zapisy dotyczące pracy użytkowników:

FAQ

Najczęściej zadawane pytania o tabelę _users_activity

01

Do czego służy status ACH równy 1?

Wyróżnia ostatnią transakcję wywołaną przez danego użytkownika. Pozwala to pokazać mu po zalogowaniu punkt, w którym przerwał pracę, i wrócić do niego jednym kliknięciem. Indeks USERNAME_ACH jest założony właśnie pod to zapytanie, zadawane przy każdym logowaniu.

02

Jak wykorzystać rejestr do uproszczenia menu?

Przez zestawienie listy pozycji menu z listą transakcji faktycznie wywoływanych w ciągu ostatniego roku. Różnica to gotowa lista kandydatów do ukrycia. Warto sprawdzić, czy żadna z nich nie należy do procesu uruchamianego raz w roku — poza tym są to zwykle pozostałości po analizie przedwdrożeniowej.

03

Czy rejestr nadaje się do oceny pracy pracowników?

Nie i nie do tego służy. Mierzy liczbę wywołań funkcji, a nie wykonaną pracę — magazynier kompletujący duże zlecenie wygeneruje mniej wpisów niż osoba przeglądająca zestawienia. Użycie rejestru w ten sposób psuje też jego wartość analityczną, bo ludzie zaczynają dostosowywać sposób pracy do tego, co jest mierzone.

04

Dlaczego przy analizie trzeba skracać nazwę transakcji?

Bo kolumna mieści pełny adres wywołania wraz z parametrami, a te różnią się przy każdym uruchomieniu — inny zakres dat, inny filtr. Grupowanie po pełnej wartości dałoby tyle grup, ile wywołań. Skrócenie do kilkudziesięciu pierwszych znaków zostawia samą nazwę funkcji, o którą chodzi.

Słownik pojęć

Słownik pojęć

Pojęcia związane z analizą sposobu korzystania z systemu.

RRole i uprawnienia
Mechanizm przypisywania użytkownikom dostępu do funkcji i danych. Zamiast nadawać uprawnienia pojedynczo, przypisuje się je do roli odpowiadającej stanowisku.
RRODO
Rozporządzenie o ochronie danych osobowych. Wymaga ograniczenia dostępu do danych, rejestrowania operacji na nich i wskazania podstawy przetwarzania.
WWydajność zapytań
Czas, w jakim baza danych zwraca wynik. Zależy od indeksów, planu wykonania i objętości przetwarzanych danych.
MMicrosoft SQL Server
Serwer relacyjnej bazy danych, na którym pracują aplikacje SoftwareStudio. Odpowiada za spójność danych, uprawnienia dostępu, kopie zapasowe i wydajność zapytań.
IIndeks bazodanowy
Struktura przyspieszająca wyszukiwanie wierszy w tabeli. Dobrze dobrane indeksy skracają czas zapytań, ale spowalniają zapisy i zajmują miejsce na dysku.
RRaportowanie
Przetwarzanie danych operacyjnych w zestawienia wspierające decyzje. W SQL Server realizowane zapytaniami, widokami i narzędziami analitycznymi.
PPulpit menedżerski
Ekran zbierający najważniejsze wskaźniki w jednym widoku, odświeżany na bieżąco z bazy danych.
ŚŚlad rewizyjny
Nieusuwalny zapis, kto i kiedy zmienił dane w systemie. Podstawa wiarygodności ewidencji podczas audytu i kontroli.

Zobacz to w praktyce

Sprawdź, jak systemy SoftwareStudio oparte na MS SQL Server wspierają ten obszar Twojej firmy.