Trwałe połączenia nie powinny być potrzebne w przypadku MySQL. W innych bazach danych (takich jak Oracle) nawiązanie połączenia jest kosztowne i czasochłonne, więc jeśli możesz ponownie użyć połączenia, jest to duża wygrana. Ale te marki baz danych oferują łączenie połączeń, co lepiej rozwiązuje problem.
Nawiązywanie połączenia z bazą danych MySQL jest szybkie w porównaniu z innymi markami, więc używanie trwałych połączeń daje proporcjonalnie mniejsze korzyści dla MySQL niż w przypadku bazy danych innej marki.
Trwałe połączenia mają też wadę. Serwer bazy danych przydziela zasoby do każdego połączenia, niezależnie od tego, czy są one potrzebne, czy nie. Widzisz więc wiele zmarnowanych zasobów bez celu, jeśli połączenia są bezczynne. Nie wiem, czy osiągniesz 10 000 nieaktywnych połączeń, ale nawet kilkaset jest kosztownych.
Połączenia mają stan i byłoby niewłaściwe, aby żądanie PHP "dziedziczyło" informacje z sesji poprzednio używanej przez inne żądanie PHP. Na przykład tabele tymczasowe i zmienne użytkownika są zwykle czyszczone po zamknięciu połączenia, ale nie w przypadku korzystania z połączeń trwałych. Podobnie ustawienia oparte na sesji, takie jak zestaw znaków i sortowanie. Ponadto LAST_INSERT_ID()
zgłosi identyfikator ostatnio wygenerowany podczas sesji — nawet jeśli miało to miejsce podczas poprzedniego żądania PHP.
Przynajmniej w przypadku MySQL wady trwałych połączeń prawdopodobnie przewyższają ich zalety. Są też inne, lepsze techniki pozwalające osiągnąć wysoką skalowalność.
Aktualizacja z marca 2014 r.:
Szybkość połączenia MySQL była zawsze niska w porównaniu z innymi markami RDBMS, ale jest jeszcze lepsza.
Zobacz http://mysqlserverteam.com/improving-connectdisconnect-performance/
Przeczytaj blog, aby uzyskać więcej informacji i porównań prędkości.