10/10/2018, 10:38

update/insert/delete toàn bộ record của 1 table mysql (php) ?

Hi,

mình có câu hỏi về php và mysql .

Một số công việc đòi hỏi mình phải tương tác với toàn bộ record của 1 table của Mysql. ví dụ như thực hiện thay đổi toàn bộ các record trong 1 table , hoặc chuyển dữ liệu từ table cũ sang mới , ghép các table ...

Do số lượng các record rất nhiều , lên đến hàng ngàn nên mình không biết phải làm theo cách nào ?

nếu làm while 1 lần thì nổ server mất .
mình nghĩ là thay đổi 1 lần khoảng 1 số nhỏ record và dùng js để thực hiện việc đó liên tục cho đến hết table . Tuy nhiên do chưa có dk nên chưa thực hành được . ko dám chạy thử nghiệm trên db đang sử dụng lỡ hư dữ liệu thì mệt !
hoặc mình nghe nói dùng CronJob gì đó .

Mong bạn nào rành về vấn đề này xin giúp mình . Cám ơn nhiều !
freshgraduate09 viết 12:49 ngày 10/10/2018
Về mặt thao tác thực tế với Cron Job mình chưa rành lắm, nhưng đại khái nó như thế này. bạn có 1 lượng công việc, hay 1 công việc trên 1 tập dữ liệu lớn, không thể thực thi ngay lập tức toàn bộ, có thể dùng 1 cơ chế chia nhỏ dữ liệu / công việc ra, và thực thi tuần tự lần lượt cho đến khi hết. Cơ chế này được gọi là Task Scheduler - lập lịch công việc.

1 ví dụ: các mail server ko bao giờ send ngay cái mail bạn cần send đến người nhận . tại 1 thời điểm có quá nhiều người send, nếu ôm tất cả thực thi cùng 1 lúc thì tắc nghẽn mail server. Nó áp dụng cơ chế Message Queue như sau: bạn gửi, nó cho vào 1 hàng đợi, ai gửi, nó cũng cho vào hàng đợi. Hàng đợi hoạt động theo quy tắc FirstIn-FirstOut, nghĩa là, các mail của bạn phải đợi cho các mail trước đó đã được xử lý gửi đi xong, rồi từ từ tới phiên mail bạn được gửi đi. Ví dụ, mỗi lần gửi nó chỉ gửi 100 mail, sau 10 giây mới có đợt gửi kế tiếp. Cơ chế tiếp nhận - xử lý bất đồng bộ như thế này sẽ giảm tải và hạn chế tắc nghẽn cho mail server.

Mình cũng chưa dùng cai này trên php/mysql bao giờ, và quả thực đang có nhu cầu dùng, nhờ cái từ khóa CronJob bạn cho nên mình tìm hiểu được chút ít , hy vọng có dịp trao đổi thêm.

http://toila.net/content/hoi-cron-job.html
http://www.aota.net/Script_Installat.../cronhelp.php3
vzic viết 12:42 ngày 10/10/2018
Đơn giản lắm bạn. Bạn phân trang ra. Rồi dùng code js. Cứ 1 lần load cỡ bao nhiêu record đó. Xong thì next qua page 2 cứ thế + 1 cho tới hết. Bao giờ số trang hiện tại > tổng số trang thì stop. . Cứ 2s lại next qua 1 page HE HE
binhvn viết 12:43 ngày 10/10/2018
vài nghìn dòng vẫn while vô tư mà . Bữa trước mình làm cái hơn 700k vẫn vô tư ). Nhưng mà backup db trước khi làm nhé
ngoc_viet08 viết 12:43 ngày 10/10/2018
ừm while trong php thì vẫn ko nặng lắm . mình hơi quá tưởng tượng về nó cám ơn mọi người .
Trịnh Ngọc Lan viết 12:51 ngày 10/10/2018
MySQL tự bản thân nó cũng có thể làm những việc đó mà, chỉ cần bạn hiểu về cấu trúc lệnh của nó.
Bài liên quan
0