SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 01.03.2018 12:59:39

Shopen
Гуру
Откуда: Москва
Зарегистрирован: 22.10.2007
Сообщений: 362

Как найти "ненужные" таблицы

Приветствую, друзья!
Есть у меня сервер с относительно большим зоопарком из ~150 баз данных и 15к таблиц с которыми работают из кучи неподконтрольных мне мест. Как мне найти те из них, к которым нет обращений (в том числе select)? Гуглится только использование update_time в information_schema но это не то, ессно. Есть ли способ?

Неактивен

 

#2 01.03.2018 16:39:37

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Как найти "ненужные" таблицы

Наверное, включить на время general query log

Неактивен

 

#3 01.03.2018 16:42:31

klow
Старожил
Зарегистрирован: 06.12.2014
Сообщений: 411

Re: Как найти "ненужные" таблицы

ох, нелегкая это работа - из болота тащить бегемота.

Неактивен

 

#4 01.03.2018 16:47:44

Shopen
Гуру
Откуда: Москва
Зарегистрирован: 22.10.2007
Сообщений: 362

Re: Как найти "ненужные" таблицы

rgbeast написал:

Наверное, включить на время general query log

Его же придется глазами разбирать? Или есть какая нибудь тулза, которая его сможет нормально структурировать?
Нет ли способа повесить какой нибудь глобальный триггер на все таблицы?

Отредактированно Shopen (01.03.2018 16:49:55)

Неактивен

 

#5 01.03.2018 16:54:00

klow
Старожил
Зарегистрирован: 06.12.2014
Сообщений: 411

Re: Как найти "ненужные" таблицы

Сначала нужно разобрать сам лог, а потом разобрать скрипты. Не думаю, что это кто-то автоматизировал.
Можно искать автоматом в тексте все названия таблиц, которые есть в базе, но есть вероятность ошибки особенно на скриптах вставки данных, если данные могут содержать названия таблиц.

Неактивен

 

#6 01.03.2018 16:55:22

klow
Старожил
Зарегистрирован: 06.12.2014
Сообщений: 411

Re: Как найти "ненужные" таблицы

А чем триггер поможет? Он ведь не сработает на select?
Но меня заинтересовала эта задача. Мне тоже хотелось бы знать как часто обращаться к таблицам пользователи.

Отредактированно klow (01.03.2018 16:57:37)

Неактивен

 

#7 01.03.2018 17:07:22

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Как найти "ненужные" таблицы

Можно смотреть access-time на файлах таблиц в файловой системе

Неактивен

 

#8 01.03.2018 17:29:09

klow
Старожил
Зарегистрирован: 06.12.2014
Сообщений: 411

Re: Как найти "ненужные" таблицы

А если ежедневно идет бекап?

Неактивен

 

#9 01.03.2018 19:28:30

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Как найти "ненужные" таблицы

klow написал:

А если ежедневно идет бекап?

Время бэкапа известно. Смотреть access-time. каждый день перед бэкапом.

Неактивен

 

#10 01.03.2018 21:50:37

Shopen
Гуру
Откуда: Москва
Зарегистрирован: 22.10.2007
Сообщений: 362

Re: Как найти "ненужные" таблицы

rgbeast написал:

Можно смотреть access-time на файлах таблиц в файловой системе

Access-time обычно отключают, если требуется производительность. В моём случае по крайней мере он точно отключен админом.

К тому же это время может меняться не только изнутри mysql а по ряду других причин (в том числе и бэкапов), то есть как минимум это неточно

Отредактированно Shopen (01.03.2018 21:54:16)

Неактивен

 

#11 01.03.2018 21:52:08

Shopen
Гуру
Откуда: Москва
Зарегистрирован: 22.10.2007
Сообщений: 362

Re: Как найти "ненужные" таблицы

klow написал:

А чем триггер поможет? Он ведь не сработает на select?
Но меня заинтересовала эта задача. Мне тоже хотелось бы знать как часто обращаться к таблицам пользователи.

Поэтому и написал "какой-нибудь", странно что такого типа триггера даже не задумано. Видимо никому не нужен ))

Неактивен

 

#12 01.03.2018 23:35:23

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Как найти "ненужные" таблицы

Access-time можно включить, это не приведет к значительной потере производительности. Другие обращения к файлам можно отследить.

Неактивен

 

#13 02.03.2018 10:45:12

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Как найти "ненужные" таблицы

Про InnoDB известно, что он может в фоне писать-читать какие-то данные даже когда непосредственного обращения нету. Я допускаю, что, когда к таблице нету доступа это будут и правда очень редкие события, так что access time может быть ок.

Честный способ анализа запросов хорош, но сложен, кажется. А на performance schema смотрел?
https://dev.mysql.com/doc/refman/5.7/en … ables.html
https://dev.mysql.com/doc/refman/5.7/en … able-table

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson