Hướng dẫn mysql update large number of rows - cập nhật mysql số lượng lớn hàng
Ngày 30 tháng 1 năm 2021 · 7 phút Đọc Show
Giới thiệuThành lập Các vấn đề với một bản cập nhật lớn duy nhất
đọc thêm Thành lậpCác vấn đề với một bản cập nhật lớn duy nhất
Khi cập nhật một số lượng lớn các bản ghi trong cơ sở dữ liệu OLTP, chẳng hạn như MySQL, bạn phải lưu tâm đến việc khóa hồ sơ. Nếu các hồ sơ đó bị khóa, chúng sẽ không thể chỉnh sửa (cập nhật hoặc xóa) bởi các giao dịch khác trên cơ sở dữ liệu của bạn. Một cách tiếp cận phổ biến được sử dụng để cập nhật một số lượng lớn hồ sơ là chạy nhiều bản cập nhật nhỏ hơn theo từng lô. Bằng cách này, chỉ các hồ sơ đang được cập nhật tại bất kỳ điểm nào đều bị khóa.
Nếu bạn đang tự hỏi
Làm thế nào để cập nhật hàng triệu hồ sơ mà không ảnh hưởng đáng kể đến trải nghiệm người dùng?
Làm thế nào để bản ghi lệnh khóa cập nhật?
Sau đó, bài viết này là dành cho bạn. Lưu ý rằng đây không phải là cách duy nhất. Có các cách tiếp cận khác như hoán đổi bảng, chạy bản cập nhật tiêu chuẩn tùy thuộc vào mức cách ly giao dịch của bạn, v.v ... Việc sử dụng các phương pháp này phụ thuộc vào trường hợp sử dụng của bạn. Đối với trường hợp sử dụng của chúng tôi, hãy để giả sử chúng tôi đang cập nhật bảng người dùng, nếu bị khóa trong một khoảng thời gian đáng kể (giả sử> 10s), có thể ảnh hưởng đáng kể đến trải nghiệm người dùng của chúng tôi và không lý tưởng.
Các vấn đề với một bản cập nhật lớn duy nhấtCập nhật theo đợt Sự kết luận đọc thêm
Khi cập nhật một số lượng lớn các bản ghi trong cơ sở dữ liệu OLTP, chẳng hạn như MySQL, bạn phải lưu tâm đến việc khóa hồ sơ. Nếu các hồ sơ đó bị khóa, chúng sẽ không thể chỉnh sửa (cập nhật hoặc xóa) bởi các giao dịch khác trên cơ sở dữ liệu của bạn. Một cách tiếp cận phổ biến được sử dụng để cập nhật một số lượng lớn hồ sơ là chạy nhiều bản cập nhật nhỏ hơn theo từng lô. Bằng cách này, chỉ các hồ sơ đang được cập nhật tại bất kỳ điểm nào đều bị khóa.
Nếu bạn đang tự hỏi Làm thế nào để cập nhật hàng triệu hồ sơ mà không ảnh hưởng đáng kể đến trải nghiệm người dùng?
Làm thế nào để bản ghi lệnh khóa cập nhật? Cập nhật theo đợtSự kết luận đọc thêm Khi cập nhật một số lượng lớn các bản ghi trong cơ sở dữ liệu OLTP, chẳng hạn như MySQL, bạn phải lưu tâm đến việc khóa hồ sơ. Nếu các hồ sơ đó bị khóa, chúng sẽ không thể chỉnh sửa (cập nhật hoặc xóa) bởi các giao dịch khác trên cơ sở dữ liệu của bạn. Một cách tiếp cận phổ biến được sử dụng để cập nhật một số lượng lớn hồ sơ là chạy nhiều bản cập nhật nhỏ hơn theo từng lô. Bằng cách này, chỉ các hồ sơ đang được cập nhật tại bất kỳ điểm nào đều bị khóa. Nếu bạn đang tự hỏi
Làm thế nào để cập nhật hàng triệu hồ sơ mà không ảnh hưởng đáng kể đến trải nghiệm người dùng? Làm thế nào để bản ghi lệnh khóa cập nhật?
1Bản cập nhật này thực hiện nhanh chóng. Mặc dù bản cập nhật lớn mất nhiều thời gian hơn vì chúng tôi đang thực hiện theo các đợt, chúng tôi có thể thấy cách tiếp cận này cho phép các giao dịch khác chỉnh sửa dữ liệu. Sự kết luậnBạn có thể phá bỏ các thùng chứa Docker của bạn bằng các lệnh sau. 2Tóm lại, chúng tôi đã thấy
Một điểm quan trọng cần lưu ý ở đây là thứ tự cập nhật. Khi chạy các bản cập nhật hàng loạt và cập nhật đơn trên cùng một cột của bản ghi, bản ghi mới nhất sẽ được áp dụng. Bạn cũng có thể thực hiện các bản cập nhật được ghép đôi này song song, nhưng bạn phải cẩn thận không gặp bất kỳ bế tắc nào. Nếu logic cập nhật phức tạp hơn và bảng của bạn có chỉ mục bạn, có thể sử dụng 1 với các tính năng 2 hoặc 3 như được hiển thị ở đây.Lần tới khi bạn thực hiện một bản cập nhật lớn trên bảng, hãy xem xét chạy các bản cập nhật trong các phần để giữ cho các giao dịch khác không bị ảnh hưởng bởi các lỗi thời gian chờ khóa. đọc thêm
References:
Làm cách nào để cập nhật MySQL nhanh hơn?Một cách khác để nhận được cập nhật nhanh là trì hoãn các bản cập nhật và sau đó thực hiện nhiều cập nhật liên tiếp sau đó.Thực hiện nhiều bản cập nhật cùng nhau nhanh hơn nhiều so với thực hiện một lần nếu bạn khóa bảng.Đối với một bảng Myisam sử dụng định dạng hàng động, việc cập nhật một hàng lên tổng chiều dài dài hơn có thể phân chia hàng.delay updates and then do many updates in a row later. Performing multiple updates together is much quicker than doing one at a time if you lock the table. For a MyISAM table that uses dynamic row format, updating a row to a longer total length may split the row.
Giới hạn có hoạt động khi cập nhật MySQL không?Có, có thể sử dụng truy vấn cập nhật với giới hạn trong MySQL..
Cập nhật trong SQL Cập nhật nhiều hàng?Đầu tiên, chỉ định tên bảng mà bạn muốn thay đổi dữ liệu trong mệnh đề cập nhật.Thứ hai, gán một giá trị mới cho cột mà bạn muốn cập nhật.Trong trường hợp bạn muốn cập nhật dữ liệu trong nhiều cột, mỗi cặp cột = giá trị được phân tách bằng dấu phẩy (,). Thứ ba, chỉ định các hàng bạn muốn cập nhật trong mệnh đề WHERE.In case you want to update data in multiple columns, each column = value pair is separated by a comma (,). Third, specify which rows you want to update in the WHERE clause.
Chúng ta có thể cập nhật nhiều hàng trong một câu lệnh cập nhật không?Chúng ta có thể cập nhật nhiều hàng của bảng bằng lệnh cập nhật đơn.. |