Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / MySQL Новый топик    Ответить
 Вопрос по файловой структуре БД  [new]
f9n6001
Member

Откуда: все мы из одного места
Сообщений: 1023
Здравствуйте.

Одно из приложений, работающих на моей работе использует MySQL в качестве СУБД. Мой опыт работы с MySQL практически нулевой.

Так вот. База непомерно разрослась. Я посмотрел файлы в каталоге. Самый большой - f_logs.ibd судя по названию, это какой-то лог.
Вопрос: как его усечь до приемлемого размера? Я пытался это сделать командами из интернета, но оно не сильно помогло...

+
mysql> use fm3base
No connection. Trying to reconnect...
Connection id: 475
Current database: *** NONE ***

Database changed
mysql> PURGE BINARY LOGS BEFORE DATE(NOW() - INTERVAL 5 DAY) + INTERVAL 0 SECOND;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 497
Current database: fm3base

Query OK, 0 rows affected (0.00 sec)

mysql>


К сообщению приложен файл. Размер - 11Kb
4 май 21, 15:31    [22318332]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по файловой структуре БД  [new]
f9n6001
Member

Откуда: все мы из одного места
Сообщений: 1023
Я тут еще порылся. Оно, конечно, логи, но логи прикладной программы, а не СУБД. То есть в БД есть такая таблица. Вот ее статистика:

+
mysql> show table status like 'f_logs' \G;
*************************** 1. row ***************************
Name: f_logs
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: 97920745
Avg_row_length: 2056
Data_length: 201414672384
Max_data_length: 0
Index_length: 2291138560
Data_free: 7340032
Auto_increment: 92197295
Create_time: 2021-04-12 10:15:33
Update_time: NULL
Check_time: NULL
Collation: utf8_general_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.02 sec)


Только я из этой статистики не пойму, на сколько таблица занята реальными данными и, соответственно, есть ли смысл заморачиваться с дефрагментацией и сжатием?
4 май 21, 17:06    [22318403]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по файловой структуре БД  [new]
miksoft
Member

Откуда:
Сообщений: 38836
f9n6001,

Очистить таблицу несложно - командой truncate, например.
А вот как это повлияет на логику приложения - неизвестно.

Еще смущает Create_time: 2021-04-12 10:15:33
Если таблица недавно пересоздавалась, то значит в приложении есть механизм для этого?
4 май 21, 19:25    [22318465]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по файловой структуре БД  [new]
f9n6001
Member

Откуда: все мы из одного места
Сообщений: 1023
miksoft,

я имею ввиду не удаление данных из таблицы, а ее перепаковку. То есть, на сколько я понял со слов гугла,InnoDB в принципе не умеет уменьшать размер файлов. То есть даже если от туда поудалять все данные, размер самого файла не уменьшится. Поэтому люди заморачиваются костылями, типа сделать дамп таблицы, потом удалить файл и восстановить его из дампа. В таком файле не будет пустот и его размер станет меньше.
4 май 21, 21:57    [22318518]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по файловой структуре БД  [new]
miksoft
Member

Откуда:
Сообщений: 38836
f9n6001
InnoDB в принципе не умеет уменьшать размер файлов.
Если включена опция для хранения таблиц в отдельных файлах, то умеет.
Сделайте OPTIMIZE TABLE имя_таблицы
Но если в этой таблице не было удалений записей, то размер файла не изменится существенно.
4 май 21, 23:55    [22318560]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по файловой структуре БД  [new]
f9n6001
Member

Откуда: все мы из одного места
Сообщений: 1023
Спасибо за консультацию :))

Но все-таки еще один вопрос на последок. Помогите плз создать запрос для аргументов перед начальством. Итак, имеем таблицу f_logs. В ней есть ключевое поле time, формат поля datetime.
Вопрос: посчитать количество записей в таблице за конкретную дату. Например, за 04.05.2021
Вручную там не посчитаешь, там получилось порядка 4 тыс страниц по 500 записей на страницу в phpMysql.

Спасибо :)

К сообщению приложен файл. Размер - 37Kb
5 май 21, 15:07    [22318823]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по файловой структуре БД  [new]
miksoft
Member

Откуда:
Сообщений: 38836
f9n6001,

SELECT date(`time`) log_date, count(*) cnt
FROM fm3base.f_logs
GROUP BY date(`time`)
ORDER BY date(`time`)
5 май 21, 15:17    [22318837]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по файловой структуре БД  [new]
f9n6001
Member

Откуда: все мы из одного места
Сообщений: 1023
miksoft,

:)) А куда писать WHERE?
5 май 21, 19:55    [22318965]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по файловой структуре БД  [new]
f9n6001
Member

Откуда: все мы из одного места
Сообщений: 1023
f9n6001
:)) А куда писать WHERE?


mysql> SELECT date(`time`) log_date, count(*) cnt
-> FROM fm3base.f_logs WHERE date('time') = '20210504'
-> GROUP BY date(`time`)
-> ORDER BY date(`time`);
Empty set, 1 warning (0.00 sec)

что-то ту не так...
5 май 21, 20:23    [22318972]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по файловой структуре БД  [new]
f9n6001
Member

Откуда: все мы из одного места
Сообщений: 1023
Все. Разобрался.
Еще раз спасибо за помощь, вопрос закрыт :)
5 май 21, 21:49    [22319014]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по файловой структуре БД  [new]
miksoft
Member

Откуда:
Сообщений: 38836
f9n6001,

Кавычки не те были.
5 май 21, 23:56    [22319054]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по файловой структуре БД  [new]
f9n6001
Member

Откуда: все мы из одного места
Сообщений: 1023
Господа, что-то я нервничаю...
Это же нормальный запрос? Все же правильно написал?

+
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use fm3base
Database changed
mysql> DELETE FROM fm3base.f_logs
-> WHERE date(`time`) <= '2021-05-01';


А то оно у меня с утра в таком виде висит и ни ответа, ни привета...
11 май 21, 14:52    [22320481]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по файловой структуре БД  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21200
Небось и записей дофига, и индексы на таблицы гроздьями. А ещё в неё поди и пишется что-то параллельно с удалением.

f9n6001
Это же нормальный запрос? Все же правильно написал?

Нет, конечно. Какой же это нормальный запрос, если в условии отбора функция?
Надо было
DELETE 
FROM fm3base.f_logs
WHERE `time` < '2021-05-02 00:00:00';
11 май 21, 15:47    [22320515]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по файловой структуре БД  [new]
miksoft
Member

Откуда:
Сообщений: 38836
Akina
Надо было
DELETE 
FROM fm3base.f_logs
WHERE `time` < '2021-05-02 00:00:00';
Формально - как бы да, но конкретно с этими датами все равно фуллскан таблицы.
11 май 21, 23:18    [22320683]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по файловой структуре БД  [new]
Alex_Ustinov
Member

Откуда: Nickel
Сообщений: 3805
f9n6001,
результат запроса
show create table fm3base.f_logs;
покажите,
какого типа поле TIME, а то гадаем
12 май 21, 08:59    [22320755]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по файловой структуре БД  [new]
f9n6001
Member

Откуда: все мы из одного места
Сообщений: 1023
Alex_Ustinov,

datetime. Там, в начале треда это все обговаривалось с картинками
Собственно, вопрос-то решен. Похоже, глюк в прикладной программе. Надо с их поддержкой дальше списываться. Там SSL отключен в настройках, а лог забит такой вот фигней под завязку:

+
"An error occurred while attempting to establish an SSL or TLS connection.

This usually means that the SSL certificate presented by the server is not trusted by the system for one or more of
the following reasons:

1. The server is using a self-signed certificate which cannot be verified.
2. The local system is missing a Root or Intermediate certificate needed to verify the server`s certificate.
3. A Certificate Authority CRL server for one or more of the certificates in the chain is temporarily unavailable.
4. The certificate presented by the server is expired or invalid.

It is also possible that the set of SSL/TLS protocols supported by the client and server do not match.

See https://github.com/jstedfast/MailKit/blob/master/FAQ.md#SslHandshakeException for possible solutions.
"


Но к SQL это уже все отношения не имеет. Еще раз всем спасибо за поддержку :))
12 май 21, 10:58    [22320828]     Ответить | Цитировать Сообщить модератору
Все форумы / MySQL Ответить