Có $this->db->insert_batch();
chèn với 1 kết nối bảng hay nó chèn mỗi hàng riêng biệt phát sinh chi phí của các kết nối mở?Hiệu suất chèn hàng loạt Codeigniter
Trả lời
Từ các tài liệu mã igniter insert_batch
làm điều này loại điều
$data = array(
array(
'title' => 'My title' ,
'name' => 'My Name' ,
'date' => 'My date'
),
array(
'title' => 'Another title' ,
'name' => 'Another Name' ,
'date' => 'Another date'
)
);
$this->db->insert_batch('mytable', $data);
// Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date'), ('Another title', 'Another name', 'Another date')
Vì vậy, nó sẽ tạo ra chỉ có một truy vấn với tất cả các giá trị, thông thường theo cách này nhanh hơn sau đó làm chèn riêng biệt.
Để trả lời câu hỏi của bạn: Nó sử dụng một kết nối.
Thực tế câu trả lời @RageZ dựa trên tài liệu không phải lúc nào cũng chính xác. Bởi vì nó hoàn toàn dựa trên số lượng các mục bạn muốn chèn. Khi nhìn vào mã code1iter, bạn có thể thấy rằng họ cắt hàng loạt chèn vào 100 mục.
// Batch this baby (Around line number 1077 in codeigniter 2.x)
for ($i = 0, $total = count($this->ar_set); $i < $total; $i = $i + 100)
{
$sql = $this->_insert_batch($this->_protect_identifiers($table, TRUE, NULL, FALSE), $this->ar_keys, array_slice($this->ar_set, $i, 100));
//echo $sql;
$this->query($sql);
}
Nó có nghĩa là giá trị của bạn sẽ được lát đến 100s chèn và nếu bạn bỏ ghi chú phần echo $sql
bạn có thể xem những gì nó trông giống như khi bạn sử dụng chèn hàng loạt cho 101 mặt hàng. Vì vậy, dựa trên sở thích kết nối của bạn, có thể có nhiều hơn một kết nối cần thiết để chèn vào db.
@ Câu trả lời của Ragez có thể đúng khi câu hỏi này được hỏi, tôi nghĩ rằng tôi đang sử dụng CI 1.xx –
@amiawizard Điều đó có thể đúng và cách duy nhất để đảm bảo là xem mã. Như tôi biết họ đã không thay đổi tài liệu của phần này từ 1.x nhưng có thể mã đã thay đổi từ 1.x thành 2.x – sobhan
@amiawizard tôi đã kiểm tra 1.7.1 và 1.7.3 và không có hàm insert_batch nào trong và dường như chức năng này được giới thiệu trong phiên bản 2.x https://github.com/EllisLab/CodeIgniter/blob/develop/user_guide_src/source/changelog.rst – sobhan
- 1. Hiệu suất chèn hàng loạt JDBC
- 2. Hiệu suất thay đổi kích thước hàng loạt của ImageMagick
- 3. hàng loạt JDBC Chèn OutOfMemoryError
- 4. Chèn hoặc cập nhật hàng loạt NHibernate
- 5. Chèn hàng loạt trong SQL Server CE
- 6. Chèn hàng loạt SQL trong .NET
- 7. Codeigniter Chèn nhiều hàng trong SQL
- 8. Hiệu suất rất kém cho chèn hàng loạt với SQL Server CE 4.0 và Entity Framework 4.2
- 9. hiệu suất cao hibernate chèn
- 10. Chèn/cập nhật hàng loạt bằng Mongoid?
- 11. Cách chèn hàng loạt - LINQ to Entities
- 12. Mysql: Chèn hiệu suất INNODB vs MYISAM
- 13. Làm cách nào để thực hiện chèn hoặc cập nhật hàng loạt với SQLAlchemy hiệu quả?
- 14. Psycopg2, Postgresql, Python: Cách nhanh nhất để chèn hàng loạt
- 15. MySQL hàng đếm hiệu suất
- 16. Hiệu suất truy vấn chèn Sql
- 17. Hiệu suất của danh sách (...). Chèn (...)
- 18. về Oracle hiệu suất chèn song song
- 19. Hiệu suất Cassandra cho các hàng dài
- 20. Sql Chèn hàng loạt - File không tồn tại
- 21. Làm cách nào để chèn hàng loạt với SQLite?
- 22. Chèn hàng loạt bằng cách sử dụng Sql groovy?
- 23. Tăng tốc thao tác chèn hàng loạt với NHibernate
- 24. Chèn hàng loạt chậm cho bảng có nhiều chỉ mục
- 25. Chèn hàng loạt song song với SqlBulkCopy và Azure
- 26. JDBC Xử lý ngoại lệ chèn hàng loạt
- 27. Chèn hàng loạt bằng cách sử dụng JPA EntityManager
- 28. Cách thực hiện chèn hàng loạt trong Rails 3
- 29. MySQL Chèn hiệu suất giảm xuống trên một bảng lớn
- 30. Chèn/cập nhật hàng loạt máy chủ Sql so với MERGE trong trường hợp chèn hoặc cập nhật
Kết nối cơ sở dữ liệu phải luôn là một, cho dù hàng loạt hay không. – Usman