Tôi là một nhà phát triển PHP vì vậy đừng nghiêm khắc. Tôi có một bảng lớn ~ bãi chứa 5,5gb. Thủ tướng của chúng tôi đã quyết định tạo cột mới trong đó để thực hiện tính năng mới. Bảng là InnoDB vì vậy những gì tôi đã thử:
Thay đổi bảng trong màn hình với khóa bảng. Mất ~ 30 giờ và không có gì. Vì vậy, tôi chỉ dừng lại nó. Đầu tiên tôi đã phạm sai lầm vì tôi đã không kết thúc tất cả các giao dịch nhưng lần thứ hai không phải là đa cấp. Tình trạng đã
copy to tmp table
.Vì tôi cũng cần áp dụng phân vùng cho bảng này, chúng tôi quyết định tạo kết xuất, đổi tên và tạo bảng có cùng tên và cấu trúc mới. Nhưng dump đang tạo ra một bản sao nghiêm ngặt (ít nhất là tôi đã không tìm thấy thứ gì khác). Vì vậy, tôi đã thêm để kết xuất một cột mới với
sed
và truy vấn nó. Nhưng một số lỗi lạ bắt đầu. Tôi tin rằng nó được gây ra bởi bộ ký tự. Bảng trong utf-8 và tệp đã trở thành us-ascii sau đósed
. Vì vậy, tôi đã gặp lỗi (lệnh không xác định '\' ') trên 30% dữ liệu. Vì vậy, đây cũng là một cách xấu.
Các tùy chọn khác để thực hiện điều này và tăng tốc hiệu suất (tôi có thể thực hiện với tập lệnh php, nhưng sẽ mất nhiều thời gian). Điều gì sẽ được thực hiện INSERT SELECT
trong trường hợp này.
Cảm ơn cho bất kỳ sự tiến bộ.
SET NAMES utf8
vàCOLLATION
. Nhưng meh idk tại sao 30% dữ liệu bị hỏng sau đósed
. Tôi nghĩ rằng tải số lượng lớn sẽ là nhanh nhất nhưng có lẽ một cái gì đó tồn tại nhiều hơn mà tôi đang thiếu. Cảm ơn Mark