Thứ Tư, 25 tháng 2, 2026

MODULE 2: KIẾN TRÚC CHI TIẾT (MEMORY & PROCESS)

1. Tổng quan

Đây là phần quan trọng nhất để anh hiểu về Performance Tuning.

  • Trong Oracle, anh tinh chỉnh SGA (Shared Global Area) và PGA.

  • Trong SQL Server/MySQL, anh quan tâm đến Buffer Pool.

  • Trong PostgreSQL, anh phải hiểu Shared Buffers kết hợp với OS Cache (Linux)

    .

2. Chi tiết nội dung

A. Kiến trúc Bộ nhớ (Memory Architecture)

Thành phầnOracleSQL ServerPostgreSQLMySQL (InnoDB)MongoDB
Vùng nhớ chia sẻ chínhSGA (Database Buffer Cache, Redo Log Buffer, Shared Pool)Buffer Pool (Data Cache, Plan Cache)Shared Buffers (Chỉ chứa Data pages)InnoDB Buffer Pool (Data + Index + Lock)WiredTiger Cache
Cơ chế Cache đĩaDirect I/O (Bỏ qua OS Cache)Direct I/O (Bỏ qua OS Cache)Buffered I/O (Dùng cả RAM DB + RAM OS - Double Buffering)Direct I/O (O_DIRECT)Dùng File System Cache
Cấu hình RAM khuyến nghị70-80% RAM serverMax Server Memory = Tổng RAM - 4GB (cho OS)Shared_buffers = 25% RAM (Còn lại cho OS Cache)70-80% RAM server50% RAM - 1GB

B. Kiến trúc Tiến trình (Process vs Thread) - Điểm khác biệt cốt tử

  1. Oracle & PostgreSQL (Process-based):

    • Mỗi khi có một client kết nối $\rightarrow$ Server sinh ra một tiến trình (OS Process) mới.

    • Ưu điểm: Nếu 1 tiến trình chết, Instance vẫn sống.

    • Nhược điểm: Tốn RAM, context switch cao. Cần cấu hình PGA (Oracle) hoặc work_mem (Postgres) cẩn thận.

    • Giải pháp: PostgreSQL bắt buộc phải dùng PgBouncer (Connection Pooler) nếu có > 500 kết nối.

  2. SQL Server & MySQL (Thread-based):

    • Chỉ có 1 Process chính (sqlservr.exe hoặc mysqld). Các kết nối client là các luồng (Thread) bên trong process đó.

    • Ưu điểm: Rất nhẹ, chia sẻ bộ nhớ cực tốt, hiệu năng cao trên Windows.

    • Nhược điểm: Nếu luồng xử lý bị lỗi nghiêm trọng (memory leak), có thể kéo sập cả Service.

C. Các câu lệnh Quản trị & Kết quả

1. SQL Server: Kiểm tra RAM và các Wait Types

SQL
-- Xem RAM đã dùng
SELECT (physical_memory_in_use_kb/1024) AS Memory_Used_MB, 
       (large_page_allocations_kb/1024) AS Large_Pages_MB
FROM sys.dm_os_process_memory;

-- Xem SQL Server đã chạy bao lâu (Uptime)
SELECT sqlserver_start_time FROM sys.dm_os_sys_info;

2. PostgreSQL: Kiểm tra cấu hình bộ nhớ

SQL
SHOW shared_buffers; -- Thường là 128MB (mặc định) -> Cần tuning ngay
SHOW work_mem;       -- Bộ nhớ cho sort/hash trên mỗi query
SHOW maintenance_work_mem; -- Bộ nhớ cho lệnh VACUUM, CREATE INDEX

3. Oracle (Để so sánh):

SQL
SHOW SGA;
SELECT * FROM v$pgastat;

3. Tóm tắt nội dung Module 2

  • SQL Server: Anh không cần cấu hình quá nhiều file tham số như Oracle (init.ora/spfile). Nó tự động quản lý RAM rất tốt ("Dynamic Memory"). Tuy nhiên, BẮT BUỘC phải set giới hạn Max Server Memory để không ăn hết RAM của hệ điều hành.

  • PostgreSQL: Không tự động quản lý tốt như SQL Server. Anh phải tính toán kỹ tham số shared_buffers (thường set 25% RAM) và dựa vào OS để cache phần còn lại.

  • Tiến trình: Oracle/Postgres là "Nhiều Process", SQL Server/MySQL là "Một Process, Nhiều Thread".


4. Câu hỏi ôn tập

  1. Hỏi: Tại sao PostgreSQL thường chỉ cấu hình shared_buffers khoảng 25% RAM tổng, trong khi Oracle/SQL Server chiếm tới 80%?

    • Đáp: Vì PostgreSQL dựa vào cơ chế cache của hệ điều hành (OS File System Cache) để lưu trữ dữ liệu nóng, thay vì tự quản lý toàn bộ như Oracle/SQL Server.

  2. Hỏi: Nếu SQL Server báo lỗi "Out of Memory" nhưng Task Manager thấy RAM vẫn còn, nguyên nhân có thể là gì?

    • Đáp: Có thể do cấu hình Max Server Memory quá thấp, hoặc phân mảnh bộ nhớ (Memory Fragmentation) bên trong vùng nhớ ảo.

  3. Hỏi: Tiến trình nào trong SQL Server đóng vai trò tương tự DBWn (Database Writer) của Oracle?

    • Đáp: Checkpoint Process và Lazy Writer.

  4. Hỏi: Trong kiến trúc Thread-based (SQL Server), nếu 1 Thread bị crash, điều gì có thể xảy ra?

    • Đáp: Có nguy cơ làm crash toàn bộ tiến trình SQL Server (Instance bị tắt đột ngột), dù cơ chế bảo vệ ngày nay đã rất tốt.

  5. Hỏi: work_mem trong PostgreSQL tương đương với vùng nhớ nào trong Oracle?

    • Đáp: Tương đương với PGA (Sort Area / Hash Area) - vùng nhớ riêng cho mỗi phiên làm việc để sắp xếp dữ liệu.


5. Bài tập thực hành

Đề bài:

  1. Trên SQL Server, hãy viết lệnh cấu hình giới hạn RAM tối đa cho Instance là 4GB (4096 MB).

  2. Trên PostgreSQL, lệnh nào dùng để load lại cấu hình sau khi sửa file postgresql.conf mà không cần restart database?

Đáp án:

1. SQL Server:

SQL
-- Phải bật chế độ cấu hình nâng cao trước
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;

-- Set RAM tối đa 4096 MB
EXEC sp_configure 'max server memory (MB)', 4096;
RECONFIGURE; -- Lệnh này áp dụng ngay lập tức mà không cần restart

2. PostgreSQL:

SQL
SELECT pg_reload_conf();
-- Hoặc chạy lệnh từ OS: pg_ctl reload
=============================
TƯ VẤN: Click Here hoặc Hotline/Zalo 090.29.12.888
=============================
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