Chào mừng các bạn đến với bài viết mới nhất trên blog của chúng tôi! Trong bài viết này, chúng tôi sẽ giải thích về khái niệm PGA (Process Global Area) và In-Memory trong Oracle Database. Bạn sẽ hiểu được tầm quan trọng của PGA và cách nó tương tác với In-Memory để tối ưu hóa hiệu suất và tăng cường tính sẵn sàng của hệ thống của bạn. Hãy cùng khám phá bài viết này để hiểu rõ hơn về hai khái niệm này trong Oracle!
Giới thiệu về PGA trong Oracle Database.
Vùng chứa dữ liệu toàn cục chương trình (Program Global Area - PGA) là một khu vực bộ nhớ riêng tư chứa dữ liệu và thông tin điều khiển cho một tiến trình máy chủ(Server process).
Mỗi tiến trình máy chủ có một PGA riêng biệt. Quyền truy cập vào nó chỉ dành riêng cho tiến trình máy chủ đó và chỉ có thể đọc bởi mã Oracle thực thi thay mặt cho tiến trình đó. Nó không có sẵn cho mã nguồn của nhà phát triển.
Mỗi PGA chứa không gian ngăn xếp (stack space). Trong môi trường máy chủ chuyên dụng, mỗi người dùng kết nối đến cơ sở dữ liệu có một tiến trình máy chủ riêng. Đối với loại kết nối này, PGA chứa một phân chia bộ nhớ được gọi là không gian toàn cục người dùng (User Global Area - UGA). UGA bao gồm các phần sau:
- Khu vực con trỏ(Cursor State): cho việc lưu trữ thông tin thời gian chạy về con trỏ.
- Khu vực lưu trữ dữ liệu phiên(User session data): người dùng cho thông tin điều khiển về phiên.
- Các khu vực làm việc SQL để xử lý các câu lệnh SQL gồm:
- Khu vực sắp xếp(Sort Area): để sắp xếp dữ liệu như ORDER BY và GROUP BY.
- Khu vực băm(Hash Area): được sử dụng để thực hiện các liên kết băm của các bảng.
- Khu vực tạo bitmap(Create Bitmap Area): được sử dụng trong việc tạo chỉ mục bitmap phổ biến trong các kho dữ liệu.
- Khu vực trộn bitmap(Bitmap Merge Area): được sử dụng để giải quyết thực thi kế hoạch chỉ mục bitmap.
Trong môi trường máy chủ được chia sẻ, nhiều người dùng khách chia sẻ một tiến trình máy chủ. Trong mô hình này, UGA được chuyển vào SGA (bể chia sẻ hoặc bể lớn nếu được cấu hình) để lại cho PGA chỉ với không gian ngăn xếp.
Giới thiệu về In-Memory Column Store
Tính năng In-Memory Column Store cho phép lưu trữ các đối tượng (tables, partitions và các loại đối tượng khác) trong bộ nhớ trong một định dạng mới được gọi là định dạng cột.
Định dạng này cho phép quét, ghép nối và tổng hợp nhanh hơn nhiều so với định dạng truyền thống trên đĩa, do đó cung cấp hiệu suất báo cáo nhanh chóng và hiệu suất DML tốt cho cả môi trường OLTP và DW. Điều này đặc biệt hữu ích cho các ứng dụng phân tích hoạt động trên một số cột trả về nhiều hàng thay vì cho OLTP hoạt động trên ít hàng trả về nhiều cột.
Các DBA(Nhà quản trị cơ sở dữ liệu) phải xác định các đoạn được lưu vào IM column store, chẳng hạn như hot table, partitions và các cột được truy cập thường xuyên hơn.
Định dạng cột trong bộ nhớ không thay thế định dạng trên đĩa hoặc trong bộ đệm. Nó là một bản sao nhất quán của một bảng hoặc một số cột của một bảng được chuyển đổi sang định dạng cột mới chỉ có sẵn trong bộ nhớ. Do sự độc lập này, các ứng dụng có thể sử dụng tùy chọn này mà không cần thay đổi nào. Để chuyển đổi dữ liệu sang định dạng cột mới, cần yêu cầu một bộ nhớ mới trong SGA. Bộ nhớ này được gọi là IM column store.
Nếu cấp đủ không gian cho IM column store, truy vấn truy cập các đối tượng có khả năng được lưu trữ vào IM column store sẽ thực hiện nhanh hơn nhiều. Hiệu suất cải thiện cho phép truy vấn phân tích tự do được thực hiện trực tiếp trên dữ liệu giao dịch thời gian thực mà không ảnh hưởng đến khối lượng công việc hiện tại.
Trong đó:
- Hiệu suất DML (Data Manipulation Language) là khả năng xử lý các thao tác thay đổi dữ liệu trong cơ sở dữ liệu, chẳng hạn như thêm, sửa hoặc xóa bản ghi. Hiệu suất DML được đánh giá dựa trên thời gian phản hồi khi thực hiện các thao tác này và số lượng bản ghi được thực hiện trong một đơn vị thời gian. Việc cải thiện hiệu suất DML giúp tăng tính khả dụng và độ tin cậy của cơ sở dữ liệu, đồng thời cũng cải thiện trải nghiệm người dùng và giảm thiểu thời gian downtime của hệ thống.
- OLTP (Online Transaction Processing) là môi trường xử lý giao dịch trực tuyến, tập trung vào thao tác xử lý các giao dịch thông thường như chèn (insert), sửa (update) hoặc xóa (delete) dữ liệu.
- DW (Data Warehouse) là môi trường dữ liệu dùng để phân tích và thăm dò các thông tin đã được tập hợp từ nhiều nguồn khác nhau, tập trung vào việc lưu trữ, truy xuất và phân tích dữ liệu. DW thường chứa các bảng dữ liệu lớn và phức tạp, được sử dụng để phân tích dữ liệu trong quá trình ra quyết định.
Có ba lợi ích chính:
- Các truy vấn chạy nhanh hơn: Tất cả dữ liệu có thể được lưu trữ trong bộ nhớ trong trong định dạng cột nén. Không cần sử dụng chỉ mục. Truy vấn chạy ít nhất 100 lần nhanh hơn so với khi truy vấn dữ liệu từ bộ đệm cache nhờ định dạng nén cột.
- Các hoạt động DML nhanh hơn: Các chỉ mục phân tích dữ liệu có thể được loại bỏ bằng cách thay thế bằng việc quét các phiên bản bảng của IM column store.
- Các truy vấn tùy ý chạy với hiệu suất tốt, vì bảng hoạt động như tất cả các cột đã được lập chỉ mục.
Lưu ý: Tính năng In-Memory Column Store được bao gồm trong tùy chọn Oracle Database In-Memory.
Xin tham khảo Hướng dẫn Quản trị cơ sở dữ liệu Oracle để biết thông tin chi tiết về tính năng này.
Định dạng cột trong bộ nhớ không thay thế định dạng trên đĩa hoặc trong bộ đệm cache. Khi một Segments như table hoặc partitions được lưu vào memory trong của bộ nhớ cột, định dạng trên đĩa tự động chuyển đổi sang định dạng cột và nén tùy chọn.
Định dạng cột là định dạng chỉ sử dụng trong bộ nhớ. Không có lưu trữ định dạng cột trên đĩa. Nó không gây ra bất kỳ ghi thêm nào vào đĩa và do đó không yêu cầu bất kỳ không gian ghi nhật ký hay ghi nhớ nào. Tất cả dữ liệu được lưu trữ trên đĩa theo định dạng hàng truyền thống.
Hơn nữa, định dạng cột của một phân đoạn là bản sao được bảo đảm giao dịch giữa định dạng trên đĩa hoặc trong bộ đệm cache. Sự nhất quán giao dịch giữa hai pool được bảo tồn.
Nếu đủ không gian được phân bổ cho bộ nhớ cột trong SGA, truy vấn truy cập các đối tượng được lưu trong bộ nhớ cột thực hiện nhanh hơn nhiều.
Hiệu suất cải thiện cho phép thực hiện thêm các truy vấn phân tích tạm thời trên dữ liệu giao dịch thời gian thực mà không ảnh hưởng đến khối lượng công việc hiện tại. Sự thiếu không gian bộ nhớ cột không ngăn cản câu lệnh khỏi thực thi trên các bảng có thể đã được lưu vào bộ nhớ cột.
Quản trị cơ sở dữ liệu (DBA) phải quyết định xem các phân đoạn nào nên được lưu trữ trong bộ nhớ và nào nên được lưu trữ trên đĩa dựa trên loại truy vấn và các lệnh thao tác dữ liệu (DML) được thực hiện trên các phân đoạn đó. DBA cũng có thể xác định chính xác hơn những cột nào là ứng cử viên tốt cho IM column store:
- Chỉ ở định dạng hàng trong: Các phân đoạn được truy cập thường xuyên bởi các truy vấn kiểu OLTP, hoạt động trên một số lượng ít hàng trả về nhiều cột, là những ứng viên tốt cho bộ đệm. Những phân đoạn này không nhất thiết phải được xác định là các phân đoạn trong bộ nhớ và chỉ nên được gửi đến bộ đệm.
- Đồng thời ở hai định dạng: Các phân đoạn được truy cập thường xuyên bởi các truy vấn kiểu phân tích, hoạt động trên nhiều hàng trả về một số lượng ít cột, là những ứng viên tốt cho IM column store. Nếu một phân đoạn được xác định là một phân đoạn trong bộ nhớ nhưng lại có một số cột được xác định là các cột không nằm trong bộ nhớ, các truy vấn chọn bất kỳ cột nào không nằm trong bộ nhớ sẽ được gửi đến bộ đệm và những cột chỉ nằm trong bộ nhớ sẽ được gửi đến IM column store. Bất kỳ lấy thông tin bởi rowid nào sẽ được thực hiện trên phân đoạn qua bộ đệm. Bất kỳ lệnh DML nào thực hiện trên các đối tượng này đều được thực hiện qua bộ đệm.
Giới thiệu về Full Database In-Memory Caching
Tính năng In-Memory Column Store cho phép lưu trữ các đối tượng (tables, partitions và các loại đối tượng khác) trong bộ nhớ trong một định dạng mới được gọi là định dạng cột.
Định dạng này cho phép quét, ghép nối và tổng hợp nhanh hơn nhiều so với định dạng truyền thống trên đĩa, do đó cung cấp hiệu suất báo cáo nhanh chóng và hiệu suất DML tốt cho cả môi trường OLTP và DW. Điều này đặc biệt hữu ích cho các ứng dụng phân tích hoạt động trên một số cột trả về nhiều hàng thay vì cho OLTP hoạt động trên ít hàng trả về nhiều cột.
Các DBA(Nhà quản trị cơ sở dữ liệu) phải xác định các đoạn được lưu vào IM column store, chẳng hạn như hot table, partitions và các cột được truy cập thường xuyên hơn.
Định dạng cột trong bộ nhớ không thay thế định dạng trên đĩa hoặc trong bộ đệm. Nó là một bản sao nhất quán của một bảng hoặc một số cột của một bảng được chuyển đổi sang định dạng cột mới chỉ có sẵn trong bộ nhớ. Do độc lập này, các ứng dụng có thể sử dụng tùy chọn này mà không cần thay đổi nào. Để chuyển đổi dữ liệu sang định dạng cột mới, cần yêu cầu một bộ nhớ mới trong SGA. Bộ nhớ này được gọi là IM column store.
Nếu cấp đủ không gian cho IM column store, truy vấn truy cập các đối tượng có khả năng được lưu trữ vào IM column store sẽ thực hiện nhanh hơn nhiều. Hiệu suất cải thiện cho phép truy vấn phân tích tự do được thực hiện trực tiếp trên dữ liệu giao dịch thời gian thực mà không ảnh hưởng đến khối lượng công việc hiện tại.
Trong đó:
- Hiệu suất DML (Data Manipulation Language) là khả năng xử lý các thao tác thay đổi dữ liệu trong cơ sở dữ liệu, chẳng hạn như thêm, sửa hoặc xóa bản ghi. Hiệu suất DML được đánh giá dựa trên thời gian phản hồi khi thực hiện các thao tác này và số lượng bản ghi được thực hiện trong một đơn vị thời gian. Việc cải thiện hiệu suất DML giúp tăng tính khả dụng và độ tin cậy của cơ sở dữ liệu, đồng thời cũng cải thiện trải nghiệm người dùng và giảm thiểu thời gian downtime của hệ thống.
- OLTP (Online Transaction Processing) là môi trường xử lý giao dịch trực tuyến, tập trung vào thao tác xử lý các giao dịch thông thường như chèn (insert), sửa (update) hoặc xóa (delete) dữ liệu.
- DW (Data Warehouse) là môi trường dữ liệu dùng để phân tích và thăm dò các thông tin đã được tập hợp từ nhiều nguồn khác nhau, tập trung vào việc lưu trữ, truy xuất và phân tích dữ liệu. DW thường chứa các bảng dữ liệu lớn và phức tạp, được sử dụng để phân tích dữ liệu trong quá trình ra quyết định.
Có ba lợi ích chính:
- Các truy vấn chạy nhanh hơn: Tất cả dữ liệu có thể được lưu trữ trong bộ nhớ trong trong định dạng cột nén. Không cần sử dụng chỉ mục. Truy vấn chạy ít nhất 100 lần nhanh hơn so với khi truy vấn dữ liệu từ bộ đệm cache nhờ định dạng nén cột.
- Các hoạt động DML nhanh hơn: Các chỉ mục phân tích dữ liệu có thể được loại bỏ bằng cách thay thế bằng việc quét các phiên bản bảng của IM column store.
- Các truy vấn tùy ý chạy với hiệu suất tốt, vì bảng hoạt động như tất cả các cột đã được lập chỉ mục.
Lưu ý: Tính năng In-Memory Column Store được bao gồm trong tùy chọn Oracle Database In-Memory.
Xin tham khảo Hướng dẫn Quản trị cơ sở dữ liệu Oracle để biết thông tin chi tiết về tính năng này.
Giải thuật hiện tại cho quét bảng chỉ tải một bảng vào bộ đệm cache khi kích thước bảng nhỏ hơn một phần nhỏ của kích thước bộ đệm cache.
Đối với các bảng rất lớn, cơ sở dữ liệu sử dụng đọc đường trực tiếp(direct path read), nạp các blocks trực tiếp vào PGA và bỏ qua SGA để tránh làm đầy buffer cache. Người quản trị cơ sở dữ liệu (DBA) phải khai báo rõ ràng các bảng tra cứu nhỏ, cái nào được truy cập thường xuyên, là CACHE để tải dữ liệu vào bộ nhớ và tránh bỏ qua SGA.
Mệnh đề này cho thấy các blocks được lấy về cho các bảng này được đặt ở cuối danh sách ít được sử dụng nhất (LRU) trong buffer cache khi thực hiện quét toàn bộ bảng.
Tính năng Full Database In-memory Caching cho phép toàn bộ cơ sở dữ liệu được lưu trữ trong bộ nhớ khi kích thước cơ sở dữ liệu (tổng số tệp dữ liệu, không gian bảng SYSTEM, tệp CACHE LOB trừ SYSAUX, TEMP) nhỏ hơn kích thước bộ đệm cache.
Lưu trữ và chạy cơ sở dữ liệu từ bộ nhớ dẫn đến lợi ích hiệu suất lớn. Có hai chế độ có thể sử dụng:
- Full Database Caching: Chế độ mặc định và tự động ngầm định trong đó tính toán nội bộ xác định xem cơ sở dữ liệu có thể được lưu trữ hoàn toàn cho một phiên bản hay không. NOCACHE LOB không được lưu trữ trong Full Database Caching, nhưng trong chế độ Force Full Database Caching, cả NOCACHE LOBs cũng được lưu trữ.
- Force Full Database Caching: Không Full Database Caching và Force Full Database Caching đều không ép buộc hoặc prefetches dữ liệu vào bộ nhớ. Workload phải truy cập dữ liệu trước khi chúng được lưu trữ. Nó xem xét toàn bộ cơ sở dữ liệu có đủ điều kiện để được lưu trữ hoàn toàn trong bộ đệm cache. Chế độ này yêu cầu DBA thực hiện lệnh ALTER DATABAS FORCE FULL DATABASE CACHING. Chế độ này có ưu tiên hơn chế độ Full Database Caching. Để trở về lưu trữ truyền thống, sử dụng lệnh ALTER DATABASE NO FORCE FULL DATABASE CACHING.
BÀI VIẾT LIÊN QUAN
Kết luận
PGA (Program Global Area) và In-Memory Column là hai khái niệm khác nhau trong Oracle.
PGA là một vùng bộ nhớ được dành riêng cho mỗi tiến trình truy vấn. Nó lưu trữ các biến và bộ đệm (buffer) cho mỗi tiến trình, bao gồm các kết quả truy vấn tạm thời và các dữ liệu khác liên quan đến tiến trình đó. PGA được sử dụng trong nhiều hoạt động khác nhau trong Oracle, bao gồm các hoạt động sort, hash join, và các hoạt động truy vấn dữ liệu lớn.
In-Memory Column là một tính năng mới trong Oracle 12c cho phép dữ liệu của một cột được lưu trữ trực tiếp trong bộ nhớ, chứ không phải trong các bộ đệm truyền thống. Khi một truy vấn được thực hiện trên một cột được lưu trữ trong In-Memory Column, dữ liệu được truy xuất trực tiếp từ bộ nhớ, giúp tăng tốc độ truy vấn và giảm tải cho hệ thống bộ nhớ đệm.
Tóm lại, PGA và In-Memory Column là hai khái niệm khác nhau trong Oracle. PGA là một vùng bộ nhớ được dành riêng cho mỗi tiến trình truy vấn, trong khi In-Memory Column là một tính năng cho phép lưu trữ dữ liệu của một cột trực tiếp trong bộ nhớ.