Hacker News

Ba lớp bộ đệm giữa chọn và đĩa

Ba lớp bộ đệm giữa chọn và đĩa Cuộc khám phá này đi sâu vào ba phần, xem xét tầm quan trọng và tác động tiềm tàng của nó. — Hệ điều hành kinh doanh Mewayz.

9 đọc tối thiểu

Mewayz Team

Editorial Team

Hacker News

Khi ứng dụng của bạn kích hoạt câu lệnh SELECT, truy vấn đó hầu như không bao giờ chạm vào ổ đĩa quay hoặc thậm chí là bộ lưu trữ flash thô — nó đi qua ba lớp bộ đệm riêng biệt để âm thầm xác định xem phản hồi của bạn đến trong micro giây hay mili giây. Hiểu được các lớp này là sự khác biệt giữa một nền tảng kinh doanh có thể mở rộng quy mô một cách dễ dàng và một nền tảng có khả năng chịu tải trong thế giới thực.

Điều gì xảy ra vào thời điểm một truy vấn CHỌN rời khỏi ứng dụng của bạn?

Thời điểm ứng dụng của bạn gửi truy vấn CHỌN, nó sẽ đi vào một đường dẫn mà hầu hết các nhà phát triển không bao giờ kiểm tra. Công cụ cơ sở dữ liệu chặn yêu cầu trước khi bất kỳ thao tác I/O nào xảy ra, phân tích cú pháp SQL thành một kế hoạch thực thi nội bộ và ngay lập tức tư vấn tuyến phòng thủ đầu tiên của nó: bộ nhớ đệm kết quả truy vấn. Nếu một truy vấn giống hệt với các tham số giống nhau được thực hiện gần đây, công cụ có thể trả về tập kết quả được lưu trong bộ nhớ đệm mà không cần chạm vào một trang dữ liệu nào. Điều này đôi khi được gọi là bộ đệm truy vấn hoặc bộ đệm kết quả và đối với khối lượng công việc có tốc độ đọc cao, ghi thấp — như bảng điều khiển phân tích và mô-đun báo cáo — nó có thể loại bỏ hoàn toàn phần lớn hoạt động đọc đĩa.

Cái nhìn sâu sắc quan trọng ở đây là bộ đệm truy vấn rất nhạy cảm với các đột biến dữ liệu. Bất kỳ CHÈN, CẬP NHẬT hoặc XÓA nào đối với bảng bên dưới sẽ làm mất hiệu lực các kết quả được lưu trong bộ nhớ đệm có liên quan. Đây là lý do tại sao các hệ thống giao dịch nặng về ghi thường vô hiệu hóa hoàn toàn bộ đệm truy vấn và thay vào đó dựa vào các lớp sâu hơn.

Vùng đệm là gì và tại sao nó quan trọng hơn bạn nghĩ?

Lớp bộ nhớ đệm thứ hai — và được cho là quan trọng nhất trong các hệ thống sản xuất — là vùng đệm (được gọi là vùng đệm dùng chung trong PostgreSQL, vùng đệm InnoDB trong MySQL). Đây là vùng RAM mà công cụ cơ sở dữ liệu sử dụng để chứa các trang dữ liệu được truy cập gần đây. Khi một truy vấn không thể được cung cấp từ bộ đệm kết quả, công cụ sẽ kiểm tra xem các trang dữ liệu được yêu cầu đã có trong vùng đệm hay chưa trước khi thực hiện bất kỳ thao tác đọc đĩa nào.

Vùng đệm hoạt động theo nguyên tắc cục bộ theo không gian và thời gian: dữ liệu được truy cập gần đây có thể sẽ được truy cập lại và dữ liệu được lưu trữ gần dữ liệu được truy cập có thể sẽ sớm được truy cập. Quản trị viên cơ sở dữ liệu điều chỉnh kích thước vùng đệm như một trong những quyết định cấu hình có tác dụng cao nhất mà họ đưa ra. Vùng đệm quá nhỏ sẽ khiến trang bị loại bỏ liên tục, tạo ra hiện tượng gọi là đập vỡ, trong đó hệ thống dành nhiều thời gian hơn để quản lý lỗi bộ đệm so với thực thi truy vấn.

💡 BẠN CÓ BIẾT?

Mewayz replaces 8+ business tools in one platform

CRM · Hóa đơn · Nhân sự · Dự án · Đặt chỗ · Thương mại điện tử · POS · Phân tích. Gói miễn phí vĩnh viễn có sẵn.

Bắt đầu miễn phí →

Thông tin chuyên sâu quan trọng: Trong hầu hết các khối lượng công việc OLTP, vùng đệm có kích thước phù hợp nghĩa là 95–99% tổng số lần đọc dữ liệu được cung cấp từ RAM. Tập làm việc — tập hợp con dữ liệu mà các truy vấn thực sự chạm vào thường xuyên — thường nhỏ hơn nhiều so với tổng kích thước cơ sở dữ liệu. Định cỡ nhóm bộ đệm để phù hợp với nhóm làm việc của bạn chứ không phải toàn bộ tập dữ liệu là hành động điều chỉnh mang lại lợi nhuận cao nhất mà bạn có thể thực hiện.

Bộ nhớ đệm của hệ điều hành lấp đầy khoảng trống giữa RAM và đĩa như thế nào?

Ngay cả khi nhóm bộ đệm của cơ sở dữ liệu bị thiếu, một truy vấn vẫn chưa được dành cho việc đọc đĩa thực sự. Hệ điều hành duy trì bộ đệm trang (còn gọi là bộ đệm hệ thống tệp), một vùng RAM do kernel quản lý để đệm đọc và ghi vào các thiết bị chặn. Khi công cụ cơ sở dữ liệu yêu cầu một trang không có trong vùng đệm của nó, nhân hệ điều hành sẽ kiểm tra bộ đệm trang của chính nó trước khi đưa ra lệnh I/O vật lý tới bộ điều khiển lưu trữ.

Lớp thứ ba này phần lớn là vô hình đối với các nhà phát triển ứng dụng nhưng lại cực kỳ quan trọng trên các hệ thống nơi vùng đệm cơ sở dữ liệu được cung cấp dưới mức. Bộ đệm trang của hệ điều hành được chia sẻ trên tất cả các quy trình, do đó, nó cạnh tranh với máy chủ ứng dụng, máy chủ web và bất kỳ phần mềm nào khác chạy trên cùng một máy chủ. Trên các máy chủ cơ sở dữ liệu chuyên dụng, sự cạnh tranh này là tối thiểu và bộ đệm của hệ điều hành cung cấp bộ đệm cơ hội thứ hai có ý nghĩa. Trên các máy chủ hoặc vùng chứa dùng chung có giới hạn bộ nhớ chặt chẽ, bộ đệm của hệ điều hành thường quá nhỏ để có thể trợ giúp.

Lớp bộ đệm nào chịu trách nhiệm mang lại hiệu suất cao nhất trong thực tế?

Trong các hệ thống sản xuất thực tế, vùng đệm domi

All Your Business Tools in One Place

Stop juggling multiple apps. Mewayz combines 207 tools for just $19/month — from inventory to HR, booking to analytics. No credit card required to start.

Try Mewayz Free →

Dùng Thử Mewayz Miễn Phí

Nền tảng tất cả trong một cho CRM, hóa đơn, dự án, Nhân sự & hơn thế nữa. Không cần thẻ tín dụng.

Hướng dẫn Liên quan

Hướng dẫn Quản lý Nhân sự →

Quản lý nhóm của bạn hiệu quả: hồ sơ nhân viên, quản lý nghỉ phép, bảng lương và đánh giá hiệu suất.

Bắt đầu quản lý doanh nghiệp của bạn thông minh hơn ngay hôm nay.

Tham gia 30,000+ doanh nghiệp. Gói miễn phí vĩnh viễn · Không cần thẻ tín dụng.

Tìm thấy điều này hữu ích? Chia sẻ nó.

Sẵn sàng áp dụng vào thực tế?

Tham gia cùng 30,000+ doanh nghiệp đang sử dụng Mewayz. Gói miễn phí vĩnh viễn — không cần thẻ tín dụng.

Bắt đầu Dùng thử Miễn phí →

Sẵn sàng hành động?

Bắt đầu dùng thử Mewayz miễn phí của bạn ngay hôm nay

All-in-one business platform. No credit card required.

Bắt đầu miễn phí →

Dùng thử 14 ngày miễn phí · Không cần thẻ tín dụng · Hủy bất kỳ lúc nào