22.3.5 Получение информации о разделах
В данном разделе рассматривается получение информации о существующих разделах, что можно сделать несколькими способами. Способы получения такой информации включают в себя следующее:
Использование оператора
SHOW CREATE TABLEдля просмотра положений разбиения, используемых при создании таблицы с разбиением.Использование оператора
SHOW TABLE STATUSдля определения, является ли таблица разделенной.Запрос к таблице схемы информации
PARTITIONS.Использование оператора
EXPLAIN SELECTдля просмотра разделов, которые используются заданнымSELECT.
Как обсуждалось в других разделах этой главы, SHOW CREATE TABLE включает в свой вывод положение PARTITION BY, используемое для создания таблицы с разбиением. Например:
mysql> SHOW CREATE TABLE trb3\G
*************************** 1. row ***************************
Table: trb3
Create Table: CREATE TABLE `trb3` (
`id` int(11) default NULL,
`name` varchar(50) default NULL,
`purchased` date default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
PARTITION BY RANGE (YEAR(purchased)) (
PARTITION p0 VALUES LESS THAN (1990) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN (1995) ENGINE = MyISAM,
PARTITION p2 VALUES LESS THAN (2000) ENGINE = MyISAM,
PARTITION p3 VALUES LESS THAN (2005) ENGINE = MyISAM
)
1 row in set (0.00 sec)
Вывод оператора SHOW TABLE STATUS для таблиц с разбиением такой же, как для неразделенных таблиц, за исключением того, что столбец Create_options содержит строку partitioned. Столбец Engine содержит имя механизма хранения, используемого всеми разделами таблицы. (См. Раздел 13.7.5.36, «Оператор SHOW TABLE STATUS» для получения дополнительной информации об этом операторе.)
Вы также можете получить информацию о разделах из INFORMATION_SCHEMA, которая содержит таблицу PARTITIONS. См. Раздел 24.3.16, «Таблица INFORMATION_SCHEMA PARTITIONS».
Определить, какие разделы разбиеной таблицы участвуют в заданном запросе SELECT, можно с помощью оператора EXPLAIN. Столбец partitions в выводе EXPLAIN перечисляет разделы, из которых записи будут соответствовать запросу.
Предположим, что у вас есть таблица trb1, созданная и заполненная следующим образом:
CREATE TABLE trb1 (id INT, name VARCHAR(50), purchased DATE)
PARTITION BY RANGE(id)
(
PARTITION p0 VALUES LESS THAN (3),
PARTITION p1 VALUES LESS THAN (7),
PARTITION p2 VALUES LESS THAN (9),
PARTITION p3 VALUES LESS THAN (11)
);
INSERT INTO trb1 VALUES
(1, 'desk organiser', '2003-10-15'),
(2, 'CD player', '1993-11-05'),
(3, 'TV set', '1996-03-10'),
(4, 'bookcase', '1982-01-10'),
(5, 'exercise bike', '2004-05-09'),
(6, 'sofa', '1987-06-05'),
(7, 'popcorn maker', '2001-11-22'),
(8, 'aquarium', '1992-08-04'),
(9, 'study desk', '1984-09-16'),
(10, 'lava lamp', '1998-12-25');
Вы можете увидеть, какие разделы используются в запросе, таком как SELECT * FROM trb1;, как показано ниже:
mysql> EXPLAIN SELECT * FROM trb1\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: trb1
partitions: p0,p1,p2,p3
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 10
Extra: Using filesort
В этом случае все четыре раздела будут просматриваться. Однако, когда к запросу добавляется ограничительное условие, использующее ключ разбиения, вы можете увидеть, что будут просматриваться только те разделы, которые содержат соответствующие значения, как показано ниже:
mysql> EXPLAIN SELECT * FROM trb1 WHERE id < 5\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: trb1
partitions: p0,p1
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 10
Extra: Using where
EXPLAIN также предоставляет информацию о используемых ключах и возможных ключах:
mysql> ALTER TABLE trb1 ADD PRIMARY KEY (id);
Query OK, 10 rows affected (0.03 sec)
Records: 10 Duplicates: 0 Warnings: 0
mysql> EXPLAIN SELECT * FROM trb1 WHERE id < 5\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: trb1
partitions: p0,p1
type: range
possible_keys: PRIMARY
key: PRIMARY
key_len: 4
ref: NULL
rows: 7
Extra: Using where
Если оператор EXPLAIN
PARTITIONS используется для проверки запроса к неразделенной таблице, ошибки не возникает, но значение столбца partitions всегда равно NULL.
Столбец rows вывода EXPLAIN отображает общее количество строк в таблице.
См. также Раздел 13.8.2, «Оператор EXPLAIN».
© 2025 Oracle
Licensed under the GPLv2 License.