thảo luận Cần được giúp để trang dashboard chạy nhanh hơn

Không liên quan nhưng mà dữ liệu công ty lại đem up lên mạng tơ hơ thế này ah thím?

Chỗ đếm số row loaded thì thím count 1 phát rồi trả về.

Dùng paging để load data, mỗi page có skip, limit truyền vào, còn frontend thì dùng mấy cái unlimited scroll nó tái sử dụng lại element nên không tốn thêm memory.
Này số liệu ảo user đưa để em biết giao diện như vậy mà thiết kế thôi bác ko phải số liệu thật đâu
 
Dữ liệu lớn mà lại biến động nhanh thì phải thiết kế lại hệ thống chứ còn để thế thì làm ko được bạn. Dữ liệu biến động nhanh thì cache ko có ý nghĩa lắm. Thường xuyên phải scan với rank thì relational database bình thường ko ổn lắm.
Cái đầu tiên mình nghĩ tới là đổi qua dùng in-memory database, Redis, vì bạn chỉ dùng làm report nên chắc ko cần an toàn dữ liệu.
Nếu vẫn còn chậm thì có thể nghĩ đến đổi kiểu dữ liệu, ví dụ sorted set.
 
Dữ liệu lớn mà lại biến động nhanh thì phải thiết kế lại hệ thống chứ còn để thế thì làm ko được bạn. Dữ liệu biến động nhanh thì cache ko có ý nghĩa lắm. Thường xuyên phải scan với rank thì relational database bình thường ko ổn lắm.
Cái đầu tiên mình nghĩ tới là đổi qua dùng in-memory database, Redis, vì bạn chỉ dùng làm report nên chắc ko cần an toàn dữ liệu.
Nếu vẫn còn chậm thì có thể nghĩ đến đổi kiểu dữ liệu, ví dụ sorted set.
Cảm ơn bác em sẽ lưu ý điều này
 
Em mới được cấp trên giao cho tạo 1 trang dashboard như hình View attachment 2443740
nhưng mỗi lần chạy thì phải mất tầm 6p đến 7p mới xong.
- Trong project này em tạo 1 package và trong package thì tạo các procedure cho mỗi phần như biểu đồ 1 procedure và table 1 procedure và 4 con số lớn trên cùng là riêng 1 procedure
View attachment 2443743
- Với 4 con số lớn này em có mã lệnh như sau
View attachment 2443746
View attachment 2443747
- Và table thì em có câu lệnh như sau
View attachment 2443750
View attachment 2443753
View attachment 2443758
View attachment 2443761
- Có cách nào tối ưu truy vấn cho nhanh hơn không mấy anh chứ chạy lâu quá trên FE em phải dùng web worker cho nó chạy ở luồng riêng để không ảnh hưởng tới luồng chính
tạo 1 vài bảng report thôi select vào lấy lên , sau đó muốn realtime thì dùng socket mà đè data, phía db tạo job đẩy dữ liệu nhặt từ các bảng vào các bảng report
 
Lượng data có lớn không? Nếu lượng data không quá lớn (Load được lên mem) thì dùng duckdb copy data qua. query in-memory luôn tốc độ bàn thờ.
 
Mình thấy các bác trên nói gần như chuẩn hết rồi. Quan trọng là có muốn refactor lại hết cái mớ procedure kia hay không thôi. Làm lại infra, db (deploy duckdb bác ở trên), tổ chức các logic tính toán thành từng node có dependency, tách data theo tier hot/cold, nếu infra on-prem thì đầu tư dàn Raid SSD xịn để sau này còn scale-up :D Data vài trăm ngàn record có tí xíu ấy mà.
 
Back
Top