| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MySQL > InnoDB движок |
| Автор: CrackedMind 4.3.2006, 22:20 |
| При использовании InnoDB "движка" появились некоторые вопросы... Удаляю я все записи из таблицы, размер файла данных таблицы остается прежним, уменьшить его размеры помогают либо ALTER TABLE либо OPTIMIZE TABLE? Почему такое происходит? |
| Автор: Kesh 4.3.2006, 22:37 |
| CrackedMind, потому что при этих командах происходит перезапись структуры файла... Соответственно переписывается и сам файл полностью... Попробуй еще TRUNCATE - по идее тоже должен изменять... Все остальные команды инициируют записи в свободное место в файле... Это аналогично занятому месту на жестком диске... Т.е. есть некоторый объем, в который записываются данные, они записываются не последовательно, а в свободное место по всему файлу... Даже так.. Удаленные записи физически не уничтожаются, просто стираются ссылки на них... А новые записи добавляются в конец... Если слишком сумбурно рассказал - пиши, попробую поподробнее... |
| Автор: CrackedMind 4.3.2006, 23:00 | ||
ну ведь для MyISAM при DELETE запись физически удаляется, я знаю что при DELETE записи помечаются как удаленные и нужно делать commit; (вроде так
файлик как был 18 мб так и остался Ж), повторюсь для MyISAM все нормально физически удаляется з.ы. версия MySQL == 5.0.16-nt |
| Автор: Kesh 5.3.2006, 00:00 |
| CrackedMind, для InnoDB записи физически не удаляются... Как ты правиль и сказал Только из самого файла они не стираются... Как с файловой системой... Ты файл удаляешь, он не стирается с диска, но и тебе уже не виден... |
| Автор: CrackedMind 5.3.2006, 00:33 |
| так почему для InnoDB не удаляются, а для MyISAM удаляются? Какая то особенность? |
| Автор: Kesh 5.3.2006, 16:22 |
| CrackedMind, угу... Работают по разному... InnoDB поддерживает транзакции... Кстати, у Oracle тоже в одном файле хранится вся информация, и размер файла тоже не меняется, пока его не забьешь... Добавлено @ 16:25 Вот здесь описание MyISAM http://www.mysql.ru/docs/man/MyISAM.html А здесь - InnoDB http://www.mysql.ru/docs/man/InnoDB.html |