MariaDB InnoDB: найти размер строк по дате - PullRequest
0 голосов
/ 27 февраля 2020

За последние несколько дней я провёл некоторое исследование по выяснению вариаций размеров таблицы. Интересно, можно ли вообще найти размер строк в таблице по дате? Например, между 2020-01-01 и 2020-01-31.

|---------------------|------------------|
|      column_name    |     data_type    |
|---------------------|------------------|
|          id         | int(10) unsigned |
|---------------------|------------------|
|       created_at    |       date       |
|---------------------|------------------|
|      some column    |    varchar(255)  |
|---------------------|------------------|

Я не думаю, что я могу добавить условие даты в запрос ниже.

SELECT
  table_name "Table Name",
  table_rows "Rows Count",
  round(((data_length + index_length) / 1024 / 1024), 2) "Table Size (MB)"
FROM
  information_schema.TABLES
WHERE
  table_schema = "DB NAME"
  AND table_name = "TABLE NAME";

Любой помощь будет оценена.

1 Ответ

0 голосов
/ 27 февраля 2020

MariaDB не ведет историю размеров таблиц и индексов. Насколько я знаю, нет также операционной системы, которая регистрирует размеры файлов. Обычно это работа инструмента мониторинга.

Если ваш двоичный журнал включен (log-bin=1), вы сможете получить операторы DML вместе с отметкой времени для определенной таблицы c. Двоичный журнал можно отобразить с помощью инструмента mysqldump или с помощью API RPL MariaDB Connector / C. Вот пример выходных данных mysqldump

#200227 17:34:24 server id 1  end_log_pos 759 CRC32 0x7934578c  Query   thread_id=11    exec_time=0     error_code=0
SET TIMESTAMP=1582821264/*!*/;
insert into t1 (a,b) values (1, "foo")
/*!*/;

Если вы используете более читаемый синтаксис SQL, который также указывает имена столбцов, вы можете добавить дополнительный столбец c с меткой времени типа данных и воспроизвести журнал. , Тогда c будет содержать метку времени из двоичного журнала (= 1582821264), а не фактическую дату.

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