Nội dung bài viết
Video học lập trình mỗi ngày
Tuyệt vời connect pool gồm 96 connects nhanh hơn gấp 50 lần so với 1000 or 4000 connections không dùng pool
Connection pool
Sử dụng Connection pool để làm việc dưới ứng dụng thì tôi đã làm rất nhiều, và đương nhiên nói về hiệu suất thì nó được cải thiện rõ ràng, tôi có một video chứng minh điều đó Triển khai CreatePool nhanh 3x lần so với cách thông thường trong Mysql và Nodejs . Nhưng nó nhanh hơn nhiều so với tôi nghĩ.
Nếu bạn chưa hiểu biết về kỹ thuật Connection pool bạn có thể đọc trang này về Pool Size. Ngoài ra tôi cũng xem loạt video của Oracle Real World Performance trong đó họ chứng minh rằng một ứng dụng có nhóm 96 kết nối hoạt động nhanh hơn gần 50 lần so với một ứng dụng có 1000 (hoặc 4000) kết nối. Ngay cả 96 connections cũng rất lớn trừ khi bạn có máy chủ 48 cores.
Về cơ bản, công thức là thế này:
connections = ((core_count * 2) + effective_spindle_count)
Video ở đây
Đó là một quy tắc ngón tay cái thường được sử dụng để xác định số lượng kết nối cơ sở dữ liệu lý tưởng trong một hệ thống. Nó thường được gọi là "2x rules" hoặc "quy tắc ngón tay cái để tổng hợp kết nối".
Đây là một sự cố của công thức:
core_count
: Đề cập đến số lượng lõi CPU có sẵn trên máy chủ lưu trữ ứng dụng của bạn. Nó đại diện cho sức mạnh xử lý của hệ thống.effective_spindle_count
: Thể hiện số lượng trục đĩa hiệu dụng trong hệ thống lưu trữ. Điều này phù hợp khi cơ sở dữ liệu được lưu trữ trên ổ cứng cơ học truyền thống (HDD) thay vì ổ cứng thể rắn (SSD). Mỗi trục chính đại diện cho một đĩa cứng vật lý và nhiều trục quay hơn thường mang lại hiệu suất I/O của đĩa tốt hơn.
effective_spindle_count
là số lượng đĩa lưu trữ. Đối với một máy chủ 4 lõi đơn giản với một đĩa cứng, điều này có nghĩa là 9 nhóm kết nối -- gọi nó là 10 dưới dạng số tròn. Tôi đã tìm thấy điều kỳ diệu khi sử dụng ở đây.
Ngoài ra, tôi còn đọc một thảo luận về pool size ở đây. Có thể bài này bạn không để ý, nhưng tôi thì không thể không để ý.