Nội dung bài viết
Video học lập trình mỗi ngày
Trong khi làm việc hay phỏng vấn thì chúng ta sẽ bắt gặp những câu hỏi như, bạn đã tối ưu hệ thống của bạn bao giờ chưa?
Nếu có thì tối ưu ở cấp độ (ngôn ngữ hay tham gia stask hệ thống) nào? Và làm như thế nào? Thì đây là câu trả lời cho những bạn gặp trường hợp này.
Tất nhiên kiến thức của tôi có hạn vì vậy nếu thiếu sót thì mong anh chị góp ý và chúng ta sẽ hoàn thiện cho các bạn lập trình viên thế hệ tiếp theo.
Góp ý về Playlist
Cảm ơn các bạn đã gửi góp ý về Tips Javascript với nội dung:
Anh có thể gói gọn lại một Playlist nói về TỐI ƯU HIỆU SUẤT được không? Em thấy mỗi phần rờ rạc tìm lại khó quá...
Nay tôi sắp xếp lại cho anh em dễ theo dõi, có thể thiếu sót video, nếu như anh em thấy thiếu sót thì comment lại để tôi có thể add vào Playlist. Thanks anh em nhiều...
Backend tối ưu hoá với những nhiệm vụ sau
Đây là Cách tối ưu kịch bản số 1 về MYSQL() nói về cách tối ưu hiệu suất khi sử dụng COUNT(*) với ~15 triệu records thì nếu như thông thường sẽ mất khác nhiều thời gian, phần này nếu các kịch bản cũng như nếu chúng ta phát triển và thiết kế table ngay từ đầu thì có lẽ sẽ hoàn thiện việc tối ưu hơn. Nhưng nếu như mà chúng ta đang làm trên một nền tảng đã có sẵn thì phải sử dụng phương pháp khác (sẽ lên video tiếp về vấn đề này)...
Tối ưu kịch bản số 2 cũng về MYSQL() nói về thủ thuật khi phân trang. Rõ ràng là limit 0, 1000
khác xa nhiều so với limit 9990000, 1000
vì vậy cách tối ưu rất đơn giản với thủ thuật trong MYSQL với ~10.000.000 records thông thường mất tầm 7 seconds
với các bạn chưa thành thạo về SQL, nhưng qua bài này bạn sẽ có thể cải thiện được hiệu suất của mình chỉ còn 0.1 second
2 - [MYSQL]: Tối ưu hoá phân trang từ 7s còn 1s với Table có 10.000.000 dữ liệu
Tối ưu hoá kịch bản số 3 cũng về data nhưng biến tấu, đó là giả sử kịch bản ở đây bạn đang làm việc cho dự án Facebook hay đại loại gì đó thì có 1 tỷ tài khoản thì làm sao khi user đăng ký với email: anonystick@gmail.com
thì chúng ta check nó tồn tại hay không trong hệ thống.
Ở đây chúng ta phải hiểu rằng khi dữ liệu 1 tỷ thì sure kèo rằng dữ liệu sẽ được phân tán và mỗi zone sẽ có dữ liệu riêng. Hiểu rộng ra rằng, làm sao chúng ta có thể kiểm tra một công nhân nhà máy có đi làm vào ngày xx không, với một hệ thống chấm công với 1.000.000 nhân công, chứ không phải dừng lại việc check user ở đây. Bài toán này sẽ giúp các bạn rất nhiều trong việc phát triển tư duy của một SA và BE.
3 - [MYSQL]: Theo bạn cách nào tốt nhất check user có tồn tại trong 100 triệu user như github
Tối ưu hoá kịch bản số 4 chính là tôi sẽ quay lại dòng lịch sử phát triển của một hệ thống backend, từ khi tôi tham gia đến khi hệ thống được release với 1000 user, và tiếp tục cải thiện hệ thống sau 3 năm thì có 400.000 users hoạt động hằng ngày. Đây là quá trình từ con số 0, phù hợp với các bạn mới phát triển backend
Tối ưu hoá kịch bản số 5 đó chính là về cấp độ ngôn ngữ, khi tham gia vào dự án thì thực tế code sẽ lộn xộn là điều không tránh khỏi, nhưng nếu có điểm chung thì việc học và làm quen với DESIGN PATTERNS
thì giúp phát triển code dễ dàng mở rộng và người đến sau cũng có thể ít áp lực khi hiểu code. Và 5 điều bạn chỉ cần biết là đủ, không cần nhiều.
Tối ưu hoá kịch bản số 6 đó chính là nếu hệ thống của bạn gặp nhiều vấn đề về triển khai nghiệp vụ quy trình. Ví dụ ban đầu chỉ có cho phép user đặt hàng order
, nhưng sau thêm hệ thống tích điểm, tháng sau thêm gửi email cho khách vip, tháng sau nữa là gửi bill qua sms, email
nếu order thành công... Rất nhiều nghiệp vụ, thì làm sao bạn có thể tối ưu hoá hiệu suất cũng như tách hệ thống ra nhiểu service khác nhau thì đây là một cách tuyệt vời triển khai, 99% hệ thống đều áp dụng
6 - [MQ - KAFAK - RABBITMQ]: Thay đổi hệ thống eCommerce trở nên mạnh mẽ như thế nào so với cách cũ
Tối ưu hoá kịch bản số 7 đó là việc phát triển từ hệ thống từ 10 user đến 14 triệu users sẽ như thế nào? Chắc bạn nghĩ là phải ghê gớm or có một TEAM nguồn lực dồi dào bao gồm chi phí... Nhưng đôi lúc những điều này không phải là truyện cổ tích mà nó là sự thật, bạn hãy xem việc tối ưu hệ thống với 14.000.000 user chỉ với một vài kỹ sư mà có thể NHANH đến như vậy không?
Tối ưu hoá kịch bản số 8 đó là việc học về index nhưng sử dụng sai về index trong MYSQL. Có những trường hợp bạn sử dụng INDEX nhưng lại chậm hơn việc không sử dụng chúng? Vì sao? Vì có những quy tắc mà chỉ ít lập trình viên nắm vững, thay vì bạn có thể hỏi AI thì đây là việc thực hành và mô phỏng lại những kịch bản sai lầm...
8 - [MYSQ]: ndex Database thì lời khuyên nên xem CẤU TRÚC này? Và không phải index nào cũng nhanh?
Tối ưu hoá kịch bản số 9 đó chính là kịch bản các hệ thống API tài chính hiện đang có, việc import và export file excel từ db hay ngược lại
là việc diễn ra hằng ngày, khối lượng dữ liệu ngày càng lớn thì việc đảm bảo sự trải nhiệm mượt mà cho user là điều luôn hướng tới. Kịch bản này sẽ có nhiều các để phát triển và thực hiện thì đây là 4 cách theo từng level có nghĩa rằng, nếu bạn đang ở mức basic cũng có thể triển khai chúng. Tôi đã tối ưu từ 10s -> 6s -> 3s...
9 - [JAVA EXCEL]: 1.000.000 Records trong dữ liệu muốn xuất excel có bao nhiêu cách NHANH GỌN
Tối ưu hoá kịch bản số 10, tối ưu hoá việc export excel từ 10s -> 6s. Với nhiều Thread chạy ầm ầm...
10 - [JAVA EXCEL]: Cách Export File Excel với 1.000.000 records và sẽ cải thiện 10s xuống 6s...
Tóm tắt phần 1
Trên đây là 10 Session mà tôi add lại cho các bạn, chúng ta đi cùng nhau và phát triển vì vậy nếu thiếu sót or sai sót mong sự góp ý của các bạn. Bài sau tôi sẽ post tiếp 10 session tiếp theo.
Xin cảm ơn. Bạn có thể Like nó nếu bạn cảm thấy có giá trị.