Tôi phải ghi vào cơ sở dữ liệu MySQL rất nhiều dữ liệu trong khoảng 5 lần mỗi giây. Cách nhanh nhất: chèn mỗi 1/5 giây hoặc tạo hàng đợi và chèn tất cả dữ liệu được lưu trữ sau mỗi 5 giây? Nếu cách thứ hai là tốt hơn - là nó có thể chèn vào 1 bảng bằng cách sử dụng 1 yêu cầu một vài hàng?Chèn vào cơ sở dữ liệu
Trả lời
Xét tần số của chèn của nó tốt hơn để đi với phương pháp thứ hai xếp hàng và hơn là thêm một lần.!
Nhưng Bạn nên cân nhắc các kịch bản đầu tiên:
là hệ thống của bạn thời gian thực.? Sau đó, độ trễ tối đa mà bạn có thể đủ khả năng (Vì nó sẽ mất ~ 5 giây để chèn tiếp theo và dữ liệu được duy trì/có sẵn)?
Cơ hội của các giá trị/lỗi không chính xác có trong dữ liệu, như thể một dữ liệu không chính xác, bạn sẽ mất tất cả nếu truy vấn bị lỗi.
Sử dụng nhiều vùng đệm với innodb_buffer_pool_instances
. nó có thể phụ thuộc vào số lõi trên máy. Sử dụng Partitioning
bảng.
Bạn có thể chèn dữ liệu chung bằng cách sử dụng XML
.
Bạn có thể thực hiện một chèn với tất cả các dữ liệu witho một cái gì đó như thế này:
INSERT INTO table (field1, field2,... , fieldN)
VALUES
(value1_1', value1_2,... , value1_N),
(value2_1', value2_2,... , value2_N),
...
(valueM_1', valueM_2,... , valueM_N);
Khi mỗi giao dịch đi kèm với một chi phí cố định, tôi muốn nói rằng làm một nhiều dòng chèn mỗi vài giây là tốt hơn . Với một số hệ thống chúng tôi sử dụng tại nơi làm việc, chúng tôi lưu trữ hàng trăm dòng trước khi chèn tất cả chúng vào một lần.
Từ MySQL documentation bạn có thể làm một dòng đa chèn như sau:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
Kinh nghiệm của tôi là khi chèn dữ liệu vào một cơ sở dữ liệu MySQL nó là nhanh hơn để làm việc với lô.
Vì vậy, các tùy chọn chậm đang thực hiện nhiều truy vấn chèn:
INSERT INTO my_table VALUES (1, "a"); INSERT INTO my_table VALUES (2, "b");
Các tùy chọn nhanh sẽ là:
INSERT INTO my_table VALUES (1, "a"), (2, "b");
- 1. Chèn rất nhiều dữ liệu vào cơ sở dữ liệu trong các chèn rất nhỏ
- 2. CodeIgniter Cơ sở dữ liệu Chèn Không
- 3. Chèn hình ảnh vào cơ sở dữ liệu
- 4. Chèn blob vào cơ sở dữ liệu oracle với C#
- 5. Python chèn mảng numpy vào cơ sở dữ liệu sqlite3
- 6. Chèn ngày/giờ vào cơ sở dữ liệu Access
- 7. Làm cách nào để chèn bản ghi từ cơ sở dữ liệu mongo này vào cơ sở dữ liệu khác?
- 8. Chèn dữ liệu vào một bảng trong cơ sở dữ liệu Wordpress bằng Wordpress $ wpdb
- 9. cách sử dụng phpexcel để đọc dữ liệu và chèn vào cơ sở dữ liệu?
- 10. Làm thế nào để chèn dữ liệu mẫu vào bảng cơ sở dữ liệu MySQL
- 11. Sự cố Chèn dữ liệu vào cơ sở dữ liệu MS Access bằng ADO qua Python
- 12. Làm thế nào để chèn dữ liệu vào cơ sở dữ liệu SQLite trong android?
- 13. LINQ Truy vấn để chèn dữ liệu vào cơ sở dữ liệu
- 14. Cách chèn dữ liệu vào OpenTSDB (Cơ sở dữ liệu chuỗi thời gian)
- 15. Chuyển dữ liệu từ cơ sở dữ liệu này sang cơ sở dữ liệu khác
- 16. Cơ sở dữ liệu SQLite của Android: chèn chậm
- 17. Kết hợp nhiều cơ sở dữ liệu vào một cơ sở dữ liệu đơn
- 18. Chèn mảng trong cơ sở dữ liệu SQLite trong android
- 19. Điền vào cơ sở dữ liệu Android Từ tệp CSV?
- 20. sqlite3 chèn và đọc dữ liệu BLOB trong cơ sở dữ liệu
- 21. Sao chép bảng từ một cơ sở dữ liệu sang một cơ sở dữ liệu khác
- 22. Một cơ sở dữ liệu và nhiều cơ sở dữ liệu
- 23. Chèn vào nhiều bảng cơ sở dữ liệu bằng cách sử dụng LINQ, ASP.NET MVC
- 24. Ký tự Unicode trở thành dấu chấm hỏi sau khi chèn vào cơ sở dữ liệu
- 25. Rails 3: Cách chèn Bản ghi vào Cơ sở dữ liệu bằng Rails
- 26. Làm cách nào để chèn giá trị datetime vào cơ sở dữ liệu SQLite?
- 27. Chèn dấu thời gian vào cơ sở dữ liệu qua ContentValues
- 28. Cách chèn NULL vào cơ sở dữ liệu nếu trường biểu mẫu trống
- 29. Làm cách nào để chèn các ký tự đặc biệt vào cơ sở dữ liệu?
- 30. Sự cố khi chèn chuỗi hoặc NULL vào cơ sở dữ liệu SQL Server
Vâng, hệ thống là thời gian thực. Dữ liệu là một base64 đơn giản với ~ 100 byte dữ liệu. – Ockonal
Nếu vậy tôi sẽ đi với chèn đơn, và với kết nối Pooling tại lớp DAO. Bởi vì bạn không thể đủ khả năng để mất dữ liệu trong RTS cũng như thời gian cũng rất quan trọng.! Hy vọng điều này đã giúp bạn. :) –
Cảm ơn sự giúp đỡ;) – Ockonal