![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 3.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Zwracam się do szanownego grona specjalistów o pomoc w dwóch ( jak na razie) sprawach : 1. Na serwerze umieszczona jest baza MySQL oraz serwer aplikacji, z ktorym połączonych jest kilkaset urządzen, ktore co kilka-kilkanście sekund przysyłają dane, ktore wymagają aktualizacji bazy danych (zapisywanie wyników oraz aktualizacja danych o stanie urządzenia). Na tym serwerze umieszczone są także skrypty php, które pozwalają na monitorowanie stanu poszczególnych urządzeń oraz tworzenie statystyk. Problem polega na tym, że w momencie gdy zażyczymy sobie zrobienia statystyk ze wszystkich urządzeń na raz, ogrom danych, które muszą być wyszukane, sortowane itp jest tak duza (tabela logów zawiera kilkaset tysięcy - kilka milionów rekordów), że przez kilka minut serwer aplikacji ma problem z obsłużeniem połączeń z urządzeniami (na urządzeniach wyskakują timeouty związane z nieodpowiedzeniem serwera aplikacji w zadanym czasie, co jest spowodowane (wg mnie) niewykonaniem aktualizacji bazy danych w zadanym czasie w związku z czasochłonnymi wątkami zapytań statystycznych ). Moje pytanie brzmi: czy możliwe jest ustawianie priorytetu dla poszczególnych odwołań do bazy danych, tzn. czy np zapytaniom związanym ze statystyką można przydzielić niższy priorytet niż zapytaniom aktualizującym dane? 2. Bardziej szczegółowe: Mamy tabele urządzeń i systemów składających się z 3 urządzeń: tbl_urzadzenie ID_urzadzenia int (PRIMARY KEY) ... tbl_system ID_system int (PRIMARY KEY) ID_urz1 int ID_urz2 int ID_urz3 int ID_urza1-3 są kluczami obcymi wskazującymi na ID_urzadzenia w tbl_urzadznie. Moje pytanie brzmi: czy dla każdego z pol ID_urz1-3 tworzyć osobny klucz obcy czy też 1 klucz obcy powinien składać się z tych 3 pól. Dla tego drugiego przypadku MySQL Workbench wygenerował taki kod: CONSTRAINT `FOREIGN_URZ1` FOREIGN KEY (`ID_urz1` , `ID_urz2` , `ID_urz3` ) REFERENCES `main_srv`.`tbl_urzadzenie` (`ID_urzadzenia` , `ID_urzadzenia` , `ID_urzadzenia` ) ON DELETE NO ACTION ON UPDATE NO ACTION) Nie za bardzo rozumię jak to działa w przypadku złożonego klucza obcego więc jakby ktoś mógł mi to wytłumaczyć to byłbym bardzo zobowiązany. Pozdrawiam Artur Ten post edytował 1stfrog 11.03.2011, 12:31:49 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 15:02 |