Thứ Năm, 18 tháng 9, 2025

Các hệ thống cache phổ biến

Nguồn

 Cache Systems Every Developer Should Know

Tại sao cần cache?

Caching là một kỹ thuật phổ biến để tăng hiệu suất hệ thống và giảm thời gian phản hồi. Từ frontend đến backend, caching đóng một vai trò quan trọng trong việc cải thiện hiệu suất của các ứng dụng và hệ thống khác nhau. Một kiến trúc hệ thống điển hình bao gồm nhiều lớp caching. Tại mỗi lớp, ta lại có nhiều cơ chế caching dữ liệu, tùy vào yêu cầu của từng ứng dụng cụ thể.

Caching trong máy tính

Trong máy tính, các cache L1, L2, L3 là được biết đến nhiều nhất.

  • Cache L1 là loại nhỏ nhất và cũng nhanh nhất, thường được tích hợp vào CPU. Nó lưu trữ dữ liệu và chỉ thị được truy cập thường xuyên, cho phép CPU truy cập chúng mà không cần phải lấy từ các loại bộ nhớ chậm hơn.
  • Cache L2 lớn hơn nhưng chậm hơn so với cache L1, thường được đặt trên chip CPU hoặc trên một chip riêng.
  • Cache L3 lớn hơn và chậm hơn so với cache L2, thường được chia sẻ giữa nhiều lõi CPU.

Một loại cache phần cứng khác cũng phổ biến là TLB (translation lookaside buffer). Nó cho phép CPU dịch nhanh địa chỉ bộ nhớ ảo thành địa chỉ bộ nhớ vật lý, bằng cách lưu trữ các bản dịch địa chỉ gần đây, để giảm thời gian cần thiết để truy cập dữ liệu từ bộ nhớ.

Ở cấp độ hệ điều hành, ta có page cache và các cache file hệ thống khác. Page cache được quản lý bởi hệ điều hành và nằm trong bộ nhớ chính. Nó được sử dụng để lưu trữ các khối đĩa được sử dụng gần đây trong bộ nhớ. Khi một chương trình yêu cầu dữ liệu từ đĩa, hệ điều hành có thể nhanh chóng truy xuất dữ liệu từ bộ nhớ thay vì đọc từ đĩa.

Ta cũng có các cache khác được quản lý bởi hệ điều hành, như cache inode. Những cache này được sử dụng để tăng tốc các hoạt động liên quan đến file hệ thống bằng cách giảm số lần truy cập đĩa cần thiết để truy cập các file và thư mục.

Caching trong frontend

Trên phần frontend, trình duyệt web có thể cache các HTTP response để cho phép truy xuất dữ liệu nhanh hơn. Khi ta request dữ liệu qua HTTP lần đầu, ta sẽ nhận được một expiration policy (chính sách hết hạn) trong header HTTP.

Ta request dữ liệu đó lần nữa, trình duyệt khi đó sẽ trả về dữ liệu từ cache nếu có dữ liệu đó trong cache.

Mạng phân phối nội dung (CDN) được sử dụng rộng rãi để cải thiện việc phân phối nội dung tĩnh, như hình ảnh, video và các tài nguyên web khác. Một trong những cách mà CDN tăng tốc việc phân phối nội dung là thông qua việc caching. Khi một người dùng yêu cầu nội dung từ một CDN, mạng CDN sẽ tìm kiếm nội dung được request trong cache của mình. Nếu nội dung chưa có trong cache, CDN sẽ lấy nó từ server nguồn và lưu trữ nó trên các server edge.

Khi một người dùng khác request cùng một nội dung, CDN có thể cung cấp nội dung trực tiếp từ cache của mình mà không cần lấy lại từ server nguồn.

Caching trong backend

Một số load balancer có thể cache tài nguyên để giảm tải cho các server phía sau. Khi một người dùng request nội dung từ một server đứng sau load balancer, load balancer có thể cache response và trả về trực tiếp cho người dùng tiếp theo nếu người đó request cùng nội dung đó. Điều này giúp cải thiện thời gian phản hồi và giảm tải cho các server phía sau.

Caching không nhất thiết phải nằm trong bộ nhớ. Trong các hạ tầng messaging, các message broker như Kafka có thể cache một lượng lớn các message trên đĩa. Điều này cho phép các consumer truy xuất message theo tốc độ mà consumer mong muốn. Message có thể được cache trong một khoảng thời gian dài dựa trên retention.

Các cache phân tán như Redis có thể lưu trữ các cặp key-value trong bộ nhớ, cung cấp hiệu suất đọc/ghi cao hơn so với các cơ sở dữ liệu truyền thống.

Các hệ thống tìm kiếm full-text như Elastic Search có thể index dữ liệu để tìm kiếm tài liệu và log một cách nhanh chóng và hiệu quả.

Caching trong database

Ngay cả trong database, ta cũng có nhiều lớp caching.

Dữ liệu thường được ghi vào write-ahead log (WAL) trước khi được index trong một B-tree. Buffer pool là một khu vực bộ nhớ được sử dụng để cache kết quả truy vấn, trong khi materialized views có thể tính toán trước kết quả truy vấn để cải thiện hiệu suất. Transaction log ghi lại tất cả các giao dịch và cập nhật trong cơ sở dữ liệu, trong khi replication log theo dõi trạng thái sao chép trong một cụm cơ sở dữ liệu.

=============================
Website không chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn không muốn bị AI thay thế và tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp hay làm chủ Database thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ bí kíp thực chiến, thủ tục, quy trình của gần 20 năm kinh nghiệm (mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google) từ đó giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
- Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin_1200
- Linux: https://bit.ly/linux_1200
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
cơ sở dữ liệu, cơ sở dữ liệu quốc gia, database, AI, trí tuệ nhân tạo, artificial intelligence, machine learning, deep learning, LLM, ChatGPT, DeepSeek, Grok, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c/21c/23c/23ai, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, docker, k8s, micro service, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master