1. grafillo - 01 Февраля, 2019 - 12:31:06 - перейти к сообщению
Создал бд на mysql, сами таблицы с которыми работает скрипт занимают 5 мегабайт, зато файл ibdata1 занимает 1.5 гегабайт и растёт постоянно, я так понимаю там пишутся логи, кто знает как сделать так чтобы этот файл не рос? и что там записывается?
2. LIME - 01 Февраля, 2019 - 13:44:27 - перейти к сообщению
первый из гугл по ibdata
http://www[dot]sql[dot]ru/forum/230338/i[dot][dot][dot]ta1-chto-za-fayl
http://www[dot]sql[dot]ru/forum/230338/i[dot][dot][dot]ta1-chto-za-fayl
3. grafillo - 01 Февраля, 2019 - 14:22:11 - перейти к сообщению
так что этот файл нельзя удалить или уменьшить чтоли?
4. LIME - 01 Февраля, 2019 - 14:26:18 - перейти к сообщению
Цитата:
удаляй
в том ibdata как раз и хранятся данные и индексы всех innodb таблиц.
5. grafillo - 01 Февраля, 2019 - 19:01:11 - перейти к сообщению
а почему оно всё время растёт если у меня таблица на 5 метров, какие индексы и данные всех таблиц? там всех данных на пять мегабайт а индексов на 1.5 гигабайт? х)
как такое может быть?
как такое может быть?
6. LIME - 01 Февраля, 2019 - 20:17:38 - перейти к сообщению
я не dba
могу только предполагать из того скудного что знаю
лучше тебе дождаться мелкого...он хоть и пг но думаю пояснит лучше меня
короче...
глянь количество индексов
пойми что каждый индекс это почти новая копия таблицы только с данными входящими в индекс...+ в мускуле действует btree++ ... это значит что в каждом индексе повторяются данные которые участвуют в индексе + верхние страницы индекса
проверь свою архитектуру на индексы
для проверочки удали все индексы и проверь размер файла
потом верни их и подумай есть ли лишние
новички очень часто индексируют всё направо и налево
индекс помогает в выборке но это несет в себе некие расходы
надо уметь индексировать и понимать как устроены индексы
погугли как устроено дерево индексов... "btree для школьников"
могу только предполагать из того скудного что знаю
лучше тебе дождаться мелкого...он хоть и пг но думаю пояснит лучше меня
короче...
глянь количество индексов
пойми что каждый индекс это почти новая копия таблицы только с данными входящими в индекс...+ в мускуле действует btree++ ... это значит что в каждом индексе повторяются данные которые участвуют в индексе + верхние страницы индекса
проверь свою архитектуру на индексы
для проверочки удали все индексы и проверь размер файла
потом верни их и подумай есть ли лишние
новички очень часто индексируют всё направо и налево
индекс помогает в выборке но это несет в себе некие расходы
надо уметь индексировать и понимать как устроены индексы
погугли как устроено дерево индексов... "btree для школьников"
7. Мелкий - 01 Февраля, 2019 - 22:55:13 - перейти к сообщению
Что могу однозначно процитировать, так это вот тут: https://dev[dot]mysql[dot]com/doc/refman[dot][dot][dot]ystem_tablespace
То есть два момента:
- в этом файле хранятся все таблицы и индексы созданные при выключенном innodb_file_per_table.
- mysql просто не умеет уменьшать этот файл
Насколько знаю, единственный выход - сдампить всё, удалить все innodb объекты, полностью стопнуть базу, удалить ibdata и ib_log, запустить базу и восстановить таблички. Ну или сдампить всё нужное и полностью переинициализировать инстанс.
Как именно он переиспользует свободное место - не знаю.
Цитата:
keep all InnoDB tables and indexes inside the system tablespace, often causing this file to become very large. Because the system tablespace never shrinks, storage problems could arise if large amounts of temporary data were loaded and then deleted.
То есть два момента:
- в этом файле хранятся все таблицы и индексы созданные при выключенном innodb_file_per_table.
- mysql просто не умеет уменьшать этот файл
Насколько знаю, единственный выход - сдампить всё, удалить все innodb объекты, полностью стопнуть базу, удалить ibdata и ib_log, запустить базу и восстановить таблички. Ну или сдампить всё нужное и полностью переинициализировать инстанс.
Как именно он переиспользует свободное место - не знаю.
8. LIME - 02 Февраля, 2019 - 00:51:59 - перейти к сообщению
Мелкий пишет:
нууНасколько знаю, единственный выход
а как насчет table optimize
не вакуум но хоть чтото
я точно знаю что ты знаешь
не будь пг шовинистом
хотя в случае мскл это по сути и есть новая бд
LIME пишет:
не...не смог онлучше тебе дождаться мелкого...он хоть и пг но думаю пояснит лучше меня
(Добавление)
Мелкий привет)) даже не поправил мну.... я что все правильно сказал?)) ураааа)))
9. Мелкий - 02 Февраля, 2019 - 15:48:28 - перейти к сообщению
LIME пишет:
а как насчет table optimize
Я намеренно даже выделил never shrinks.
mysql никогда не обрезает этот файл. Не умеет. Перестроение таблицы каким-либо образом переместит данные в другое место внутри этого файла-tablespace или в другой файл при включенном per file, но файл этот уменьшить не может. Вообще. Штука очень древняя.
https://bugs[dot]mysql[dot]com/bug.php?id=1341
Для btree - да, всё верно, индекс хранит копии индексируемых значений. Поэтому индексы занимают место, но и потому по btree можно сделать index only scan. Специфика кластеризованного innodb - во вторичные индексы всегда неявно входит ещё и значение первичного ключа.
10. LIME - 02 Февраля, 2019 - 16:28:31 - перейти к сообщению
Мелкий пишет:
перевожу на людскойво вторичные индексы всегда неявно входит ещё и значение первичного ключа.
в ключе иннодиби хранится не ссылка на данные а значение пк(второй поиск)
эдакий симлинк
Мелкий пишет:
жееесть...спасибо за инфо...но капееецmysql никогда не обрезает этот файл. Не умеет.
(Добавление)
Мелкий пишет:
извините синьор но это уже особенности алгоритма Поэтому индексы занимают место, но и потому по btree можно сделать index only scan.
в любой субд
и приемчики и триксы
но это уже совсем другая история)
(Добавление)
для любознательных это называется покрывающий индекс
11. grafillo - 04 Февраля, 2019 - 10:11:55 - перейти к сообщению
кароч если в ручную бахнуть этот файл то потом как его востсановить7
всё должно заработать же?
таблицы то у меня все есть.
всё должно заработать же?
таблицы то у меня все есть.