Witam
Mam aplikacje pisaną w Delphi, która korzysta z bazy danych MySQL.
Początkowo pisząc aplikację korzystałem z komponentów BDE, później jednak zacząłem ją stopniowo przerabiać na komponenty dbExpress. No i pojawił się problem.
W starej wersji, gdy używałem komponentów TTable i TQuery, to nawet jak było ich jednocześnie otwartych kilkadziesiąt, to było tylko jedno połączenie z bazą danych (komenda "show processlist;" w mysqlowej konsoli wypluwała tylko jedną linijkę dla jednej uruchomionej aplikacji). Teraz w nowej wersji, gdy korzystam z TSQLDataSet (w połączeniu z TDataSetProvider i TClientDataSet) to każda otwarta tabelka to jedno połączenie, mimo że cała aplikacja (wszystkie TSQLDataSet'y) jest oparta tylko o jeden komponent TSQLConnection. W efekcie, gdy na jednej stacji roboczej uruchomię aplikację, to tych połączeń jest np. kilkadziesiąt. Gdy uruchamiałem na drugiej stacji roboczej, to ta liczba się podwaja. W efekcie standardowo ustawiony MySQL na max_connections=100 zapychał się już przy otwieraniu aplikacji przez drugiego użytkownika. Zwiększenie liczby max_connections z 100 do np. 10000 to nie jest rozwiązanie, bo prędzej czy później MySQL przestanie działać efektywnie, zapcha się, a może i nawet wysypie. Czy w takim razie jedynym rozwiązaniem jest przeprogramowanie aplikacji tak, aby nie miał nigdy jednocześnie otwartych tak wielu tabel i query? Czy też wystarczy coś gdzieś zmienić w opcjach, żeby każda otwierana tabelka nie była nowym połączeniem z bazą, tak jak to było w przypadku BDE, który ponoć w porównaniu z dbExpress to archaiczne narzędzie?
Z góry dzięki za pomoc.