CFSDN nhấn mạnh vào việc tạo ra giá trị thông qua mã nguồn mở. Chúng tôi cam kết xây dựng một nền tảng chia sẻ tài nguyên để mọi người làm CNTT có thể tìm thấy thế giới tuyệt vời của riêng mình tại đây.
Bài đăng trên blog CFSDN Getting Started with MySQL - Concepts này được tác giả thu thập và sắp xếp. Nếu bạn quan tâm đến bài viết này, vui lòng thích nó.
1. Nó là gì?
MySQL là hệ thống quản lý cơ sở dữ liệu quan hệ phổ biến nhất. Về mặt ứng dụng WEB, MySQL là một trong những phần mềm ứng dụng RDBMS (Hệ thống quản lý cơ sở dữ liệu quan hệ) tốt nhất.
1.1 Hệ quản trị cơ sở dữ liệu quan hệ (RDBMS)
Các tính năng của RDBMS (Hệ quản trị cơ sở dữ liệu quan hệ):
1. Dữ liệu xuất hiện dưới dạng bảng.
2. Mỗi dòng chứa nhiều tên bản ghi khác nhau.
3. Mỗi cột là trường dữ liệu tương ứng với tên bản ghi.
4. Nhiều hàng và cột tạo nên một biểu mẫu.
5. Cơ sở dữ liệu được tạo thành từ nhiều biểu mẫu.
1.2 Cơ sở dữ liệu MySQL
MySQL là một hệ thống quản lý cơ sở dữ liệu quan hệ được phát triển bởi công ty MySQL AB của Thụy Điển và hiện thuộc sở hữu của Oracle. MySQL là một hệ thống quản lý cơ sở dữ liệu quan hệ lưu trữ dữ liệu trong các bảng riêng biệt thay vì đặt tất cả dữ liệu vào một kho lưu trữ lớn, giúp tăng tốc độ và tính linh hoạt.
- MySQL là mã nguồn mở và hiện là sản phẩm của Oracle.
- MySQL hỗ trợ cơ sở dữ liệu rất lớn. Có thể xử lý cơ sở dữ liệu lớn với hàng chục triệu bản ghi.
- MySQL sử dụng ngôn ngữ dữ liệu SQL chuẩn.
- MySQL có thể chạy trên nhiều hệ thống và hỗ trợ nhiều ngôn ngữ. Các ngôn ngữ lập trình này bao gồm C, C++, Python, Java, Perl, PHP, Eiffel, Ruby và Tcl, cùng nhiều ngôn ngữ khác.
- MySQL hỗ trợ tốt cho PHP, đây hiện là ngôn ngữ phát triển web phổ biến nhất.
- MySQL hỗ trợ các cơ sở dữ liệu và kho dữ liệu lớn với 50 triệu bản ghi. Tệp bảng tối đa được hỗ trợ bởi hệ thống 32 bit là 4 GB và tệp bảng tối đa được hỗ trợ bởi hệ thống 64 bit là 8 TB.
- MySQL có thể tùy chỉnh và sử dụng giao thức GPL. Bạn có thể sửa đổi mã nguồn để phát triển hệ thống MySQL của riêng bạn.
2. Cơ chế làm việc
2.1 Sơ đồ kiến trúc tổng thể (kiến trúc C/S)

Một bộ công cụ phổ biến để kết nối với máy chủ MySQL.
Phiên bản MySQL, tiến trình máy chủ MySQL thực sự cung cấp các chức năng lưu trữ dữ liệu và xử lý dữ liệu.
Chương trình nền của máy chủ MySQL chạy ở chế độ nền. Nó quản lý các yêu cầu của khách hàng. mysqld là một tiến trình đa luồng cho phép nhiều kết nối phiên, kết nối lắng nghe cổng và quản lý các phiên bản MySQL.
Không gian bộ nhớ mà MySQL yêu cầu là động, chẳng hạn như innodb_buffer_pool_size (từ 5.7.5), key_buffer_size. Mỗi phiên có một kế hoạch thực thi duy nhất và chúng ta chỉ có thể chia sẻ các tập dữ liệu trong cùng một phạm vi phiên.
Mỗi kết nối máy khách được chỉ định một phiên, được phân bổ và tái sử dụng một cách động. Được sử dụng để xử lý truy vấn, mỗi phiên đều có một bộ đệm cùng một lúc. Mỗi phiên được thực thi như một luồng.
Cú pháp câu lệnh SQL được phát hiện và SQL_ID được tạo cho mỗi câu lệnh SQL. Xác thực người dùng cũng diễn ra ở giai đoạn này.
Tạo kế hoạch thực hiện hiệu quả (tùy thuộc vào công cụ lưu trữ). Nó sẽ viết lại truy vấn. Ví dụ: InnoDB có bộ đệm dùng chung, do đó trình tối ưu hóa sẽ trích xuất từ dữ liệu được lưu trữ đệm trước. Sử dụng trình tối ưu hóa thống kê bảng sẽ tạo ra một kế hoạch thực hiện cho truy vấn SQL. Việc kiểm tra quyền của người dùng cũng diễn ra ở giai đoạn này.
Lưu trữ thông tin siêu dữ liệu và số liệu thống kê của đối tượng.
Chia sẻ cùng một câu lệnh truy vấn trong bộ nhớ. Nếu truy vấn tương tự được gửi đến bộ đệm, máy chủ MySQL sẽ lấy kết quả trực tiếp từ bộ đệm. Bộ nhớ đệm được chia sẻ giữa các phiên, do đó tập kết quả được tạo cho một máy khách có thể được máy khách khác sử dụng. Bộ đệm truy vấn dựa trên SQL_ID. Viết câu lệnh SELECT vào chế độ xem là một ví dụ điển hình về lưu trữ truy vấn.
Chỉ mục bảng bộ nhớ đệm. Khóa MySQL là chỉ mục. Nếu kích thước dữ liệu chỉ mục nhỏ, nó sẽ lưu trữ cấu trúc chỉ mục và các nút lá (nơi lưu trữ dữ liệu chỉ mục). Nếu chỉ mục lớn, nó sẽ chỉ lưu trữ cấu trúc chỉ mục, thường được sử dụng bởi công cụ lưu trữ MyISAM.
2.2 Giao thức mạng
2.2.1 Giao thức truyền thông
Tính đến MySQL 5.7, có năm loại, cụ thể là TCP/IP, TLS/SSL, Unix Sockets, Shared Memory và Named pipes. Hãy cùng xem xét sự khác biệt giữa năm loại này:
Đường |
Được bật theo mặc định |
Hệ thống hỗ trợ |
Chỉ hỗ trợ máy này |
Làm thế nào để bật nó lên |
Cấu hình tham số |
Giao thức TCP/IP |
Đúng |
Tất cả các hệ thống |
KHÔNG |
--skip-networking=có/không |
--cổng--địa-chỉ-liên-kết |
TLS/SSL |
Đúng |
Tất cả các hệ thống (dựa trên TCP/IP) |
KHÔNG |
–ssl=có/không |
--ssl-* tùy chọn |
Ổ cắm Unix |
Đúng |
Hệ thống giống Unix |
Đúng |
--socket= để đóng |
--socket=đường dẫn ổ cắm |
Bộ nhớ chia sẻ |
KHÔNG |
Cửa sổ |
Đúng |
–shared-memory=bật/tắt. |
--tên-cơ-sở-bộ-nhớ-chia-sẻ= |
Ống có tên |
KHÔNG |
Cửa sổ |
KHÔNG |
--enable-named-pipe=bật/tắt |
--ổ cắm= |
2.2.2 Định dạng tin nhắn
Tiêu đề giao thức:
Mỗi tiêu đề giao thức có tổng cộng 4 byte.
- Chiều dài dữ liệu gói
Ba byte đầu tiên biểu thị độ dài của phần dữ liệu (không bao gồm tiêu đề giao thức). Độ dài tối đa có thể được biểu diễn bằng ba byte là 16M-1 (2^24 - 1). Nếu phần dữ liệu được gửi lớn hơn độ dài này, nó cần được giải nén, với mỗi độ dài 16M-1 là một gói. Khi đầu nhận nhận được dữ liệu, nếu phát hiện gói tin có độ dài là 16M-1 thì có nghĩa là vẫn còn dữ liệu cần theo dõi, cho đến khi nhận được gói dữ liệu có độ dài <16M-1. Điều này có nghĩa là độ dài dữ liệu của gói tin cuối cùng có thể là 0.
Số seri
1 byte, bắt đầu từ 0 và tăng dần theo đơn vị. Khi một lệnh SQL mới được gửi đi và cơ sở dữ liệu được kết nối lại, giá trị sẽ bị xóa thành 0 (hàm sql/Net_serv.cc: net_clear).
Kiểu dữ liệu:
Ngoài các số nguyên hoặc chuỗi có độ dài cố định, còn có một số loại dữ liệu khác. (Lưu trữ và truy cập dữ liệu trường có độ dài cố định: include/Mybyte_order.h: giá trị lưu trữ intstore truy xuất giá trị: xử lý nhiều byte intkorr dựa trên ưu tiên little-endian).
?
1
2
3
4
5
6
7
8
9
10
|
1
. Số nguyên có độ dài thay đổi
Truy cập vào loại dữ liệu này nằm trong hàm: sql-common/Pack.c: Lưu trữ số nguyên: net_store_length Đọc số nguyên: net_field_length
Nếu giá trị <
251
, trực tiếp sử dụng một byte để lưu trữ giá trị này.
nếu như
251
<=giá trị<
2
^
16
, sử dụng
3
byte được lưu trữ, byte đầu tiên là
252
, Ngoài ra
2
Byte để lưu trữ nội dung số nguyên
nếu như
2
^
16
<=giá trị<
2
^
hai mươi bốn
,sử dụng
4
Lưu trữ byte, byte đầu tiên là
252
,Ngoài ra
3
Byte để lưu trữ nội dung số nguyên
nếu như
2
^
hai mươi bốn
<=giá trị<
2
^
64
,sử dụng
9
Lưu trữ byte, byte đầu tiên
255
,Ngoài ra
8
Byte lưu trữ nội dung số nguyên
Nếu byte đầu tiên là
251
, chỉ ra rằng trường số nguyên là
vô giá trị
Nếu byte đầu tiên là
255
, chỉ ra rằng byte này là byte đầu tiên của gói ERR
2
. Chuỗi có độ dài có thể mã hóa
Độ dài của chuỗi được mã hóa thành một số nguyên có độ dài thay đổi.
|
2.3 Cú pháp SQL
SQL có thể được chia thành hai phần: Ngôn ngữ thao tác dữ liệu (DML) và Ngôn ngữ định nghĩa dữ liệu (DDL). SQL (Ngôn ngữ truy vấn có cấu trúc) là cú pháp để thực hiện truy vấn. Nhưng ngôn ngữ SQL cũng bao gồm cú pháp để cập nhật, chèn và xóa bản ghi.
Các hướng dẫn truy vấn và cập nhật tạo nên phần DML của SQL:
SELECT - Lấy dữ liệu từ bảng cơ sở dữ liệu UPDATE - Cập nhật dữ liệu trong bảng cơ sở dữ liệu DELETE - Xóa dữ liệu khỏi bảng cơ sở dữ liệu INSERT INTO - Chèn dữ liệu vào bảng cơ sở dữ liệu Phần Ngôn ngữ định nghĩa dữ liệu (DDL) của SQL cung cấp cho chúng ta khả năng tạo hoặc xóa bảng. Chúng ta cũng có thể định nghĩa chỉ mục (khóa), chỉ định liên kết giữa các bảng và áp đặt ràng buộc giữa các bảng.
Các câu lệnh DDL quan trọng nhất trong SQL
CREATE DATABASE - tạo cơ sở dữ liệu mớiALTER DATABASE - sửa đổi cơ sở dữ liệuCREATE TABLE - tạo bảng mớiALTER TABLE - thay đổi (sửa đổi) bảng cơ sở dữ liệuDROP TABLE - xóa bảngCREATE INDEX - tạo chỉ mục (khóa tìm kiếm)DROP INDEX - xóa chỉ mục.
3. Tóm tắt
Bài viết này giải thích MySQL là gì theo góc nhìn macro và cách sử dụng, và sẽ được thảo luận sâu hơn sau. Xin hãy chú ý nhiều hơn tới nội dung của tôi.
Liên kết gốc: https://blog.csdn.net/goodjobman/article/details/117730771.
Cuối cùng, bài viết này về MySQL dành cho người mới bắt đầu - các khái niệm đã kết thúc tại đây. Nếu bạn muốn biết thêm về MySQL dành cho người mới bắt đầu - các khái niệm, vui lòng tìm kiếm các bài viết trên CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .
Tôi là một lập trình viên xuất sắc, rất giỏi!