ACC2000: Optymalizacja pod kątem wydajności klienta/serwera

Tłumaczenia artykułów Tłumaczenia artykułów
Numer ID artykułu: 208858 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Poziom zaawansowany: wymaga zaawansowanej znajomości pisania kodu i zagadnień związanych ze współdziałaniem i obsługą wielu użytkowników.

Informacje zawarte w tym artykule dotyczą tylko bazy danych programu Microsoft Access (.mdb).

Rozwiń wszystko | Zwiń wszystko

Na tej stronie

Streszczenie

W tym artykule zawarto wskazówki dotyczące optymalizacji źródeł danych ODBC (Open Database Connectivity) w programie Microsoft Access.

UWAGA: Zakłada się, że czytelnik zna środowiska i architekturę klient/serwer.

Więcej informacji

Metody dostępu do danych

Istnieją następujące metody uzyskiwania dostępu do danych na serwerze za pomocą aplikacji klient/serwer:

  • Połączone tabele i widoki
  • Kwerendy przekazujące SQL, które wysyłają instrukcje SQL bezpośrednio do serwera
  • Projekt programu Access

Połączone Tabele i Widoki

Najefektywniejszą metodą obsługiwania danych na serwerze jest połączenie tabel i widoków z serwera. Program Microsoft Access przechowuje informacje o polach i indeksach dla tabel połączonych. Wydajność otwierania tabel jest wtedy większa.

UWAGA: Jeśli w polach lub indeksach na serwerze wprowadzane są zmiany, należy ponownie połączyć zdalne tabele w programie Access.

Uruchamianie kwerend przekazujących SQL

W wielu aplikacjach istnieje możliwość utworzenia kwerend programu Microsoft Access opartych na tabelach zdalnych, a także kwerend przekazujących SQL. Kwerendy przekazujące odznaczają się następującymi zaletami:
  • Program Microsoft Access nie kompiluje kwerendy przekazującej. Wysyła ją bezpośrednio do serwera ODBC. Aplikacja działa wtedy szybciej.
  • Program Access wysyła kwerendę przekazującą do serwera w identycznej postaci, w jakiej została wprowadzona. Dlatego więcej procesów jest wykonywanych na serwerze i mniej danych jest przekazywanych przez sieć.
  • Formularze, raporty i kwerendy programu Microsoft Access mogą być oparte na kwerendach przekazujących, które wykorzystują tabele połączone ODBC.
  • Można użyć funkcji właściwej dla serwera SQL Server (na przykład procedur przechowywanych lub wewnętrznych funkcji serwera), która nie ma odpowiednika w kodzie.
  • Kwerendy przekazujące akcji aktualizowania, usuwania i dołączania są o wiele szybsze niż kwerendy akcji oparte na tabelach zdalnych, zwłaszcza gdy akcja dotyczy wielu rekordów.
Kwerendy przekazujące odznaczają się następującymi wadami:
  • Kwerenda przekazująca SQL zawsze zwraca migawkę, której nie można aktualizować. Kwerenda programu Microsoft Access zwraca zazwyczaj zestaw dynamiczny, który odzwierciedla zmiany innych użytkowników i który można aktualizować.
  • Polecenia muszą być wpisywane bezpośrednio w oknie Kwerenda przekazująca SQL w składni wymaganej przez serwer. Kwerend przekazujących nie można zaprojektować w siatce projektowania kwerend.
  • Jeśli kwerenda przekazująca wymaga parametru, trzeba ją uruchomić w kodzie i zmodyfikować właściwość SQL kwerendy. Aby uzyskać dodatkowe informacje dotyczące modyfikowania właściwości SQL wraz z przykładem, należy kliknąć numer artykułu poniżej w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
    232493ACC2000: How to Simulate Parameters in an SQL Pass-Through Query

Żądanie mniejszej ilości danych z serwera

Żądanie danych z serwera zwiększa czas przetwarzania. Aby zoptymalizować wydajność, należy żądać tylko tych rekordów i pól, które są potrzebne.

Należy ograniczać liczbę formantów związanych, takich jak pola tekstowe, pola kombi, pola listy i podformularze. Po otwarciu formularza każdy z tych formantów wysyła do serwera osobną kwerendę.

Jeśli w połączonych tabelach ODBC są pola obiektów Memo lub OLE, można zmienić właściwość Widoczny pól na Nie i dodać przycisk przełącznika zmieniający właściwość Widoczny na Tak, aby użytkownicy mogli obejrzeć pola, gdyby chcieli.

Niektóre połączone tabele nie zmieniają się często. Na przykład tabela zawierająca nazwy i skróty 16 województw nie zmienia się zbyt często. Można przyspieszyć ładowanie formularza i ograniczyć obciążenie serwera, przechowując kopię tych tabel lokalnie. Można także udostępnić sposób aktualizowania kopii lokalnej aktualnymi danymi z serwera.

Optymalizacja kwerend

Podstawową metodą optymalizacji kwerend (po dodaniu odpowiednich indeksów na serwerze) jest dopilnowanie, aby przetwarzanie odbywało się na serwerze. Należy unikać funkcji, które nie są obsługiwane przez serwer, takich jak funkcje właściwe dla programu Microsoft Access czy funkcje zdefiniowane przez użytkownika. Aby uzyskać szczegółowe informacje o tym, co musi być przetwarzane lokalnie, należy zapoznać się z dokumentem Microsoft Jet Database Engine ODBC Connectivity (więcej informacji na temat tego dokumentu zawiera rozdział „Dokument Microsoft Jet Database Engine ODBC Connectivity” w dalszej części tego artykułu).

Aby zobaczyć instrukcję Select wysyłaną do serwera, można zmienić ustawienie TraceSQLMode. Aby to zrobić, wykonaj następujące kroki:
  1. Kliknij menu Start, a następnie kliknij polecenie Uruchom.
  2. W oknie dialogowym Otwórz wpisz tekst Regedit.
  3. Rozwijaj poddrzewo HKEY_LOCAL_MACHINE do czasu zlokalizowania podklucza SOFTWARE\Microsoft\Jet\4.0\Engines.
  4. Kliknij klucz Engines.
  5. Jeśli w prawym okienku nie ma wartości TraceSQLMode, kliknij polecenie Nowy w menu Edycja, a następnie kliknij polecenie Wartość DWORD.
  6. W prawym okienku w kolumnie Nazwa wpisz TraceSQLMode jako nową wartość.
  7. Zaznacz nową wartość, a następnie kliknij polecenie Modyfikuj w menu Edycja.
  8. W obszarze System wybierz opcję Dziesiętny. W polu Dane wartości wpisz 1, a następnie kliknij przycisk OK.
Aby uzyskać więcej informacji o ustawieniu TraceSQLMode, kliknij polecenie Microsoft Access – Pomoc w menu Pomoc, wpisz „TraceSQLMode” w Asystencie pakietu Office lub Kreatorze odpowiedzi i kliknij przycisk Wyszukaj, aby wyświetlić temat.

Ustawienie TryJetAuth

Ustawienie TryJetAuth kontroluje, czy program Microsoft Access próbuje się najpierw logować do serwera za pomocą hasła i identyfikatora logowania programu Microsoft Access. (Domyślnie identyfikator logowania programu Microsoft Access to „admin”, a hasło jest puste.) Jeśli to się nie powiedzie, program Microsoft Access monituje o hasło i identyfikator logowania. Jeśli nie została wybrana konfiguracja nakazująca programowi Microsoft Access korzystanie z tego samego hasła i identyfikatora logowania co serwer ODBC, do klucza rejestru HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\ODBC\TryJetAuth należy dodać wiersz „TryJetAuth=0”. Uniemożliwia to próby logowania się przez program Microsoft Access z błędnym identyfikatorem. W tym celu wykonaj następujące kroki:
  1. Kliknij przycisk Start, a następnie kliknij polecenie Uruchom.
  2. W oknie dialogowym Otwórz wpisz tekst Regedit.
  3. Zlokalizuj poddrzewo HKEY_LOCAL_MACHINE.
  4. Rozwijaj poddrzewo HKEY_LOCAL_MACHINE do czasu zlokalizowania następującego podklucza:
    SOFTWARE\Microsoft\Jet\4.0\ODBC\TryJetAuth
  5. Kliknij klucz Engines.
  6. Jeśli nie ma wartości TryJetAuth, kliknij polecenie Nowy w menu Edycja, a następnie kliknij polecenie Wartość DWORD.
  7. W prawym okienku w kolumnie Nazwa wpisz TryJetAuth jako nową wartość.
  8. Zaznacz nową wartość, a następnie kliknij polecenie Modyfikuj w menu Edycja.
  9. W obszarze System wybierz opcję Dziesiętny. W polu Dane wartości wpisz 1, a następnie kliknij przycisk OK.

Sygnatury czasowe

W serwerach, które je obsługują, na przykład Microsoft SQL Server, pola sygnatur czasowych pozwalają na efektywniejsze aktualizowanie rekordów. Pola sygnatur czasowych są kontrolowane przez serwer i aktualizowane przy każdej aktualizacji rekordu.

Jeśli istnieje pole sygnatury czasowej, program Microsoft Access musi tylko sprawdzić unikatowy indeks, aby się dowiedzieć, czy rekord się zmienił od momentu, gdy był pobierany z serwera po raz ostatni. Jeśli tego pola nie ma, program Microsoft Access musi sprawdzić wszystkie pola w rekordzie. Jeśli pole sygnatury czasowej zostanie dodane do tabeli połączonej, należy połączyć tabelę ponownie, aby poinformować program Microsoft Access o nowym polu.

Transakcje

Korzystanie z transakcji w języku VBA (Visual Basic for Applications) podczas aktualizowania lub wstawiania rekordów w tabelach połączonych może poprawić wydajność. Dzięki transakcjom aparat bazy danych Jet może akumulować wiele aktualizacji i zapisywać je seryjnie. W przypadku serwera Microsoft SQL Server transakcje powinny być krótkie, ponieważ generują blokady uniemożliwiające innym użytkownikom odczyt danych używanych przez bieżącą transakcję. Zagnieżdżanie transakcji w języku VBA jest możliwe, ale większość serwerów nie obsługuje transakcji zagnieżdżonych. Program Microsoft Access wysyła do serwera tylko transakcję pierwszego poziomu.

Optymalizacja kodu i zestawów rekordów

Dane zawarte w obiektach Zestaw rekordów typu Zestaw dynamiczny można przechowywać częściowo lub w całości w pamięci lokalnej, ustawiając właściwości CacheSize i CacheStart.

Pamięć podręczna może mieć wielkość od 5 do 1200 rekordów. Jeśli wielkość przekracza dostępną pojemność, nadmiar rekordów zapisuje się w tymczasowym pliku dyskowym. Zastosowanie metody FillCache wypełnia pamięć podręczną danymi z serwera. Aby odzyskać pamięć podręczną, należy ustawić właściwość CacheSize równą zero.

Stosując zmienne Zestaw rekordów, należy korzystać tylko z potrzebnych funkcji. Na przykład opcję dbAppendOnly należy dodawać podczas korzystania z opcji OpenRecordset tylko wtedy, gdy zachodzi potrzeba dodania nowych rekordów do zestawu rekordów. Jeśli możliwość edytowania lub aktualizowania nie jest potrzebna, zestawy rekordów powinny być oparte na kwerendach przekazujących SQL. Najszybszą metodą wstawiania i aktualizowania rekordów jest korzystanie z kwerend przekazujących SQL w kodzie.

Tabela MSysConf

Na serwerze można utworzyć tabelę o nazwie MSysConf, która będzie kontrolowała zapełnianie w tle (w tempie, z jakim program Microsoft Access odczytuje rekordy z serwera w czasie bezczynności). W tej tabeli można ustawić liczbę rzędów danych, które są pobierane naraz, oraz liczbę sekund zwłoki między poszczególnymi operacjami pobierania. Jeśli zaobserwuje się nadmierne blokowanie odczytu na serwerze, można dopasować ustawienia tabeli, aby zwiększyć szybkość zapełniania w tle. Jeśli zapełnianie w tle generuje zbyt duży ruch w sieci, można dopasować te ustawienia tak, aby zmniejszyć jego szybkość. Więcej informacji o tworzeniu i ustawianiu tabeli MSysConf można znaleźć w następującej witrynie sieci Web Microsoft Developer Network (MSDN):
http://msdn.microsoft.com/library/default.asp?url=/archive/en-us/accessdev/html/ODC_ServerApplicationDevelopment.asp
http:// msdn.microsoft.com / library / en-us / off2000 / html / achowMsysconfTableAttachedSqlDatabasesS.asp

Dokument Microsoft Jet Database Engine ODBC Connectivity

Ważnym źródłem dodatkowych informacji jest dokument „Jet Database Engine ODBC Connectivity”. Został on wprawdzie napisany pod kątem aparatu Jet 3.0, ale informacje te dotyczą także aparatu Jet 4.0. Dokument omawia aparat bazy danych Microsoft Jet 3.0 oraz sposób, w jaki wykorzystuje on technologię ODBC. Dokument ten można pobrać z następującej witryny firmy Microsoft w sieci Web:
http://download.microsoft.com/download/access95/whitep5/1/W98/PL/Rjwpv3.exe

Projekt programu Access

Projekt programu Access łączy się z serwerem Microsoft SQL Server 6.5 lub 7.0 przez OLEDB. Jeśli wszystkie tabele w bazie danych Access są tabelami połączonymi z serwerem SQL Server, utworzenie projektu programu Access może poprawić wydajność. Jeśli jednak baza danych zawiera jakiekolwiek tabele programu Access, ta możliwość nie istnieje.

Właściwości

Numer ID artykułu: 208858 - Ostatnia weryfikacja: 23 stycznia 2006 - Weryfikacja: 3.2
Informacje zawarte w tym artykule dotyczą:
  • Microsoft Access 2000 Standard Edition
Słowa kluczowe: 
kbdownload kbhowto kbusage KB208858

Przekaż opinię

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com