Kilka dni temu dostałem następujący błąd z bazą danych MySQL: stackParametr thread_stack serwera MySQL - co to jest? Jak duży powinien być?
Temat opanowane: 68744 bajtów używanych stosu 196608 bajtów i 128000 bajtów potrzebnych. Użyj "mysqld -O thread_stack = #", aby określić większy stos.
Wszystkie dokumenty, które znalazłem, mówi, że:
Domyślnie jest 64KB przed MySQL 4.0.10 i 192kB później. Jeśli wielkość stosu wątków jest zbyt mała, ogranicza to złożoność instrukcji SQL obsługiwanych przez serwer, głębokość rekursji zapisanych procedur i inne operacje powodujące zużycie pamięci.
Ustawiłem zmienną thread_stack na 256K, ale była to tylko losowa wartość. Na razie rozwiązał problem, ale naprawdę chciałbym wiedzieć, jak duże powinno być, uzyskać przykładowe wartości lub zwyczaje. Np .:
- Co może i czego nie mogę zrobić przy stosie nici 96 KB (x KB)?
- Jak obliczyć, ile stosu wątków potrzebuję?
co robiłeś, co spowodowało to? masz jakieś duże sprzężenia lub rekursywne przechowywane procy? – oedo
Rekursywnie przechowywane procy są powodem, dla którego myślę. Mam również łączenia na wielkich stołach (500M rekordów), ale zazwyczaj najpierw wycinam tylko mały podzestaw stołu, a następnie łączę go z drugim, który jest względnie mały. Nigdy nie robię złączeń na dwóch stołach z milionami rekordów ani złączeń, które produkują miliony rekordów. Ale jaki wpływ ma na sprzężenie thread_stack? – ssobczak
@ssobczak, wszelkie wskazówki dotyczące wpływu thread_stack na łączenia? –