Ví dụ về thông tin_lược đồ mysql

Phân vùng MySQL là gì? . Trong bài viết này tôi sẽ nói cho bạn biết về những điều đó. 1. Phân vùng MySQL là gì? . Điều đó cũng có nghĩa là khi bạn tìm kiếm dữ liệu, cơ sở dữ liệu chỉ cần tìm kiếm trong phạm vi 1 hoặc một số phân vùng bất kỳ, giúp giảm thời gian truy vấn dữ liệu. Thực hiện bảng phân vùng hiện tại trong một số trường hợp giúp ta tối ưu hóa cơ sở dữ liệu. Cùng xem 1 ví dụ về cách tạo phân vùng trong MySQL.

mysql> SELECT
    ->     PLUGIN_NAME as Name,
    ->     PLUGIN_VERSION as Version,
    ->     PLUGIN_STATUS as Status
    -> FROM INFORMATION_SCHEMA.PLUGINS
    -> WHERE PLUGIN_TYPE='STORAGE ENGINE';
+--------------------+---------+--------+
| Name               | Version | Status |
+--------------------+---------+--------+
| binlog             | 1.0     | ACTIVE |
| CSV                | 1.0     | ACTIVE |
| MEMORY             | 1.0     | ACTIVE |
| MRG_MYISAM         | 1.0     | ACTIVE |
| MyISAM             | 1.0     | ACTIVE |
| PERFORMANCE_SCHEMA | 0.1     | ACTIVE |
| BLACKHOLE          | 1.0     | ACTIVE |
| ARCHIVE            | 3.0     | ACTIVE |
| InnoDB             | 5.7     | ACTIVE |
| partition          | 1.0     | ACTIVE |
+--------------------+---------+--------+
10 rows in set [0.00 sec]
4

2. Cùng nói về 1 số lợi ích phân vùng cửa làm việc

  • Kho. Có thể lưu nhiều dữ liệu hơn trong một bảng hơn là lưu trữ trên đĩa đơn hoặc phân vùng hệ thống tệp
  • xóa. thả cả một partiton nào đi sẽ rất nhanh, nhất là với những bảng có nhiều dữ liệu thì việc xóa dữ liệu trở nên đơn giản hơn rất nhiều
  • Truy vấn. truy vấn dữ liệu sẽ nhanh hơn nếu trong câu truy vấn của bạn chỉ có phân vùng xác định

3. Làm sao để biết được store engine của bạn có hỗ trợ phân vùng hay không?

  • Đơn giản để biết được store engine có hỗ trợ hay không, ta chỉ cần chạy lệnh SHOW PLUGINS
mysql> SHOW PLUGINS;
+------------+----------+----------------+---------+---------+
| Name       | Status   | Type           | Library | License |
+------------+----------+----------------+---------+---------+
| binlog     | ACTIVE   | STORAGE ENGINE | NULL    | GPL     |
| partition  | ACTIVE   | STORAGE ENGINE | NULL    | GPL     |
| ARCHIVE    | ACTIVE   | STORAGE ENGINE | NULL    | GPL     |
| BLACKHOLE  | ACTIVE   | STORAGE ENGINE | NULL    | GPL     |
| CSV        | ACTIVE   | STORAGE ENGINE | NULL    | GPL     |
| FEDERATED  | DISABLED | STORAGE ENGINE | NULL    | GPL     |
| MEMORY     | ACTIVE   | STORAGE ENGINE | NULL    | GPL     |
| InnoDB     | ACTIVE   | STORAGE ENGINE | NULL    | GPL     |
| MRG_MYISAM | ACTIVE   | STORAGE ENGINE | NULL    | GPL     |
| MyISAM     | ACTIVE   | STORAGE ENGINE | NULL    | GPL     |
| ndbcluster | DISABLED | STORAGE ENGINE | NULL    | GPL     |
+------------+----------+----------------+---------+---------+
11 rows in set [0.00 sec]
  • hoặc thực hiện câu hỏi sau
mysql> SELECT
    ->     PLUGIN_NAME as Name,
    ->     PLUGIN_VERSION as Version,
    ->     PLUGIN_STATUS as Status
    -> FROM INFORMATION_SCHEMA.PLUGINS
    -> WHERE PLUGIN_TYPE='STORAGE ENGINE';
+--------------------+---------+--------+
| Name               | Version | Status |
+--------------------+---------+--------+
| binlog             | 1.0     | ACTIVE |
| CSV                | 1.0     | ACTIVE |
| MEMORY             | 1.0     | ACTIVE |
| MRG_MYISAM         | 1.0     | ACTIVE |
| MyISAM             | 1.0     | ACTIVE |
| PERFORMANCE_SCHEMA | 0.1     | ACTIVE |
| BLACKHOLE          | 1.0     | ACTIVE |
| ARCHIVE            | 3.0     | ACTIVE |
| InnoDB             | 5.7     | ACTIVE |
| partition          | 1.0     | ACTIVE |
+--------------------+---------+--------+
10 rows in set [0.00 sec]

**4. Partition bao gồm những loại nào ? . một. RANGE Loại phân vùng này chỉ định 1 hàng của bảng sẽ được lưu tại phân vùng nào dựa trên giá trị của 1 cột. Các giá trị nên được liên kết nhưng chúng không nên chồng chéo nhau. Toán tử "VALUES LESS THAN" sẽ được sử dụng để định nghĩa dải giá tri. Trong ví dụ dưới đây, những hàng có cùng 1 năm sẽ được lưu trữ trong cùng 1 phân vùng

CREATE TABLE userslogs [
    username VARCHAR[20] NOT NULL,
    logdata BLOB NOT NULL,
    created DATETIME NOT NULL,
    PRIMARY KEY[username, created]
]
PARTITION BY RANGE[ YEAR[created] ][
    PARTITION from_2013_or_less VALUES LESS THAN [2014],
    PARTITION from_2014 VALUES LESS THAN [2015],
    PARTITION from_2015 VALUES LESS THAN [2016],
    PARTITION from_2016_and_up VALUES LESS THAN MAXVALUE

b. LIST phân vùng. Kiểu này rất giống với Rangeg, nhưng khác ở vị trí giá trị của cột để xác định phân vùng phải nằm trong 1 danh sách đã được định nghĩa trước đó. Toán tử "VALUES IN" được sử dụng trong trường hợp này. Hãy cùng xem 1 ví dụ sau

CREATE TABLE serverlogs [
    serverid INT NOT NULL, 
    logdata BLOB NOT NULL,
    created DATETIME NOT NULL
]
PARTITION BY LIST [serverid][
    PARTITION server_east VALUES IN[1,43,65,12,56,73],
    PARTITION server_west VALUES IN[534,6422,196,956,22]
];

c. Phân vùng HASH. Đây là loại phân vùng sử dụng dữ liệu chính của cột để xác định hàng của bảng định vị sẽ được lưu trữ ở đâu. No same as LIST or RANGE, where which the partition value value has been verify before. HASH thường được áp dụng để phân phối đồng đều giữa các phần. Chú ý rằng giá trị của cột được sử dụng để phân chia phải ở dạng INTEGER. Ví dụ sau sẽ tạo 1 bảng có 10 phân vùng dạng HASH

CREATE TABLE serverlogs2 [
    serverid INT NOT NULL, 
    logdata BLOB NOT NULL,
    created DATETIME NOT NULL
]
PARTITION BY HASH [serverid]
PARTITIONS 10
```;

d. KEY Partitioning.
Đây là loại rất giống với HASH nhưng nó khác ở chỗ, giá trị để xác định partion nằm trên 1 hoặc nhiều column khác nhau, giá trị không nhất thiết phải là Integer.
Ví dụ sau sẽ tạo 1 Key partition với việc không chỉ định rõ key, khi đó MySQL sẽ tự động lấy PrimariKey hoặc Unikey để sử dụng:

TẠO BẢNG serverlogs4 [ serverid INT NOT NULL, logdata BLOB NOT NULL, đã tạo DATETIME NOT NULL, UNIQUE KEY [serverid] ] PHÂN VÙNG THEO KEY[] CÁC PHÂN VÙNG 10;

Ví dụ chỉ định rõ Key:

TẠO BẢNG serverlogs5 [ serverid INT NOT NULL, logdata BLOB NOT NULL, đã tạo DATETIME NOT NULL, nhãn VARCHAR[10] NOT NULL ] PHÂN PHẦN BẰNG KHÓA[serverid, nhãn, đã tạo] PHÂN PHẦN 10;

Chủ Đề