Công cụ lưu trữ trong mysql ở đâu?

Công cụ lưu trữ [thành phần phần mềm cơ bản] là các thành phần MySQL, có thể xử lý các thao tác SQL cho các loại bảng khác nhau để lưu trữ và quản lý thông tin trong cơ sở dữ liệu. InnoDB chủ yếu được sử dụng công cụ lưu trữ đa năng và kể từ MySQL 5. 5 trở lên nó là engine mặc định. Có nhiều công cụ lưu trữ có sẵn trong MySQL và chúng được sử dụng cho các mục đích khác nhau

Phiên bản. mysql 5. 6

Công cụ lưu trữ của MySQL

Động cơMô tảInnoDB

Đây là công cụ lưu trữ mặc định cho MySQL 5. 5 và cao hơn. Nó cung cấp các bảng giao dịch an toàn [tuân thủ ACID], hỗ trợ các ràng buộc toàn vẹn tham chiếu FOREIGN KEY. Nó hỗ trợ các khả năng cam kết, khôi phục và khôi phục sự cố để bảo vệ dữ liệu. Nó cũng hỗ trợ khóa cấp hàng. Đó là "số lần đọc không khóa nhất quán" tăng hiệu suất khi được sử dụng trong môi trường nhiều người dùng. Nó lưu trữ dữ liệu trong các chỉ mục được nhóm làm giảm I/O cho các truy vấn dựa trên khóa chính

MyISAMCông cụ lưu trữ này, quản lý các bảng không giao dịch, cung cấp khả năng lưu trữ và truy xuất tốc độ cao, hỗ trợ tìm kiếm toàn văn. MEMORY Cung cấp các bảng trong bộ nhớ, trước đây gọi là HEAP. Nó chia sẻ tất cả dữ liệu trong RAM để truy cập nhanh hơn so với lưu trữ dữ liệu trên đĩa. Hữu ích để tra cứu nhanh tài liệu tham khảo và dữ liệu giống hệt nhau khác. HỢP NHẤTNhóm nhiều bảng MyISAM tương tự để được coi là một bảng duy nhất, có thể xử lý các bảng không giao dịch, được bao gồm theo mặc định. VÍ DỤBạn có thể tạo bảng với công cụ này, nhưng không thể lưu trữ hoặc tìm nạp dữ liệu. Mục đích của việc này là dạy cho các nhà phát triển về cách viết một công cụ lưu trữ mới. ARCHIVEĐược sử dụng để lưu trữ một lượng lớn dữ liệu, không hỗ trợ lập chỉ mục. CSVLưu trữ dữ liệu ở định dạng Giá trị được phân tách bằng dấu phẩy trong tệp văn bản. BLACKHOLE Chấp nhận dữ liệu để lưu trữ nhưng luôn trả về trống. FEDERATEDLưu trữ dữ liệu trong cơ sở dữ liệu từ xa

Chủ đề khác

Danh sách Công cụ lưu trữ được cài đặt MySQL của bạn hỗ trợ

Đặt công cụ lưu trữ

Sự khác biệt giữa InnoDB và MyISAM

Danh sách Công cụ lưu trữ được cài đặt MySQL của bạn hỗ trợ

Lệnh sau hiển thị thông tin trạng thái của các công cụ lưu trữ của máy chủ

mysql> SHOW ENGINES;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine [anything you write to it disappears] | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set [0.28 sec]

Đặt công cụ lưu trữ

Trong CREATE TABLE STATEMENT, bạn có thể thêm tùy chọn bảng ENGINE để đề cập đến một công cụ lưu trữ. Xem các câu lệnh CREATE TABLE sau đây, trong đó các công cụ khác nhau đã sử dụng

CREATE TABLE t1 [i INT] ENGINE = INNODB;
CREATE TABLE t2 [i INT] ENGINE = CSV;
CREATE TABLE t3 [i INT] ENGINE = MEMORY;

Trong MySQL5. 6, công cụ mặc định là InnoDB. Công cụ lưu trữ mặc định được sử dụng nếu bạn không đề cập đến tên công cụ khác trong tùy chọn ENGINE. Bạn có thể chỉ định công cụ mặc định bằng cách sử dụng tùy chọn khởi động máy chủ --default-storage-engine [Định dạng dòng lệnh] hoặc bằng cách đặt tùy chọn công cụ lưu trữ mặc định trong tệp my. tập tin cấu hình cnf

Bạn có thể đặt công cụ lưu trữ mặc định cho phiên hiện tại bằng cách đặt biến default_storage_engine bằng lệnh set

SET default_storage_engine=ARCHIVE;

Nếu bạn muốn chuyển đổi một bảng từ công cụ lưu trữ này sang công cụ lưu trữ khác, hãy sử dụng câu lệnh ALTER TABLE. Xem tuyên bố sau

ALTER TABLE table1 ENGINE = InnoDB;

Để lưu trữ các định nghĩa bảng và cột cho một bảng mới, MySQL luôn tạo một. tập tin frm. Tùy thuộc vào công cụ lưu trữ, chỉ mục và dữ liệu của bảng có thể được lưu trữ trong một hoặc nhiều tệp khác. Máy chủ tạo ra các. frm cao hơn mức công cụ lưu trữ

mysql. Công cụ lưu trữ InnoDB

InnoDB là một công cụ lưu trữ cho MySQL cân bằng giữa độ tin cậy cao và hiệu suất cao. Kể từ MySQL 5. 5 trở lên, nó là công cụ lưu trữ mặc định

Các tính năng của công cụ lưu trữ InnoDB

Giới hạn lưu trữ 64TBGiao dịchCóKhóa độ chi tiếtRowMVCC [Kiểm soát đồng thời đa phiên bản]CóHỗ trợ loại dữ liệu không gian địa lýCóHỗ trợ lập chỉ mục không gian địa lýKhôngChỉ mục cây BCóChỉ mục cây TKhôngChỉ mục bămKhôngChỉ mục tìm kiếm toàn văn bảnCóChỉ mục cụm dữ liệuCóBộ đệm dữ liệuCóBộ nhớ đệm chỉ mụcCóDữ liệu nénCóHỗ trợ cơ sở dữ liệu cụmCóKhôngHỗ trợ cơ sở dữ liệu cụmCóKhôngHỗ trợ khóa ngoạiCóSao lưu / phục hồi tại thời điểm CóCó Thống kê truy vấn cho từ điển bộ đệmCóCập nhật

Ưu điểm của công cụ lưu trữ InnoDB

  • InnoDB có hiệu suất tối đa khi xử lý khối lượng dữ liệu lớn
  • Các hoạt động DML của nó [thêm, cập nhật và xóa dữ liệu] tương thích với mô hình ACID [nguyên tử, nhất quán, tách biệt và bền vững], với các giao dịch có khả năng cam kết, khôi phục và khôi phục sự cố để bảo vệ dữ liệu người dùng
  • Hệ thống khóa cấp độ hàng [khóa được đặt trên một bản ghi [hàng]] giúp tăng hiệu suất và tính đồng thời của nhiều người dùng. Tất cả các khóa InnoDB do một giao dịch nắm giữ sẽ được giải phóng khi giao dịch được thực hiện hoặc bị hủy bỏ
  • Các bảng InnoDB sắp xếp dữ liệu của bạn trên đĩa để tối ưu hóa các truy vấn dựa trên các khóa chính
  • InnoDB hỗ trợ các ràng buộc FOREIGN KEY để duy trì tính toàn vẹn của dữ liệu. Do đó, tất cả các thao tác chèn, cập nhật và xóa đều được kiểm tra để đảm bảo chúng không dẫn đến sự không nhất quán giữa các bảng khác nhau
  • Có thể trộn các bảng InnoDB với các bảng từ các công cụ lưu trữ MySQL khác trong cùng một câu lệnh. Ví dụ: bạn có thể sử dụng thao tác nối để kết hợp dữ liệu từ các bảng InnoDB và MEMORY trong một truy vấn duy nhất

Tạo bảng InnoDB.
Sử dụng câu lệnh CREATE TABLE để tạo bảng InnoDB mà không có mệnh đề đặc biệt nào. Kể từ MySQL 5. 5, nó là công cụ lưu trữ MySQL mặc định. Trong MySQL5. 6, đưa ra câu lệnh CREATE TABLE không có mệnh đề ENGINE= sẽ tạo một bảng InnoDB. Đây là một ví dụ.

mysql> CREATE TABLE table1 [col1 INT, col2 CHAR[30], PRIMARY KEY [col1]];
Query OK, 0 rows affected [1.11 sec]

mysql> DESC table1;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| col1  | int[11]  | NO   | PRI | 0       |       |
| col2  | char[30] | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
2 rows in set [0.21 sec]

Câu lệnh SHOW TABLE STATUS sau đây hiển thị các thuộc tính của bảng [thuộc cơ sở dữ liệu 'hướng dẫn']

mysql> SHOW TABLE STATUS FROM tutorial;
+--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+
| Name   | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time | Check_time | Collation       | Checksum | Create_options | Comment |
+--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+
| table1 | InnoDB |      10 | Compact    |    0 |              0 |       16384 |               0 |            0 |         0 |           NULL | 2014-02-14 12:08:34 | NULL        | NULL       | utf8_general_ci |     NULL |                |         |
+--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+
1 row in set [0.00 sec]

Xử lý AUTO_INCREMENT trong InnoDB

InnoDB cung cấp một phương thức giúp cải thiện khả năng mở rộng và hiệu suất của các câu lệnh SQL chèn các hàng vào các bảng có các cột AUTO_INCREMENT. Để sử dụng cơ chế AUTO_INCREMENT với bảng InnoDB, cột AUTO_INCREMENT [ví dụ col1] phải được xác định là một phần của chỉ mục. Xem ví dụ sau

mysql> CREATE TABLE table1 [col1 INT[10] NOT NULL AUTO_INCREMENT, 
col2 CHAR[30], PRIMARY KEY [col1]];
Query OK, 0 rows affected [0.50 sec]

Xử lý các ràng buộc NGOẠI KHÓA trong InnoDB

MySQL hỗ trợ các khóa ngoại, cho phép bạn tham chiếu chéo dữ liệu có liên quan trên các bảng và các ràng buộc khóa ngoại, giúp giữ cho dữ liệu trải rộng này nhất quán. Các định nghĩa khóa ngoài cho các bảng InnoDB phải tuân theo các điều kiện sau

  • InnoDB cho phép khóa ngoại tham chiếu bất kỳ cột chỉ mục hoặc nhóm cột nào. Tuy nhiên, trong bảng được tham chiếu, phải có một chỉ mục trong đó các cột được tham chiếu được liệt kê là các cột đầu tiên theo cùng một thứ tự
  • InnoDB hiện không hỗ trợ khóa ngoại cho các bảng có phân vùng do người dùng xác định. Điều này có nghĩa là không có bảng InnoDB nào do người dùng phân vùng có thể chứa các tham chiếu khóa ngoài hoặc các cột được tham chiếu bởi khóa ngoài
  • InnoDB cho phép ràng buộc khóa ngoài tham chiếu khóa không phải là duy nhất. Đây là phần mở rộng InnoDB cho SQL tiêu chuẩn

giới hạn. bảng InnoDB

  • Tối đa 1017 cột được phép trong một bảng [được nêu trong MySQL 5. 6. 9 từ giới hạn trước đó là 1000]
  • Tối đa 64 chỉ mục phụ được phép trong một bảng. Chỉ mục phụ là một loại chỉ mục InnoDB đại diện cho một tập hợp con các cột trong bảng
  • Theo mặc định, khóa chỉ mục cho chỉ mục một cột có thể lên tới 767 byte. Giới hạn độ dài tương tự áp dụng cho bất kỳ tiền tố khóa chỉ mục nào
  • Độ dài khóa tối đa bên trong InnoDB là 3500 byte, nhưng bản thân MySQL hạn chế điều này ở mức 3072 byte [khóa chỉ mục kết hợp trong chỉ mục nhiều cột]
  • Độ dài hàng tối đa ngoại trừ các cột có độ dài thay đổi [VARBINARY, VARCHAR, BLOB và TEXT], là khoảng 8000 byte cho kích thước trang mặc định là 16KB
  • InnoDB bên trong hỗ trợ kích thước hàng lớn hơn 65.535 byte, nhưng bản thân MySQL áp đặt giới hạn kích thước hàng là 65.535 cho kích thước kết hợp của tất cả các cột
  • Kích thước không gian bảng tối đa là bốn tỷ trang cơ sở dữ liệu [64TB] và kích thước không gian bảng tối thiểu lớn hơn một chút so với 10MB

mysql. Công cụ lưu trữ MyISAM

Công cụ lưu trữ MyISAM dựa trên công cụ lưu trữ ISAM cũ hơn [hiện không khả dụng] nhưng có nhiều tiện ích mở rộng hữu ích

Các tính năng của công cụ lưu trữ MyISAM

Giới hạn lưu trữ256TBGiao dịchKhôngKhóa độ chi tiếtBảngMVCC [Kiểm soát đồng thời nhiều phiên bản]KhôngHỗ trợ loại dữ liệu không gian địa lýCóHỗ trợ lập chỉ mục không gian địa lýCóChỉ mục cây BCóChỉ mục cây TKhôngChỉ mục bămKhôngChỉ mục tìm kiếm toàn văn bảnCóChỉ mục cụm dữ liệuKhôngBộ đệm dữ liệuKhôngBộ đệm chỉ mụcCóDữ liệu nénCóHỗ trợ cơ sở dữ liệu cụmCóKhôngHỗ trợ cơ sở dữ liệu cụmKhôngHỗ trợ khóa ngoạiCóHỗ trợ sao lưu / phục hồi tại thời điểm CóHỗ trợ thống kê truy vấn cho từ điển bộ đệmCóCập nhật

Mỗi bảng MyISAM được lưu trữ trên đĩa trong ba tệp

  • Một. tệp frm lưu trữ định dạng bảng
  • Tệp dữ liệu có một. Tiện ích mở rộng MYD [MYData]
  • Tệp chỉ mục có một. Tiện ích mở rộng MYI [MY Index]

Tạo bảng MyISAM.
Sử dụng câu lệnh CREATE TABLE để tạo bảng am MyISAM với mệnh đề ENGINE. Kể từ MySQL 5. 6, cần sử dụng mệnh đề ENGINE để chỉ định công cụ lưu trữ MyISAM vì InnoDB là công cụ mặc định. Đây là một ví dụ.

mysql> CREATE TABLE table2 [col1 INT, col2 CHAR[30]] ENGINE = MYISAM;
Query OK, 0 rows affected [0.19 sec]

Câu lệnh SHOW TABLE STATUS sau đây hiển thị các thuộc tính của bảng [thuộc cơ sở dữ liệu 'hướng dẫn']

________số 8

Các đặc điểm chính của bảng MyISAM

  • Các tệp lớn có độ dài tệp lên tới 63 bit được hỗ trợ trên các hệ thống tệp và hệ điều hành hỗ trợ các tệp lớn
  • [232]2[1. 844E+19] được cho phép trong bảng MyISAM
  • Cho phép tối đa 64 số chỉ mục và 16 số cột trên mỗi chỉ mục
  • Độ dài khóa tối đa là 1000 byte
  • Hỗ trợ xử lý nội bộ một cột AUTO_INCREMENT trên mỗi bảng
  • Bạn có thể đặt tệp dữ liệu và tệp chỉ mục vào các thư mục khác nhau trên các thiết bị vật lý khác nhau để tăng tốc độ với các tùy chọn bảng DIRECTORY DỮ LIỆU và CHỈ MỤC để TẠO BẢNG
  • Các cột BLOB và TEXT có thể được lập chỉ mục
  • Giá trị NULL được phép trong các cột được lập chỉ mục. Điều này mất 0 đến 1 byte cho mỗi khóa
  • Mỗi cột ký tự có thể có một bộ ký tự khác nhau
  • Hỗ trợ cho một loại VARCHAR thực sự;
  • Các bảng có cột VARCHAR có thể có độ dài hàng cố định hoặc động
  • Tổng độ dài của các cột VARCHAR và CHAR trong một bảng có thể lên tới 64KB
  • Độ dài tùy ý Ràng buộc ĐỘC ĐÁO

Bảng MyISAM bị hỏng

Định dạng bảng MyISAM rất đáng tin cậy, nhưng trong một số trường hợp, bạn có thể nhận được các bảng bị hỏng nếu xảy ra bất kỳ sự kiện nào sau đây

  • Quá trình mysqld [Được gọi là Máy chủ MySQL] bị hủy giữa chừng khi ghi
  • Lỗi phần cứng
  • Xảy ra sự cố tắt máy tính bất ngờ
  • Sử dụng một chương trình bên ngoài để sửa đổi một bảng
  • Lỗi phần mềm trong mã MySQL hoặc MyISAM

mysql. CÔNG CỤ LƯU TRỮ BỘ NHỚ

Công cụ lưu trữ MEMORY tạo các bảng được lưu trữ trong bộ nhớ. Vì dữ liệu có thể bị hỏng do sự cố về phần cứng hoặc nguồn điện nên bạn chỉ có thể sử dụng các bảng này làm vùng làm việc tạm thời hoặc bộ nhớ đệm chỉ đọc cho dữ liệu được lấy từ các bảng khác. Khi máy chủ MySQL tạm dừng hoặc khởi động lại, dữ liệu trong bảng BỘ NHỚ sẽ bị mất

Các tính năng của công cụ lưu trữ BỘ NHỚ

Giới hạn lưu trữ RAMGiao dịchKhôngĐộ chi tiết khóaBảngMVCCKhôngHỗ trợ loại dữ liệu không gian địa lýKhôngHỗ trợ lập chỉ mục không gian địa lýKhôngChỉ mục cây BCóChỉ mục cây TKhôngChỉ mục HashCóChỉ mục tìm kiếm toàn văn bảnKhôngChỉ mục nhómKhôngBộ nhớ cache dữ liệuN/ABộ nhớ cache chỉ mụcN/ADữ liệu nénKhôngHỗ trợ cơ sở dữ liệu được mã hóaCóHỗ trợ cơ sở dữ liệu cụmCóHỗ trợ khóa ngoạiCóHỗ trợ sao lưu / phục hồi tại thời điểmCóHỗ trợ bộ nhớ cache truy vấnCóCập nhật thống kê cho từ điển dữ liệuCó

Tạo bảng NHỚ.
Sử dụng câu lệnh CREATE TABLE để tạo bảng am MEMORY với mệnh đề ENGINE. Kể từ MySQL 5. 6, cần sử dụng mệnh đề ENGINE để chỉ định công cụ lưu trữ BỘ NHỚ vì InnoDB là công cụ mặc định. Ví dụ sau đây cho thấy cách tạo và sử dụng bảng MEMORY.

mysql> SELECT * FROM hr.departments;
+---------------+----------------------+------------+-------------+
| DEPARTMENT_ID | DEPARTMENT_NAME      | MANAGER_ID | LOCATION_ID |
+---------------+----------------------+------------+-------------+
|            10 | Administration       |        200 |        1700 |
|            20 | Marketing            |        201 |        1800 |
|            30 | Purchasing           |        114 |        1700 |
|            40 | Human Resources      |        203 |        2400 |
|            50 | Shipping             |        121 |        1500 |
|            60 | IT                   |        103 |        1400 |
|            70 | Public Relations     |        204 |        2700 |
|            80 | Sales                |        145 |        2500 |
|            90 | Executive            |        100 |        1700 |
|           100 | Finance              |        108 |        1700 |
|           110 | Accounting           |        205 |        1700 |
|           120 | Treasury             |          0 |        1700 |
|- - - - - - - -|- - - - - - - - - - - |- - - - - - |- - - - - - -|
|- - - - - - - -|- - - - - - - - - - - |- - - - - - |- - - - - - -| 
+---------------+----------------------+------------+-------------+
27 rows in set [0.01 sec]

mysql> CREATE TABLE test7 ENGINE = MEMORY SELECT * FROM hr.departments;
Query OK, 27 rows affected [0.06 sec]
Records: 27  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM test7 WHERE LOCATION_ID>1700;
+---------------+------------------+------------+-------------+
| DEPARTMENT_ID | DEPARTMENT_NAME  | MANAGER_ID | LOCATION_ID |
+---------------+------------------+------------+-------------+
|            20 | Marketing        |        201 |        1800 |
|            40 | Human Resources  |        203 |        2400 |
|            70 | Public Relations |        204 |        2700 |
|            80 | Sales            |        145 |        2500 |
+---------------+------------------+------------+-------------+
4 rows in set [0.00 sec]

Câu lệnh SHOW TABLE STATUS sau đây hiển thị các thuộc tính của bảng [thuộc cơ sở dữ liệu 'hướng dẫn']

CREATE TABLE t1 [i INT] ENGINE = INNODB;
CREATE TABLE t2 [i INT] ENGINE = CSV;
CREATE TABLE t3 [i INT] ENGINE = MEMORY;
0

Xóa bảng NHỚ

CREATE TABLE t1 [i INT] ENGINE = INNODB;
CREATE TABLE t2 [i INT] ENGINE = CSV;
CREATE TABLE t3 [i INT] ENGINE = MEMORY;
1

chỉ mục. Công cụ lưu trữ BỘ NHỚ hỗ trợ cả chỉ mục HASH và BTREE. Thêm mệnh đề SỬ DỤNG, bạn có thể chỉ định mệnh đề này hoặc mệnh đề kia cho một chỉ mục nhất định. Xem các ví dụ sau

CREATE TABLE t1 [i INT] ENGINE = INNODB;
CREATE TABLE t2 [i INT] ENGINE = CSV;
CREATE TABLE t3 [i INT] ENGINE = MEMORY;
2

Khi nào nên sử dụng công cụ lưu trữ MEMORY

  • Các hoạt động liên quan đến dữ liệu tạm thời, không quan trọng như quản lý phiên hoặc bộ nhớ đệm
  • Lưu trữ trong bộ nhớ để truy cập nhanh và độ trễ thấp. Khối lượng dữ liệu có thể nằm gọn trong bộ nhớ mà không khiến hệ điều hành hoán đổi các trang bộ nhớ ảo
  • Theo mặc định, khóa chỉ mục cho chỉ mục một cột có thể lên tới 767 byte. Giới hạn độ dài tương tự áp dụng cho bất kỳ tiền tố khóa chỉ mục nào
  • Độ dài khóa tối đa bên trong InnoDB là 3500 byte, nhưng bản thân MySQL hạn chế điều này ở mức 3072 byte [khóa chỉ mục kết hợp trong chỉ mục nhiều cột]
  • Độ dài hàng tối đa ngoại trừ các cột có độ dài thay đổi [VARBINARY, VARCHAR, BLOB và TEXT], là khoảng 8000 byte cho kích thước trang mặc định là 16KB
  • InnoDB bên trong hỗ trợ kích thước hàng lớn hơn 65.535 byte, nhưng bản thân MySQL áp đặt giới hạn kích thước hàng là 65.535 cho kích thước kết hợp của tất cả các cột
  • Kích thước không gian bảng tối đa là bốn tỷ trang cơ sở dữ liệu [64TB] và kích thước không gian bảng tối thiểu lớn hơn một chút so với 10MB

mysql. Công cụ lưu trữ MERGE

Công cụ lưu trữ MERGE [còn được gọi là MRG_MyISAM] là một tập hợp các bảng MyISAM giống hệt nhau [thông tin chỉ mục và cột giống hệt nhau có cùng thứ tự] có thể được sử dụng làm bảng đơn. Bạn phải có các đặc quyền CHỌN, XÓA và CẬP NHẬT trên các bảng MyISAM mà bạn ánh xạ tới bảng MERGE

Tạo bảng HỢP NHẤT.
Để tạo bảng MERGE, bạn phải chỉ định tùy chọn UNION=[list-of-tables] [cho biết bảng MyISAM nào sẽ sử dụng] trong câu lệnh CREAE TABLE. Ví dụ sau lúc đầu ta tạo 3 bảng 2 hàng sau đó gộp lại thành 1 bảng dùng MERGE storage engine.

CREATE TABLE t1 [i INT] ENGINE = INNODB;
CREATE TABLE t2 [i INT] ENGINE = CSV;
CREATE TABLE t3 [i INT] ENGINE = MEMORY;
3

Câu lệnh SHOW TABLE STATUS sau đây hiển thị các thuộc tính của bảng [thuộc cơ sở dữ liệu 'hướng dẫn']

CREATE TABLE t1 [i INT] ENGINE = INNODB;
CREATE TABLE t2 [i INT] ENGINE = CSV;
CREATE TABLE t3 [i INT] ENGINE = MEMORY;
4

Vấn đề an ninh. Nếu người dùng có quyền truy cập vào bảng MyISAM, chẳng hạn như t1, thì người dùng đó có thể tạo bảng MERGE m1 truy cập vào t1. Tuy nhiên, nếu quản trị viên thu hồi đặc quyền của người dùng trên t1, người dùng có thể tiếp tục truy cập dữ liệu của t1 thông qua m1

mysql. Công cụ lưu trữ CSV

Công cụ lưu trữ CSV lưu trữ dữ liệu trong tệp văn bản sử dụng định dạng giá trị được phân tách bằng dấu phẩy và công cụ lưu trữ CSV luôn được biên dịch vào máy chủ MySQL. Máy chủ tạo một tệp định dạng bảng [. phần mở rộng frm] và tệp dữ liệu [. csv] trong thư mục cơ sở dữ liệu khi bạn tạo bảng CSV. Cả hai. frm và. tên tệp csv bắt đầu bằng tên bảng. Tệp dữ liệu là tệp văn bản thuần túy và công cụ lưu trữ lưu dữ liệu ở định dạng giá trị được phân tách bằng dấu phẩy. Ví dụ sau cho biết cách tạo và sử dụng bảng CSV

Đầu ra mẫu

CREATE TABLE t1 [i INT] ENGINE = INNODB;
CREATE TABLE t2 [i INT] ENGINE = CSV;
CREATE TABLE t3 [i INT] ENGINE = MEMORY;
5

Bạn có thể đọc, sửa đổi 'màu. CSV' bằng các ứng dụng bảng tính như Microsoft Excel hoặc StarOffice Calc

Hạn chế CSV

  • Không hỗ trợ lập chỉ mục
  • Không hỗ trợ phân vùng
  • Tất cả các cột phải có thuộc tính NOT NULL trong bảng CSV

Câu lệnh SHOW TABLE STATUS sau đây hiển thị các thuộc tính của bảng [thuộc cơ sở dữ liệu 'hướng dẫn']

CREATE TABLE t1 [i INT] ENGINE = INNODB;
CREATE TABLE t2 [i INT] ENGINE = CSV;
CREATE TABLE t3 [i INT] ENGINE = MEMORY;
6

mysql. Công cụ lưu trữ ARCHIVE

Công cụ lưu trữ ARCHIVE được sử dụng để lưu trữ một lượng lớn dữ liệu chưa lập chỉ mục trong một dung lượng rất nhỏ. Công cụ lưu trữ được bao gồm trong các bản phân phối nhị phân của MySQL. Để bật công cụ lưu trữ này [nếu bạn xây dựng MySQL từ nguồn], hãy gọi CMake bằng tùy chọn -DWITH_ARCHIVE_STORAGE_ENGINE. Khi bạn tạo một bảng ARCHIVE, máy chủ sẽ tạo một tệp định dạng bảng [. phần mở rộng frm] trong thư mục cơ sở dữ liệu

Các tính năng của công cụ lưu trữ ARCHIVE

Giới hạn lưu trữ Không có Giao dịch Không Độ chi tiết khóaBảngMVCCKhôngHỗ trợ loại dữ liệu không gian địa lýCóHỗ trợ lập chỉ mục không gian địa lýKhông có chỉ mục cây BKhông có chỉ mục cây TKhôngChỉ mục tìm kiếm văn bảnKhôngChỉ mục tìm kiếm theo cụmKhôngBộ nhớ cache dữ liệuKhôngBộ nhớ cache chỉ mụcKhôngDữ liệu nénCóHỗ trợ cơ sở dữ liệu được mã hóaCóHỗ trợ bản sao CóHỗ trợ khóa ngoạiKhôngCóSao lưu / phục hồi tại thời điểmCóHỗ trợ bộ đệm truy vấnCóCập nhật thống kê cho từ điển dữ liệuCó

Hỗ trợ công cụ lưu trữ ARCHIVE

  • CHÈN và CHỌN
  • ĐẶT HÀNG BẰNG thao tác
  • cột BLOB
  • Thuộc tính cột AUTO_INCREMENT . Cột AUTO_INCREMENT có thể có chỉ mục duy nhất hoặc không duy nhất
  • Tùy chọn bảng AUTO_INCREMENT trong câu lệnh CREATE TABLE

Công cụ lưu trữ ARCHIVE không hỗ trợ

  • XÓA, THAY THẾ, hoặc CẬP NHẬT
  • Chèn một giá trị vào cột AUTO_INCREMENT nhỏ hơn giá trị cột tối đa hiện tại

Công cụ lưu trữ ARCHIVE. Lưu trữ & Truy xuất

  • Công cụ ARCHIVE sử dụng nén dữ liệu không mất dữ liệu zlib [xem http. //www. zlib. net/]
  • Các hàng được nén khi chúng được chèn vào
  • Khi truy xuất, các hàng không được nén theo yêu cầu;

mysql. VÍ DỤ Công cụ lưu trữ

Công cụ lưu trữ VÍ DỤ là một công cụ sơ khai không làm gì cả và đóng vai trò là một ví dụ trong mã nguồn MySQL làm rõ cách bắt đầu viết các công cụ lưu trữ mới. Để kiểm tra nguồn cho công cụ EXAMPLE, hãy tìm trong thư mục lưu trữ/ví dụ của bản phân phối nguồn MySQL. Khi bạn tạo một bảng VÍ DỤ

  • Máy chủ tạo một tệp định dạng bảng [. phần mở rộng frm] trong thư mục cơ sở dữ liệu
  • Không có tệp nào khác được tạo
  • Không có dữ liệu có thể được lưu trữ vào bảng
  • Truy xuất trả về kết quả trống
  • Không hỗ trợ lập chỉ mục

Để bật công cụ lưu trữ EXAMPLE nếu bạn xây dựng MySQL từ nguồn, hãy gọi CMake bằng tùy chọn -DWITH_EXAMPLE_STORAGE_ENGINE

mysql. Công cụ lưu trữ BLACKHOLE

Công cụ lưu trữ BLACKHOLE hoạt động như một "hố đen" nhận dữ liệu nhưng trả về kết quả trống rỗng. Để bật công cụ lưu trữ BLACKHOLE [trong trường hợp xây dựng MySQL từ nguồn], hãy gọi CMake bằng tùy chọn -DWITH_BLACKHOLE_STORAGE_ENGINE. Khi bạn tạo một bảng BLACKHOLE, máy chủ sẽ tạo một tệp định dạng bảng [. frm] trong thư mục cơ sở dữ liệu. Công cụ lưu trữ BLACKHOLE hỗ trợ tất cả các loại chỉ mục. Đây là một ví dụ

CREATE TABLE t1 [i INT] ENGINE = INNODB;
CREATE TABLE t2 [i INT] ENGINE = CSV;
CREATE TABLE t3 [i INT] ENGINE = MEMORY;
7

Câu lệnh SHOW TABLE STATUS sau đây hiển thị các thuộc tính của bảng [thuộc cơ sở dữ liệu 'hướng dẫn']

CREATE TABLE t1 [i INT] ENGINE = INNODB;
CREATE TABLE t2 [i INT] ENGINE = CSV;
CREATE TABLE t3 [i INT] ENGINE = MEMORY;
8

mysql. Công cụ lưu trữ LIÊN KẾT

Công cụ lưu trữ LIÊN BANG được sử dụng để truy cập dữ liệu từ cơ sở dữ liệu MySQL từ xa mà không cần sử dụng công nghệ sao chép hoặc cụm. Truy vấn bảng LIÊN KẾT cục bộ sẽ tự động lấy dữ liệu từ các bảng [liên kết] từ xa. Không có dữ liệu nào được lưu trữ trên các bảng cục bộ. Để bao gồm công cụ lưu trữ LIÊN BANG [trong trường hợp xây dựng MySQL từ nguồn], hãy gọi CMake bằng tùy chọn -DWITH_FEDERATED_STORAGE_ ENGINE.
Để bật LIÊN KẾT [không được bật theo mặc định trong máy chủ đang chạy], bạn phải khởi động nhị phân máy chủ MySQL bằng tùy chọn --federated. Để kiểm tra nguồn cho công cụ LIÊN KẾT, hãy tìm trong thư mục lưu trữ/liên kết của bản phân phối nguồn MySQL.

Tạo bảng LIÊN KẾT

Bạn có thể tạo bảng LIÊN KẾT theo các cách sau

  • Sử dụng KẾT NỐI
  • Sử dụng TẠO MÁY CHỦ

Sử dụng KẾT NỐI . Để sử dụng phương pháp này, bạn phải chỉ định chuỗi KẾT NỐI sau loại công cụ trong câu lệnh CREATE TABLE. Xem ví dụ sau.

CREATE TABLE t1 [i INT] ENGINE = INNODB;
CREATE TABLE t2 [i INT] ENGINE = CSV;
CREATE TABLE t3 [i INT] ENGINE = MEMORY;
9

Định dạng của chuỗi kết nối như sau

SET default_storage_engine=ARCHIVE;
0

Ở đâu

  • kế hoạch. Một giao thức kết nối được công nhận. Chỉ mysql được hỗ trợ làm giá trị lược đồ tại thời điểm này
  • Tên người dùng cho kết nối phải được tạo trên máy chủ từ xa và có các đặc quyền phù hợp để thực hiện các hành động cần thiết như CHỌN, CHÈN, CẬP NHẬT, v.v. trên bảng từ xa
  • Mật khẩu cho user_name. [Không bắt buộc]
  • host_name. Tên máy chủ hoặc địa chỉ IP của máy chủ từ xa
  • port_num. Số cổng [mặc định. 3306] cho máy chủ từ xa. [Không bắt buộc]
  • db_name. Tên của cơ sở dữ liệu giữ bảng từ xa
  • tbl_name. Tên của bảng từ xa

Sử dụng TẠO MÁY CHỦ. Để sử dụng phương pháp này, bạn phải chỉ định chuỗi KẾT NỐI sau loại công cụ trong câu lệnh CREATE TABLE. Xem ví dụ sau

SET default_storage_engine=ARCHIVE;
1

server_name được sử dụng trong chuỗi kết nối khi tạo bảng LIÊN KẾT mới

Sự khác biệt giữa InnoDB và MyISAM

FeatureInnoDBMyISAMStorage limits64TB256TBTransactionsYesNoLocking granularityRowTableMVCCYesNoGeospatial data type supportYesYesGeospatial indexing supportNoYesB-tree indexesYesYesT-tree indexesNoNoHash indexesNoNoFull-text search indexesYesYesClustered indexesYesNoData cachesYesNoIndex cachesYesYesCompressed dataYesYesEncrypted dataYesYesCluster database supportNoNoReplication supportYesYesForeign key supportYesNoBackup / point-in-time recoveryYesYesQuery cache supportYesYesUpdate statistics for data dictionaryYesYes

Công cụ lưu trữ trong MySQL là gì?

Công cụ lưu trữ là Các thành phần MySQL xử lý các thao tác SQL cho các loại bảng khác nhau . InnoDB là công cụ lưu trữ mặc định và có mục đích chung nhất và Oracle khuyên bạn nên sử dụng nó cho các bảng ngoại trừ các trường hợp sử dụng chuyên biệt. [Câu lệnh CREATE TABLE trong MySQL 8. 0 tạo các bảng InnoDB theo mặc định. ]

Làm cách nào để đặt công cụ lưu trữ trong MySQL?

Bạn có thể chỉ định công cụ mặc định bằng cách sử dụng tùy chọn khởi động máy chủ --default-storage-engine hoặc bằng cách đặt tùy chọn công cụ lưu trữ mặc định trong tệp của tôi. tệp cấu hình cnf .

InnoDB có phải là công cụ lưu trữ không?

InnoDB là công cụ lưu trữ đa năng cân bằng giữa độ tin cậy cao và hiệu suất cao. Trong MySQL5. 6, InnoDB là công cụ lưu trữ MySQL mặc định. Trừ khi bạn đã định cấu hình một công cụ lưu trữ mặc định khác, việc đưa ra câu lệnh CREATE TABLE không có mệnh đề ENGINE sẽ tạo một bảng InnoDB.

Công cụ lưu trữ CSV trong MySQL là gì?

Công cụ lưu trữ CSV lưu trữ dữ liệu trong tệp văn bản bằng định dạng giá trị được phân tách bằng dấu phẩy . Công cụ lưu trữ CSV luôn được biên dịch vào máy chủ MySQL. Để kiểm tra nguồn cho công cụ CSV, hãy tìm trong thư mục lưu trữ/csv của bản phân phối nguồn MySQL.

Chủ Đề