Kiến Trúc MySQL
8/22/2025
Kiến Trúc MySQL
Giới thiệu
MYSQL Architecture mô tả cách mà những component trong mysql tương tác với nhau. Về cơ bản thì MYSQL Architecture là một hệ thống client - server system. Với Client là chỉ các ứng dụng kết nối tới Máy chủ cơ sở dữ liệu MySQL. Và server system chính là Máy chủ cơ sở dữ liệu MySQL. MYSQL Architecture sẽ bao gồm các thành phần chính sau:
- Application Layer (layer 1)
- MySQL Server layer (layer 2)
- Storage Engine Layer (layer 3)
I. Application Layer
Application Layer chính là lớp trên cùng nhất trong kiến trúc MySQL. Đây là nơi client và user dùng tương tác với MySQL RDBMS. Một số dịch vụ được cung cấp bên dưới: connection handling, authentication, security.
Có ba thành phần chính trong lớp này là:
- Administrators: sử dụng các tiện ích và giao diện quản trị khác nhau như mysqladmin thực hiện các tác vụ như tắt máy chủ và tạo hoặc hủy cơ sở dữ liệu, mysqldump để sao lưu cơ sở dữ liệu hoặc sao chép cơ sở dữ liệu sang một máy chủ khác.
- Clients: giao tiếp với MySQL thông qua các giao diện và tiện ích khác nhau như MySQL API. MySQL API gửi truy vấn đến máy chủ dưới dạng một chuỗi các mã thông báo.
- Query Users: truy vấn tương tác với MySQL RDBMS thông qua giao diện truy vấn là mysql.
a) Connection handling
Khi một client kết nối với server, Client sẽ nhận được thread riêng cho kết nối của nó. Tất cả các truy vấn từ client đó được thực thi trong thread được chỉ định đó. Thread được lưu trong bộ nhớ cache của máy chủ, vì vậy chúng không cần phải tạo và hủy mỗi khi có kết nối mới.
Để quản lý số kết nối thì mysql có cung cấp cho ta biến max_connection.
b) Authentication
Bất cứ khi nào client kết nối với MySQL server, máy chủ sẽ thực hiện xác thực ở phía máy chủ. Việc xác thực dựa trên username, password và host của client.
root@localhost root: username của Client. localhost: tên host
c) Security
Sau khi Client được kết nối thành công với MySQL Server, server sẽ kiểm tra xem client đó có đặc quyền đưa ra các truy vấn nhất định đối với máy chủ MySQL
II. MYSQL Server layer
Lớp này đảm nhất tất cả các chức năng logic của hệ thống mysql RDBMS, Nó còn được ví như bộ não của mysql. Lớp logic của MySQL được chia thành các thành phần phụ khác nhau, được đưa ra dưới đây:
- MySQL services and utilities.
- SQL Interface.
- SQL Parser.
- Optimizer.
Caches.
1. MySQL services and utilities
Mysql cung cấp nhiều loại dịch vụ và tiện ích. Đây là một trong những lý do chính cho sự phổ biến của MySQL. Lớp này cung cấp các dịch vụ và tiện ích để quản trị và bảo trì hệ thống MySQL, một số trong số chúng được đề cập dưới đây:
- Backup & recovery.
- Security.
- Replication.
- Cluster.
- Partitioning.
- Workbench.
a) Backup & recovery
Có một điều quan trọng là phải sao lưu cơ sở dữ liệu để bạn có thể khôi phục dữ liệu của mình và chạy lại trong trường hợp xảy ra sự cố, chẳng hạn như sự cố hệ thống, lỗi phần cứng hoặc người dùng xóa nhầm dữ liệu. Bản sao lư cũng rất cần thiết như một biện pháp bảo vệ trước khi nâng cấp cài đặt MySQL và chúng có thể được sử dụng để chuyển cài đặt MySQL sang hệ thống khác hoặc thiết lập máy chủ bản sao.
b) Security
MySQL sử dụng bảo mật dựa trên Danh sách kiểm soát truy cập (ACL) cho tất cả các kết nối, truy vấn và các hoạt động khác mà người dùng có thể cố gắng thực hiện. Ngoài ra còn có hỗ trợ cho các kết nối được mã hóa SSL giữa máy khách và máy chủ MySQL.
c) Replication
Replication MySQL là một quá trình cho phép dữ liệu từ một máy chủ cơ sở dữ liệu MySQL (máy chủ) được sao chép tự động sang một hoặc nhiều máy chủ cơ sở dữ liệu MySQL (máy chủ). Nghe có thể hơi giống phần Backup & recovery. Nhưng không phải Replication thường được sử dụng để lan truyền quyền truy cập đọc trên nhiều máy chủ, để có khả năng mở rộng. Mặc dù nó cũng có thể được sử dụng cho các mục đích khác như chuyển đổi dự phòng hoặc phân tích dữ liệu trên máy chủ để không làm quá tải máy chủ.
d) Cluster
MySQL Cluster là cơ sở dữ liệu phân tán kết hợp khả năng mở rộng liên tục và tính sẵn sàng cao. Nó cung cấp truy cập thời gian thực trong bộ nhớ với sự nhất quán về tiến trình xử lý trên các bộ dữ liệu phân tán và phân vùng. Nó được thiết kế cho các ứng dụng quan trọng. MySQL Cluster có bản sao giữa các cụm (Cluster) trên nhiều trang web địa lý được tích hợp sẵn. MySQL Cluster được chứng minh hàng ngày trong các hệ thống phục vụ hàng tỷ người dùng. Nó được sử dụng trong nhiệm vụ quan trọng, ứng dụng cốt lõi của mạng điện thoại di động, hệ thống xác thực và trò chơi nền tảng với khối lượng dữ liệu bùng nổ và lượng người dùng tải.
e) Partitioning
Mysql Partitioning theo đúng như tên của nó là việc phân chia một table thành những phần nhỏ theo một logic nhất định, được phân biệt bằng key, key này thường là tên column trong table.
f) Workbench
MySQL Workbench là một công cụ trực quan hợp nhất dành cho database architects, developer và DBA. MySQL Workbench cung cấp data modeling, SQL development và các công cụ quản trị toàn diện để cấu hình máy chủ, quản trị người dùng, sao lưu và hơn thế nữa. MySQL Workbench có sẵn trên Windows, Linux và Mac OS.
2. SQL Interface
Structured Query Language (SQL) là một ngôn ngữ truy vấn, được sử dụng để truy vấn máy chủ MySQL. Nó là một công cụ để tương tác giữa người dùng máy khách MySQL và máy chủ. Một số thành phần SQL Interface :
- Data Manipulation Language (DML).
- Data Definition Language (DDL).
- Stored Procedures.
- Views.
- Triggers.
3. Parser
Máy chủ MySQL nhận các truy vấn ở định dạng SQL. Sau khi nhận được một truy vấn, trước tiên nó cần được phân tích cú pháp. Quá trình này được gọi tắt là Parser. MySQL phân tích cú pháp các truy vấn để tạo cấu trúc bên trong (Parser tree). MySQL parser hoạt động như một trình biên dịch truyền đơn. Theo nội bộ MySQL, cấu trúc trình phân tích cú pháp được đưa ra bên dưới.
- Lexical analysis (phân tích từ vựng): Ở gian đoạn này các câu truy vấn sẽ được chia thành các
tokensvà các thành phần không thể chia (ví dụ như tên cột, tên bảng,..). Đây cũng là giai đoạn đầu tiên của quá trình. - Syntactic analysis (phân tích cú pháp): phân tích ngữ nghĩa (đảm bảo rằng những câu này có ý nghĩa) và tạo code (cho trình biên dịch) . Tất cả chúng đều được thực hiện cùng một lúc, trong giai đoạn code.
Cuối cùng, một Parser tree được tạo ra, bây giờ là công việc của Optimizer.
4. Optimizer
Sau khi tạo Parser tree nội bộ, MySQL áp dụng nhiều kỹ thuật tối ưu hóa khác nhau. Các kỹ thuật này có thể bao gồm, viết lại truy vấn, thứ tự quét các bảng và chọn các index phù hợp để sử dụng. Trên thực tế, bạn có thể yêu cầu máy chủ giải thích các khía cạnh khác nhau của việc tối ưu hóa.
5. Caches
MySQL cache (bộ đệm truy vấn) lưu trữ các bộ kết quả hoàn chỉnh cho các câu lệnh SELECT . Trước khi Parser truy vấn, máy chủ MySQL tham khảo bộ đệm truy vấn. Nếu bất kỳ client nào đưa ra một truy vấn giống hệt với một truy vấn đã có trong bộ nhớ cache, máy chủ chỉ cần bỏ qua parser, optimizer và thậm chí là thực thi, nó chỉ đơn giản là hiển thị đầu ra từ bộ nhớ cache.
MySQL cache có thể hữu ích trong môi trường mà bạn có các bảng không thường xuyên thay đổi và máy chủ nhận được nhiều truy vấn giống nhau.
III. Storage Engine Layer
Tính năng Storage Engine có thể làm cho MySQL trở thành lựa chọn độc nhất và ưa thích của hầu hết các developer. MySQL cho phép chúng ta lựa chọn các công cụ lưu trữ khác nhau cho các tình huống và yêu cầu khác nhau. Danh sách các công cụ lưu trữ được hỗ trợ được đề cập bên dưới.
- MyISAM.
- InnoDB.
- Federated.
- Mrg_MyISAM.
- Blackhole.
- CSV.
- Memory.
- Archive.
- Performance_schema.