Avatar
0
a83raljj7lgom9gm Beginner
Tối ưu xử lý
Em có câu query cần Union All 2 bảng lại để lấy data trả về 1 chuỗi data của các cột nối nhau bằng dấu |

ví dụ: username|code|name|.....

Số lượng reocord lúc query ra thì 1M record. Em đang dùng Spring boot. Theo anh thì nên giới hạn số lượng mỗi lần query lên rồi gọi nhiều lần xuống DB. Hay là gọi 1 lần thì hơn ạ. Data em bắt buộc lấy đủ . Và em nên nối chuỗi bằng câu native query hay là lấy dữ liệu lên rồi xử lý bằng Java hơn ạ.

Em đang dùng EntityManager và tạo câu query native. trả về kiểu Stream để xử lý và zip lại thành file data trả về luôn. Hướng xử lý tối ưu nhất là gì ạ a.

  • Answer
Remain: 5
1 Answer
Avatar
tvd12 Beginner
tvd12 Beginner
  1. Database là trái tim của hệ thống vậy nên nó cần nhanh chóng được giải phóng khỏi các công việc nặng nề để còn phục vụ được nhiều yêu cầu khác có thể nếu không hệ thống có thể bị nghẽn.
  2. Vậy nên em cần lấy số lượng nhỏ các bản ghi, nên tối đa tầm 500 bản ghi 1 lần thay vì lấy toàn bộ, em có thể cache dữ liệu trên disk thay vì RAM để tránh bị tràn RAM hoặc em lấy được bao nhiêu bản ghi thì trả về client luôn thì không phải cache.
  3. Em nên xử lý logic ví dụ như cộng chuỗi bằng java thay vì db để giải phóng cho DB sớm nhất có thể.
  • 0
  • Reply
dạ về ý 2 thì e lấy data e chưa trả về client mà cần cho vào file txt zip nó lại mới trả file zip luôn đc ko a. Dùng Stream thì nó có làm tốn Ram ko ạ  –  a83raljj7lgom9gm 1729178949000
Đúng rồi em nhé, zip như em nói là hợp lý  –  tvd12 1729214378000