MySQL измерение полного времени сканирования таблицы - PullRequest
0 голосов
/ 14 марта 2020

У меня есть таблица 5 ТБ. Все, что я хочу знать, это сколько времени требуется для полного сканирования таблицы. Меня не волнует возвращение данных. Я пытался запустить select * from mytable;, но по какой-то причине клиент был убит. Не уверен, вызвано ли это каким-то таймаутом или слишком большим объемом данных для обработки. Есть ли надежный способ получить время запроса? Не уверен, что это поможет, но моя схема таблицы выглядит следующим образом: create table datatable (a integer, name varchar(200), class varchar(200), reason varchar(200));

Ответы [ 2 ]

1 голос
/ 14 марта 2020

Попробуйте это:

set profiling = 1;
select count(*) from datatable where a = 1;
show profiles;

Если у вас нет столбцов в столбце a, это должно привести к полному сканированию таблицы и возврату только одной строки с минимальными издержками на передачу данных.

0 голосов
/ 14 марта 2020

У меня также была такая же проблема, когда я пытался сделать это с mysql верстаком (поскольку он дает время выполнения), но соединение с mysql сервером не удавалось, когда данные были большими.

Так как я Я использовал java и Springboot, я сделал Api, сервис и репозиторий для взаимодействия с базой данных, где мне нужно было создавать классы как сущности для каждой таблицы, а затем я просто позволил пружине jpa дать команду mysql для сканирования. В необходимой базе данных я использовал наносекундную библиотеку java для вычисления разницы во времени и преобразовал ее в секунды. Все прошло довольно гладко. Я понимаю, что добавляется некоторое дополнительное время из-за того, что я выполняю вызов пружины для запуска сканирования для запуска сканирования и mysql фактического сканирования базы данных, но я думаю, что это очень незначительно.

Так что, возможно, вы можете сделать то же самое в вашем предпочтении языка или структуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...