Chỉ cần xem bản cập nhật, bảng 60 col với các trường chủ yếu là VARCHAR (2k) - nghĩa là (có khả năng) là một bảng quái vật.
Điều đầu tiên trước tiên ...
Bạn phải hiểu nút cổ chai của bạn ĐẦU TIÊN. Về phía ứng dụng, hãy quay trở lại giải pháp chèn hàng loạt một luồng (1/2 / 3k một lần) và bắt đầu chạy nó và đăng nhập vào máy DB và chạy 'top' - xem bao nhiêu thời gian quá trình DB đang mất VÀ bao nhiêu (nếu có) wa% thời gian máy đang hiển thị.
Nếu top hiển thị cho bạn BẤT K wa% thời gian, điều đó có nghĩa là DB của bạn bị ràng buộc I / O và bạn có thể cần phải xem xét nhiều máy DB (phân đoạn) hoặc xem xét việc ném SSD vào máy chủ.
Đó là nó; nghiên cứu của bạn dừng ở đây. Không quan trọng DB chiếm bao nhiêu CPU hay ứng dụng khách ứng dụng của bạn đã bão hòa như thế nào; nếu bạn đang gặp phải các vấn đề về độ trễ I / O trên máy chủ DB, thì nó sẽ nhanh như nó sẽ giúp bạn.
MIPO Nếu không có vấn đề về phần cứng, tùy thuộc vào hệ thống tệp bạn đang chạy (Linux), bạn có thể thử tắt ghi nhật ký hoặc ghi siêu dữ liệu cho DB để cải thiện hiệu suất một chút ở cấp hệ thống tệp. Bạn có thể làm một cái gì đó tương tự trên NTFS, nhưng điều này sẽ chỉ giúp bạn tăng thêm một chút. Điều này sẽ không được gấp đôi.
Bây giờ, điều thứ hai thứ hai ...
Giả sử bạn đã ở bên cạnh không có% thời gian nhưng CPU của bạn được chốt hoàn toàn bởi quy trình DB. Tùy chọn duy nhất của bạn bây giờ là giới thiệu nhiều máy DB (phân đoạn) và phân chia công việc.
Một lần nữa, bạn đã thực hiện với nghiên cứu của mình nếu đây là trường hợp. Không có gì bạn có thể làm để điều chỉnh CPU để đi nhanh hơn.
Cuối cùng, điều thứ ba ... thứ ba ...
Giả sử DB không làm gì nhiều. Sau đó, đi đến máy khách đang chạy chèn hàng loạt và kiểm tra tải CPU - nó có bị khóa không? Nếu vậy, kích hoạt thêm một số máy thực hiện cùng một đợt chèn chính xác và xem liệu bạn có thể có được một đoạn đường thẳng hay không.
Nếu CPU không được chốt, hãy khởi động thêm một số luồng trên cùng một máy cho đến khi nó được chốt và xem DB quy mô như thế nào.
Tôi nghĩ rằng bạn có thể đã thử điều đó, vì vậy tôi đoán là máy chủ khách của bạn đã được chốt (và nhiều luồng sẽ không tạo ra sự khác biệt) hoặc DB đã đạt đến giới hạn của nó và không thể mở rộng thêm nữa.
Phụ lục
Thực hiện chèn thô trên một bảng chưa được xử lý mà không có rác trong đó về cơ bản là một thao tác APPEND sẽ diễn ra nhanh như đĩa có thể xử lý việc ghi.
Tạo thêm các bảng trên cùng một máy chủ sẽ không có ích, nếu có bất cứ điều gì nó sẽ tăng tìm kiếm đĩa của bạn (để đến các bảng khác trên đĩa để nối thêm) và sẽ làm mọi thứ chậm lại.
Điều quan trọng là phải tìm ra nút cổ chai đó trước, sau đó chúng ta có thể tối ưu hóa địa ngục khỏi nó.
Mong rằng sẽ giúp! Giữ cho chúng tôi được đăng.