Trang này được dịch bằng máy. Đọc bản gốc tiếng Anh. English

Thư viện IBSurgeon

Bộ thu gom rác Firebird 2.0

Công cụ biết về từng phiên bản ghi được tạo ra bởi câu lệnh update\delete và có thể loại bỏ chúng ngay khi giao dịch snapshot lâu đời nhất (OST) cho phép. Điều này loại bỏ nhu cầu đọc lại các trang có các phiên bản này theo yêu cầu của người dùng (ví dụ: SELECT COUNT(*) FROM table) và tránh tình huống các phiên bản này không bao giờ được đọc (tất nhiên sweep luôn loại bỏ tất cả các phiên bản ghi không sử dụng). Ngoài ra, có khả năng cao các trang cần thiết vẫn nằm trong bộ đệm (buffer cache) do đó cần ít thao tác I/O đĩa bổ sung hơn.

Giữa thời điểm thông báo cho bộ thu gom rác (garbage collector) về trang có các phiên bản không sử dụng và thời điểm bộ thu gom rác đọc trang này, một giao dịch mới có thể cập nhật bản ghi và bộ thu gom rác không thể dọn dẹp bản ghi này nếu số giao dịch mới này nằm trên OST hoặc vẫn đang hoạt động. Trong trường hợp này, công cụ lại thông báo cho bộ thu gom rác với số trang này và nó sẽ dọn dẹp rác vào một thời điểm nào đó sau đó (bộ thu gom rác cũ sẽ “quên” trang này cho đến khi người dùng đọc lại nó).

Cả hai chế độ thu gom rác hợp tác (cooperative) và nền (background) hiện đều có thể thực hiện được. Để quản lý điều này, tham số cấu hình mới “GCPolicy” đã được giới thiệu. Nó có thể được đặt thành:

  • a) cooperative - thu gom rác chỉ được thực hiện ở chế độ hợp tác, chẳng hạn như trước IB6. Mỗi yêu cầu của người dùng chịu trách nhiệm loại bỏ các phiên bản ghi không sử dụng. Đây là cách công cụ hoạt động trước IB6. Đây là tùy chọn duy nhất cho chế độ Classic Server. Công cụ không theo dõi các phiên bản được tạo ra từ câu lệnh update và delete

  • b) background - thu gom rác chỉ được thực hiện bởi luồng nền, chẳng hạn như trong IB6 và các phiên bản sau. Không có yêu cầu người dùng nào loại bỏ các phiên bản ghi không sử dụng. Thay vào đó, yêu cầu người dùng thông báo cho luồng thu gom rác chuyên dụng với số trang nơi phát hiện phiên bản ghi không sử dụng. Ngoài ra, công cụ ghi nhớ số trang nơi câu lệnh update\delete tạo ra các phiên bản lùi (backversions).

  • c) combined - cả hai chế độ thu gom rác nền và hợp tác đều được thực hiện.

Mặc định là “combined” cho SuperServer. ClassicServer bỏ qua tham số này và luôn hoạt động ở chế độ “cooperative”