Alter table bảng lớn mà không bị treo DB như thế nào?

Việc thay đổi cấu trúc bảng trong production là công việc thường xuyên, nhưng khi CSDL chúng ta lớn và rất lớn thì việc thay đổi nhỏ cũng có thể làm treo toàn bộ DB vì phải xử lý 1 lượng lớn dữ liệu.

Giả sử chúng ta đang có bảng với 500tr records

alter table duong.table11 add salary number default 1000;

— để thực hiện lệnh này thì DB sẽ tiến hành lock bảng lại và sau đó thực hiện lệnh cho đến hết => sẽ rất lâu vì lượng dữ liệu lớn và phải set toàn bộ default cho col mới.

Giải pháp: Chia ra từng step để thực hiện riêng biệt

Step 1: add col thôi:

alter table duong.table11 add salary number;

Step 2: modify col đó cho giá trị default vào

alter table hr.employees modify salary default 1000;

Oracle sẽ tiến hành làm dần dần và đảm bảo không lock.

 

Datalinks.vn

Hello các bạn, mình là Dương Nguyễn tác giả của blog này. Với gần 20 năm làm việc trong lĩnh vực CNTT, VT trong và ngoài nước, mong muốn được chia sẻ kiến thức và kinh nghiệm về database với các bạn đam mê và quan tâm đến lĩnh vực này. Đặc biệt là #OracleDatabase hoặc luyện thi #OCP database admin. Warren Buffett từng nói "Muốn đi nhanh hãy đi một mình, muốn đi xa hãy đi cùng nhau". Các bạn cần người đồng hành thì alo tôi nhé. Call/Zalo: 0765 871 888. Thanks you !.....
0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest

0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận