Đầu tiên, kiểm tra của bạn không hợp lệ, vì việc tăng tốc độ khóa cấp hàng với khóa cấp bảng đến khi bạn có đồng thời! Chỉ với 1 sợi chèn, bạn có 1 khóa/mở khóa cho mỗi lần chèn trong cả hai trường hợp, và chèn không chờ đợi các khóa cấp bảng được phát hành.
Giây, như được nêu trong JIStone, khóa chính không tuần tự là sát thủ hiệu suất cho chèn, khi kích thước bảng lớn hơn vùng đệm.
Thứ ba, kích thước vùng đệm là một trong những cài đặt quan trọng nhất trong InnoDB. Làm cho nó như lare càng tốt (đề nghị thiết lập là 80% ot RAM có sẵn).
Tiếp theo, như đã nêu trong @wallyk, innodb_flush_log_at_trx_commit có vai trò quan trọng đối với tốc độ hoạt động I/O.
Tiếp theo, innodb_log_file_size và innodb_buffer_file_size rất quan trọng.
Tiếp theo, hãy nhớ rằng vì bạn có 2 chỉ mục duy nhất, trước khi InnoDB có thể chèn hàng, nó phải kiểm tra sự tồn tại của giá trị trong chỉ mục và chỉ mục của bạn lớn.
Nếu không có thông tin chi tiết về bảng và chỉ mục, tôi không thể cung cấp thêm lời khuyên cho bạn, nhưng xin lưu ý rằng không có công cụ lưu trữ nào là thuốc chữa bách bệnh, và mặc dù thường bạn có thể đạt được rất nhiều tốc độ thêm chỉ mục hoặc tinh chỉnh một biến, trong các hệ thống có quy mô lớn, mọi thứ phức tạp hơn điều này. Nhưng, như tôi đã nói, bạn không nên so sánh tốc độ chèn nguyên trong thử nghiệm riêng rẽ, bạn phải thực hiện thử nghiệm của mình gần với ứng dụng thực nhất có thể.
cập nhật: thêm một mũi Trong cả hai MyISAM và InnoDB, đa chèn (insert into .... giá trị (...), (...), (...)) là nhanh hơn. Ngoài ra, trong InnoDB, bạn có thể biến các giao dịch của mình thành giao dịch, vô hiệu hóa việc cập nhật các chỉ mục không độc nhất trước khi giao dịch hoàn thành, và nó cũng nhanh hơn (nhưng không thực hiện các giao dịch lớn, vì điều này thực sự sẽ làm chậm quá trình sử dụng) cách hoạt động của phiên bản hàng).
Bạn có thể chỉ cho chúng tôi các chỉ mục không? Đó là nguyên nhân có thể gây ra thời gian chèn dài nhất. – wallyk
Tôi có 2 chỉ mục, data_id là khóa chính và user_id không phải là duy nhất. Chèn của tôi là ~ 150 hàng với nhau có cùng user_id (trong đó có một chỉ mục). – normalppl
nhưng nội dung của từng chỉ mục là gì? Nếu có một loạt các đốm màu, thì chắc chắn sẽ khó lập chỉ mục. Nhưng nếu chúng là các số nguyên hoặc các loại tầm thường khác, thì sẽ khó hiểu tại sao hiệu suất lại xấu. – wallyk