Tôi có một quy trình song song với khoảng 64 trẻ em mà mỗi người cần chèn dữ liệu vào bảng đích. Tôi hiện đang sử dụng một công cụ MyISAM MySQL và tôi tắt các khóa trước và sau khi chèn.Cách nhanh hơn để đồng thời chèn dữ liệu vào MySQL
Tuy nhiên, điều này có vẻ là một nút cổ chai lớn trong quá trình của tôi. Tôi tin rằng MySQL là bảng khóa cho mỗi chèn và vì vậy các quá trình liên tục chờ đợi để viết.
Chèn là độc lập và không có nguy cơ chèn xung đột. Điều này cũng không cần giao dịch hoặc bất cứ điều gì về bản chất đó.
Có một công cụ khác hoặc cách cải thiện hiệu suất chèn/ghi của MySQL không?
Tôi đã nghĩ về instantiating một bảng cho mỗi quá trình, nhưng điều này sẽ làm cho đoạn code phức tạp hơn, và đó không phải là phong cách của tôi thực sự ....
Bất kỳ lời đề nghị sẽ được đánh giá rất nhiều.
Cảm ơn!
vâng, tôi đã nghĩ về điều này, nhưng mối quan tâm của tôi là máy xử lý và máy chủ là cùng một máy. Khi sử dụng Insert Delayed, MySQL sẽ giữ dữ liệu ở đâu? RAM, SWAP, đĩa? Tôi chạy khá gần với giới hạn RAM đã có với các trẻ em đang xử lý ... CẢM ƠN! – user1459544
@ user1459544: "* Các hàng xếp hàng chỉ được giữ trong bộ nhớ cho đến khi chúng được chèn vào bảng. *" - tất nhiên, O/S sẽ chuyển sang bộ nhớ ảo theo yêu cầu - nhưng nếu bạn thấp RAM, nó có lẽ đáng để đầu tư vào một số chi tiết nữa. – eggyal
Tôi nghĩ rằng tại 256GB máy này được khai thác, nhưng cho phép cho nó một đi và tôi sẽ cho bạn biết làm thế nào nó quay ra. Có lẽ nếu nó có thể vào DB nhanh hơn, con tôi sẽ giải phóng tài nguyên RAM của họ nhanh hơn và tốt hơn cho tất cả mọi người. – user1459544