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, tôi là Dương Nguyễn (DuoDBA), là người đang tập tành viết lách trên blog này. Mong muốn được chia sẻ kiến thức và kinh nghiệm về cơ sở dữ liệu với những người đam mê và quan tâm đến lĩnh vực này. #Tôi có tổ chức các khoá Coaching về #OracleDatabase và luyện thi #OCP thường xuyên, 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