thắc mắc Làm thế nào để insert nửa Terabyte dữ liệu

Asugoi

Junior Member
Các bác ơi, cho em hỏi làm cách nào để insert cỡ 500GB dữ liệu vào DB không ạ =((.Dữ liệu thì không được chuẩn bị trước, cũng như việc máy tính không đủ bộ nhớ để chứa 🥲
Em có thử viết một đoạn code để insert cho đến khi nào size của db đấy đạt được như kỳ vọng nhưng thấy no hope quá
 
Các bác ơi, cho em hỏi làm cách nào để insert cỡ 500GB dữ liệu vào DB không ạ =((.Dữ liệu thì không được chuẩn bị trước, cũng như việc máy tính không đủ bộ nhớ để chứa 🥲
Em có thử viết một đoạn code để insert cho đến khi nào size của db đấy đạt được như kỳ vọng nhưng thấy no hope quá
Vấn đề là 500GB đó đang ở đâu, DB gì nhỉ?
 
Vấn đề là 500GB đó đang ở đâu, DB gì nhỉ?
Em dùng postgres ạ. Cũng không có sẵn 500GB dữ liệu luôn anh. Nên e đang bí ở cả việc làm thế nào để sinh ra 500gb và nếu sinh được thì insert kiểu gì :(((
 
Em dùng postgres ạ. Cũng không có sẵn 500GB dữ liệu luôn anh. Nên e đang bí ở cả việc làm thế nào để sinh ra 500gb và nếu sinh được thì insert kiểu gì :(((
Vậy là tạo dummy data để test à bạn? Nếu vậy thì mình cũng đã từng làm nhưng mình làm cách đơn giản nhất là viết script gen ra câu INSERT rồi chạy thôi :smile:
 
Vậy là tạo dummy data để test à bạn? Nếu vậy thì mình cũng đã từng làm nhưng mình làm cách đơn giản nhất là viết script gen ra câu INSERT rồi chạy thôi :smile:

Cứ chạy cho đến khi nào đủ size thì thôi à anh ?
 
Lúc insert thì chọn append nữa fence nhé (thuật ngữ bên Oracle, không rõ bên Postgres như thế nào). Đại khái là insert thẳng mà không cần quan tâm đến các block trống và một ưu điểm nữa là ít ghi lại redo log khiến tốc độ insert tăng lên rất nhanh:sure:
 
Lúc insert thì chọn append nữa fence nhé (thuật ngữ bên Oracle, không rõ bên Postgres như thế nào). Đại khái là insert thẳng mà không cần quan tâm đến các block trống và một ưu điểm nữa là ít ghi lại redo log khiến tốc độ insert tăng lên rất nhanh:sure:
Thank bạn nhé kk.
 
bác hỏi đọc nghe khó hiểu quá, nếu bác cần dung lượng thì cứ đặt loop chạy insert vô thôi nhớ insert max length của các fileds luôn cho nhanh đủ size
 
Insert trực tiếp thì lâu lắm, tạo một bảng với số lượng cột nhiều vào, insert khoảng chừng 1000 rows.

Sau đó, clone 1 bảng giống i xì thế rồi dùng lệnh:

INSERT INTO table2
SELECT * FROM table1
WHERE condition;


thi thoảng đảo lại bảng 1 cái để 2 bảng to bằng nhau rồi insert tiếp :LOL:
 
Insert trực tiếp thì lâu lắm, tạo một bảng với số lượng cột nhiều vào, insert khoảng chừng 1000 rows.

Sau đó, clone 1 bảng giống i xì thế rồi dùng lệnh:

INSERT INTO table2
SELECT * FROM table1
WHERE condition;


thi thoảng đảo lại bảng 1 cái để 2 bảng to bằng nhau rồi insert tiếp :LOL:
Em thì viết scrip insert, dùng lệnh COPY để insert 100000 record cùng lúc mà vẫn chậm rì luôn, 1p được có 300mb. Nên e có tạo procedure insert thì thấy nhanh hơn 1p đc tầm 2gb
 
thím muốn nhanh nhưng có giới hạn gì không, chỉ đơn thuần là thao tác ghi và không có gì tác động thì chơi hết hiệu năng của server lun thím, mở gần như tối đa luồng luôn.
cho batch chạy rùi đi ún cà phê thui. nhưng mà 1/2 tera cũng căng quá.
em chưa thử nhưng cũng mong gặp thêm những solution khác để giải quyết bài này.
 
Back
Top