Я разбил таблицу по горизонтали, и мне хотелось бы посмотреть, как распределяются строки в настоящее время. Поиск в Интернете не принес каких-либо релевантных результатов.
Может ли кто-нибудь сказать мне, возможно ли это?
Я разбил таблицу по горизонтали, и мне хотелось бы посмотреть, как распределяются строки в настоящее время. Поиск в Интернете не принес каких-либо релевантных результатов.
Может ли кто-нибудь сказать мне, возможно ли это?
Вы можете получить строки каждого раздела с помощью information_schema
.
Вот мои тестовые тесты.
mysql> SELECT PARTITION_ORDINAL_POSITION, TABLE_ROWS, PARTITION_METHOD
FROM information_schema.PARTITIONS
WHERE TABLE_SCHEMA = 'db_name' AND TABLE_NAME = 'tbl_name';
+----------------------------+------------+------------------+
| PARTITION_ORDINAL_POSITION | TABLE_ROWS | PARTITION_METHOD |
+----------------------------+------------+------------------+
| 1 | 2 | HASH |
| 2 | 3 | HASH |
+----------------------------+------------+------------------+
mysql> SHOW CREATE TABLE tbl_name\G
*************************** 1. row ***************************
Table: p
Create Table: CREATE TABLE `tbl_name` (
`a` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
/*!50100 PARTITION BY HASH (a)
PARTITIONS 2 */
1 row in set (0.00 sec)
mysql> SELECT * FROM tbl_name;
+------+
| a |
+------+
| 2 |
| 4 |
| 1 |
| 3 |
| 5 |
+------+
5 rows in set (0.00 sec)
Для секционированных таблиц InnoDB количество строк, указанное в столбце TABLE_ROWS, является оценочным значением, используемым при оптимизации SQL, и может не всегда быть точным.
Благодаря @Constantine.
Просто чтобы добавить ответы Джейсона, в соответствии с справочным руководством вы можете найти способы получения информации о существующих разделах в таблице -
Использование Show Create Table - просмотр предложений о разделении, используемых при создании разделенной таблицы;
Синтаксис: show create table table_name;
Результат выборки: 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
)
Использование Show Table Status - определение того, разделена ли таблица,
Синтаксис: show table status in db_name like table_name;
Результат выборки: Показывает много информации о таблицах, таких как "Имя", "Двигатель", "Версия", "Длина данных" и т.д. Вы получаете значение "секционированное" для параметра "Create_options" на выходе.
Запрос таблицы INFORMATION_SCHEMA.PARTITIONS.
(Обратитесь к ответам Джейсона, вы можете дополнительно добавить SUBPARTITION_NAME, SUBPARTITION_ORDINAL_POSITION, SUBPARTITION_METHOD, PARTITION_EXPRESSION и т.д. Выберите параметры, чтобы получить дополнительную информацию. Обратитесь Справочник по MySQL Ref.)
Использование оператора EXPLAIN PARTITIONS SELECT - см., какие разделы используются данным SELECT
Синтаксис: EXPLAIN PARTITIONS SELECT * FROM trb1
Результат выборки: 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 Ref