Truy vấn nhỏ trả về, truy vấn lớn bị treo hoặc rơi, và phản xạ đầu tiên là có gì đó sai với kích thước gói. Phản xạ đó thường đúng và gần như luôn nhắm vào lớp sai. Ba cài đặt chia sẻ từ gói và đo ba thứ không liên quan: cách đóng gói vận chuyển của trình điều khiển cơ sở dữ liệu, giới hạn thông điệp của máy chủ cơ sở dữ liệu và đơn vị truyền tối đa của đường IP. Chỉnh một cái để sửa triệu chứng do cái khác gây ra là cách một vấn đề năm phút thành một tuần tinh chỉnh. Thứ tự dưới đây là thứ tự tốn ít thời gian nhất của tôi.

Ba lớp, một từ chung

Mỗi hàng dưới đây là một đơn vị khác với chủ sở hữu khác, và không thể suy ra đơn vị nào từ những đơn vị còn lại. Một thông điệp cơ sở dữ liệu có thể trải dài nhiều phân đoạn TCP và nhiều gói IP, nên tăng kích thước được phép không mở rộng đường, và giảm một cài đặt trình điều khiển không phải cùng thao tác với đổi MTU của một giao diện. Từ này xuất hiện trong ba tệp cấu hình khác nhau, vì vậy tìm nó trả về ba câu trả lời không liên quan. Đọc văn bản lỗi trước, rồi quyết định mở tệp nào.

Setting or observationUnit it describes
SQL Server client network packet settingThe provider's transport packaging for that connection
MySQL communication packet limitA database message, such as one statement, row or replication event
IP path MTUThe largest IP packet the path carries without fragmentation handling

Ghi ra thao tác thất bại thuộc lớp nào trước khi mở tệp cấu hình. Văn bản lỗi thường nói điều đó, và chính phần đó là phần mọi người bỏ qua.

Xác định nhà cung cấp trước khi đổi cài đặt của nó

Với SQL Server, ghi lại ứng dụng, tên trình điều khiển hoặc nhà cung cấp, phiên bản và cấu hình kết nối hiệu lực. Một script chẩn đoán và một ứng dụng máy tính để bàn có thể đến cùng máy chủ qua các nhà cung cấp khác nhau, nên một cài đặt giúp cái này không chứng minh gì về cái kia. Giá trị mặc định của các nhà cung cấp khác nhau, và một trường trong chuỗi kết nối có tên tương tự không phải bằng chứng rằng mọi nhà cung cấp hiểu nó như nhau.

Đừng thay một trình điều khiển được duy trì bằng một bản cũ chỉ vì một giải pháp cũ dùng cú pháp của nó. Tài liệu hiện tại không khuyến khích phát triển mới trên những thành phần cũ đó, và thừa hưởng các hạn chế của chúng là một trao đổi tồi cho một cài đặt.

Việc từ chối thông điệp không phải là tắc nghẽn đường truyền

Trong MySQL 8.4, tài liệu về gói truyền thông mô tả việc một câu lệnh, hàng hoặc sự kiện nhật ký nhị phân quá lớn bị từ chối so với giới hạn áp dụng, và cả giới hạn phía máy khách lẫn máy chủ đều có thể quan trọng. Đó là từ chối ở lớp cơ sở dữ liệu, không phải tuyên bố rằng mạng phải chở một gói IP khổng lồ. Đọc lỗi thực tế và hình dạng của thông điệp có vấn đề: một kết quả lớn gồm nhiều hàng nhỏ là trường hợp khác với một hàng khổng lồ, và chúng thất bại theo cách khác nhau.

Các bản cài MariaDB cần giới hạn và chẩn đoán được ghi trong tài liệu của chính phiên bản đó. Sao chép mặc định của MySQL sang MariaDB là đoán mò với thêm bước.

Bằng chứng về đường truyền thực sự trông thế nào

Một vấn đề kích thước đường có dấu vân tay riêng: lỗi vận chuyển tái lập được và phụ thuộc kích thước trên một tuyến và họ địa chỉ cụ thể, với chi phí phụ của đường hầm tham gia và phản hồi khám phá hành xử như đường cho phép. Chỉ một lần hết thời gian không phân biệt nó với truy vấn chậm, lỗi trình điều khiển hay giới hạn phía máy chủ, và coi hết thời gian là bằng chứng của vấn đề MTU đưa bạn đến lớp sai một cách tự tin.

Nếu bạn kiểm tra đường, hãy giữ cố định đích, tài khoản và khối lượng công việc để biến số duy nhất là kích thước bạn đang dò. Một bài kiểm tra thay đổi ba thứ không cho bạn biết cái nào quan trọng.

Đổi một biến đã ghi trong tài liệu, rồi ghi lại nó

Giữ đích, tài khoản, nhà cung cấp và khối lượng công việc không đổi, ghi giá trị ban đầu, áp dụng một thay đổi được hỗ trợ và ghi kết quả. Một cài đặt nhỏ hơn giúp một bài kiểm tra qua là bằng chứng hữu ích về ngăn xếp đã kiểm tra đó; nó không phải tối ưu phổ quát và không xác lập điều gì gây ra lỗi ban đầu. Đó là những khẳng định khác nhau, và chỉ cái đầu được một thí nghiệm duy nhất ủng hộ.

Giải quyết giới hạn đã xác định ở lớp của chính nó, rồi ghi lại đó là lớp nào. Chính ghi chú đó ngăn người tiếp theo tinh chỉnh trình điều khiển vì đường truyền mới là vấn đề.

Bài viết liên quan