Lợi thế của nhóm luồng trong MySQL / MariaDB là gì?


8

Nhóm chủ đề MariaDB Nhóm chủ đề
MySQL
Tôi đã đọc tài liệu chính thức của nhóm chủ đề MySQL / MariaDB, nhưng tôi vẫn bối rối về nó; Theo tôi hiểu, nhóm luồng có hai ưu điểm:
1. giới hạn quá nhiều kết nối, quá nhiều kết nối có thể dẫn đến quá nhiều chuyển đổi ngữ cảnh, nhưng dường như tùy chọn "
--max-results " cũng có thể giới hạn kết nối ~ 2. sử dụng luồng cũ được kết nối : khi có kết nối mới, luồng cũ không được sử dụng có thể được sử dụng lại, nhưng có vẻ như tùy chọn "--thread_cache_size" cũng có thể sử dụng lại luồng cũ

Vì vậy, những lợi thế của nhóm chủ đề là gì?

Câu trả lời:


7

Ưu điểm chính của nhóm luồng là nó thường giới hạn số lượng hoạt động đang chạy ở giá trị thread_pool_sizethường được đặt thành số lượng CPU trên máy chủ hoặc số lượng MySQL sẽ sử dụng. Nó ngăn chặn các vấn đề chuyển đổi và tranh chấp bối cảnh với các cấu trúc nội bộ khác. Nó đặc biệt hữu ích khi có nhiều truy vấn để chạy hơn so với các CPU có sẵn.

Giới hạn kết nối với max-connectionssẽ giới hạn số lượng truy vấn đang chạy bằng cách giới hạn số lượng kết nối nhưng mọi kết nối vượt quá giới hạn đó đều bị từ chối với một lỗi. Khi sử dụng nhóm luồng, nhiều kết nối được phép hơn nhưng các truy vấn được xếp theo nhóm luồng. Một điều khác cần xem xét là các kết nối không phải lúc nào cũng chạy truy vấn nên việc giới hạn kết nối không giới hạn hiệu quả các truy vấn đang chạy.

Đối với vấn đề về bộ đệm của luồng, nó có ích khi sử dụng luồng trên mỗi kết nối nhưng nhóm luồng thực hiện công việc của riêng nó với việc sử dụng lại các luồng.

max-connections vẫn có thể được sử dụng để giới hạn các kết nối nhưng như một biện pháp bảo vệ có giá trị tương đương 10000 chứ không phải là giới hạn cho số lượng công việc cho máy chủ.

Ví dụ: nếu bạn có 100 máy khách muốn chạy các truy vấn với giới hạn 10 truy vấn mong muốn chạy đồng thời, đặt giới hạn kết nối thành 10 sẽ chỉ cho phép 10 máy khách kết nối với các máy khách khác bị từ chối do lỗi. Sẽ có tối đa 10 truy vấn chạy cùng một lúc nhưng có khả năng trung bình sẽ có ít hơn 10 truy vấn chạy cùng một lúc. Không giới hạn các kết nối, nếu tất cả 100 khách hàng muốn chạy truy vấn cùng một lúc, sẽ có 100 luồng thực thi cùng lúc có thể gây ra sự cố tranh chấp dẫn đến thông lượng ít hơn so với 10 kết nối.

Nếu bạn sử dụng kích thước nhóm luồng là 10 thay vào đó, tất cả 100 khách hàng sẽ có thể kết nối và chạy các truy vấn của họ. Nếu tất cả các máy khách cố gắng chạy một truy vấn cùng một lúc, nhóm luồng sẽ xếp hàng các truy vấn và thường thực hiện song song 10 có thể có thông lượng cao hơn 100 truy vấn đồng thời trong ví dụ trước.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.