2012-01-06 39 views
7

Khi thêm cột vào bảng MyISAM, MySQL sẽ Tạo> Sao chép> Thả> Đổi tên. Tôi có một bảng đủ lớn mà nó không thể được nhân đôi trong không gian trống còn lại của máy chủ. Cố gắng thêm một cột sau đó kết quả trong việc điền đĩa. Thời gian không phải là một vấn đề ở đây, không phải là bảng sẵn có, chỉ cần không gian đĩa.MySQL ALTER BẢNG trên các bảng quá lớn để nhân bản

Ngắn sao chép dữ liệu sang máy chủ khác, cắt xén, thay đổi và sao chép lại, có cách thêm cột vào bảng MyISAM mà không cần tạo bảng tạm thời và sao chép tất cả dữ liệu không?

Trả lời

3

Bạn có thể tạo bảng trống mới, di chuyển dữ liệu theo khối (INSERT thành mới, XÓA từ một số hàng nhất định), thả bảng cũ và đổi tên bảng mới. Về cơ bản những gì MySQL làm, nhưng di chuyển dữ liệu thay vì sao chép nó, mà sẽ cho phép bạn sử dụng ít không gian hơn.

+0

Tôi sợ điều này, nhưng hy vọng sẽ có một cách tiếp cận ít thủ công hơn. Nó có thể là những gì tôi sẽ làm. – Umbrella

+1

Cuối cùng, phương pháp này không thành công, làm đầy đĩa mặc dù kích thước slice của tôi. MySQL không giải phóng đĩa khỏi các hàng đã xóa. Đang chạy OPTIMIZE để yêu cầu MySQL giải phóng đĩa chứa đầy đĩa. – Umbrella

+0

Tôi đoán nó sẽ làm việc tốt hơn với InnoDB, vì bảng mới sẽ sử dụng lại các trang miễn phí trong tệp idb. Tôi sợ tôi không có ý tưởng nào khác, xin lỗi. –

1

Nói chung, tôi cố gắng giữ đủ không gian trống để có thể xây dựng lại bảng lớn nhất của mình. Điều này cho phép tôi chạy OPTIMIZE TABLE hoặc ALTER TABLE khi cần thiết.

Bạn có đĩa nào khác được gắn trên máy chủ của mình không?

Khi không gian quá hẹp để xây dựng lại một bảng nhất định, cách giải quyết ưa thích của tôi là tạm thời di chuyển một số (các) bảng khác sang một ổ đĩa riêng biệt. Tôi làm điều này bằng cách dừng MySQL, di chuyển các tệp dữ liệu có liên quan (MYD và MYI, hoặc ibd), và sau đó tạo một liên kết tượng trưng tại vị trí ban đầu trỏ vào vị trí mới và bắt đầu MySQL. Khi việc xây dựng lại bảng được thực hiện, tôi đảo ngược quá trình đó để di chuyển các bảng khác trở lại vị trí ban đầu của chúng.

+1

Rất tiếc, không có bộ nhớ bổ sung nào được đính kèm với máy chủ lưu trữ này. – Umbrella

Các vấn đề liên quan