Spec-Zone .ru
спецификации, руководства, описания, API
|
Этот раздел обсуждает информацию о получении о существующих разделах, которые могут быть сделаны многими способами. Методы получения такой информации включают следующее:
Используя SHOW
CREATE TABLE
оператор, чтобы просмотреть пункты разделения, используемые в создании
разделенной таблицы.
Используя SHOW
TABLE STATUS
оператор, чтобы определить, делится ли таблица.
Запросы INFORMATION_SCHEMA.PARTITIONS
таблица.
Используя оператор EXPLAIN
PARTITIONS SELECT
видеть, какие разделы используются данным SELECT
.
Как обсуждено в другом месте в этой главе, SHOW
CREATE TABLE
включает в его вывод PARTITION BY
пункт, используемый,
чтобы создать разделенную таблицу. Например:
mysql> SHOW CREATE TABLE trb3\G
*************************** 1. row *************************** Table: trb3Create Table: CREATE TABLE `trb3` ( `id` int(11) default NULL, `name` varchar(50) default NULL, `purchased` date default NULL) ENGINE=MyISAM DEFAULT CHARSET=latin1PARTITION 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.37,"SHOW
TABLE STATUS
Синтаксис", для получения дополнительной информации об этом операторе.)
Можно также получить информацию о разделах от INFORMATION_SCHEMA
, который содержит
a PARTITIONS
таблица.
См. Раздел 20.14," INFORMATION_SCHEMA
PARTITIONS
Таблица".
Возможно определить, какие разделы разделенной таблицы включаются в данный SELECT
использование запроса EXPLAIN PARTITIONS
. PARTITIONS
ключевое слово
добавляет a 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 PARTITIONS SELECT * FROM trb1\G
*************************** 1. row *************************** id: 1 select_type: SIMPLE table: trb1 partitions: p0,p1,p2,p3 type: ALLpossible_keys: NULL key: NULL key_len: NULL ref: NULL rows: 10 Extra: Using filesort
В этом случае все четыре раздела ищутся. Однако, когда ограничивающее условие, использующее ключ разделения, добавляется к запросу, можно видеть, что только те разделы, содержащие совпадающие значения, сканируются, как показано здесь:
mysql> EXPLAIN PARTITIONS SELECT * FROM trb1 WHERE id
< 5\G
*************************** 1. row *************************** id: 1 select_type: SIMPLE table: trb1 partitions: p0,p1 type: ALLpossible_keys: NULL key: NULL key_len: NULL ref: NULL rows: 10 Extra: Using where
EXPLAIN
PARTITIONS
предоставляет информацию о ключах используемые и возможные ключи, так же, как со
стандартом EXPLAIN
SELECT
оператор:
mysql>ALTER TABLE trb1 ADD PRIMARY KEY (id);
Query OK, 10 rows affected (0.03 sec)Records: 10 Duplicates: 0 Warnings: 0mysql>EXPLAIN PARTITIONS SELECT * FROM trb1 WHERE id < 5\G
*************************** 1. row *************************** id: 1 select_type: SIMPLE table: trb1 partitions: p0,p1 type: rangepossible_keys: PRIMARY key: PRIMARY key_len: 4 ref: NULL rows: 7 Extra: Using where
Следует принять во внимание следующие ограничения и ограничения на EXPLAIN PARTITIONS
:
Невозможно использовать PARTITIONS
и EXTENDED
ключевые слова вместе в том же самом EXPLAIN ... SELECT
оператор. Попытка сделать так производит
синтаксическую ошибку.
Если EXPLAIN PARTITIONS
используется, чтобы исследовать запрос против
неразделенной таблицы, никакая ошибка не производится, но значение partitions
столбец всегда NULL
.
rows
столбец EXPLAIN
PARTITIONS
вывод выводит на экран общее количество строк в таблице.
См. также Раздел
13.8.2,"EXPLAIN
Синтаксис".