2010-05-27 22 views
10

ngày Couple trước, tôi đã nhận lỗi sau đây từ cơ sở dữ liệu MySQL:Tham số thread_stack của máy chủ MySQL - nó là gì? nó có thể to đến cỡ nào?

Chủ đề chồng tràn ngập: 68.744 byte sử dụng của một chồng 196.608 byte, và 128.000 byte cần thiết. Sử dụng 'mysqld -O thread_stack = #' để chỉ định một ngăn xếp lớn hơn.

Tất cả các tài liệu mà tôi thấy nói rằng:

Mặc định là 64KB trước MySQL 4.0.10 và 192KB sau đó. Nếu kích thước ngăn xếp luồng quá nhỏ, nó giới hạn độ phức tạp của các câu lệnh SQL mà máy chủ có thể xử lý, độ sâu đệ quy của các thủ tục lưu sẵn và các hành động tiêu thụ bộ nhớ khác.

Tôi đặt biến thread_stack thành 256K, nhưng nó chỉ là một giá trị ngẫu nhiên. Bây giờ nó đã giải quyết được vấn đề, nhưng tôi thực sự muốn biết nó nên lớn thế nào, nhận được một số giá trị ví dụ, hoặc tập quán. Ví dụ:

  • Tôi có thể làm gì và không thể làm gì với ngăn xếp chuỗi 96KB (x KB)?
  • Cách tính toán số lượng ngăn xếp luồng lớn mà tôi cần?
+0

bạn đang làm gì khiến nó? Bạn có bất kỳ tham gia LARGE, hoặc procs đệ quy được lưu trữ? – oedo

+0

Procs được lưu trữ đệ quy là lý do tôi nghĩ. Tôi cũng đã tham gia vào các bảng lớn (500 triệu bản ghi), nhưng thường đầu tiên tôi chỉ cắt nhỏ tập con của bảng và sau đó tham gia nó với thứ hai, đó là tương đối nhỏ. Tôi không bao giờ tham gia vào hai bảng với hàng triệu bản ghi cũng như các kết nối tạo ra hàng triệu bản ghi. Nhưng thread_stack có tác động gì trên các kết nối? – ssobczak

+0

@ssobczak, bất kỳ khách hàng tiềm năng nào về cách thread_stack có tác động đến các kết nối? –

Trả lời

10

Vừa mới gặp lỗi tương tự. Các MySQL documentation về biến cung cấp một gợi ý cho các giá trị mặc định mà nên là đủ (192K cho hệ thống 32 bit và 256K cho hệ thống 64 bit), cũng như để xem MySQL Benchmark suite.

Các vấn đề liên quan