Логотип   Простое и понятное управление
  Уникальные возможности по настройке
  Open Server скачали уже 1 017 858 раз!

Форум

Добро пожаловать, Гость!

ibdata1 что это?

Обсуждение общих вопросов связанных с программой
Аватара пользователя
Dgikar
Сообщения: 11
C нами: 4 года 5 мес

Непрочитанное сообщение Dgikar » 04 апр 2016, 14:55

В папке OpenServer\userdata\MySQL-5.5, есть файл ibdata1. У меня, при 2-х (не большие +- 1,5 Мб) БД, он занимает аж 23,2 Гб...

Подскажите плз, что это за файл? Можно ли его безболезненно удалить (все же 23 Гб - многовато...)

Аватара пользователя
Максим
Cейчас: в сети
Сообщения: 4872
C нами: 5 лет 11 мес
Контакты:

Непрочитанное сообщение Максим » 04 апр 2016, 15:00

Это файл баз данных в формате innoDB. Его особенность в том, что если вы создали базу размером 23 гигабайта, а потом её удалили, то файл не уменьшается в размере. Свободное место в нём просто остаётся на будущее для других баз данных. Если вам это не нравится то пересоздайте все базы путём импорта/экспорта одним sql файлом или используйте MyISAM формат бд.

Аватара пользователя
Dgikar
Сообщения: 11
C нами: 4 года 5 мес

Непрочитанное сообщение Dgikar » 04 апр 2016, 17:34

Максим, спасибо за ответ.

Я правильно понимаю, что, если я, пересоздам БД, этот файл уменьшиться? Или его, сейчас можно удалить, а потом пересоздать БД и все будет дальше ОК? Как правильно сделать?

Аватара пользователя
DelphinPRO
Сообщения: 637
C нами: 4 года 10 мес
Откуда: Самара
Контакты:

Непрочитанное сообщение DelphinPRO » 04 апр 2016, 19:55

или используйте MyISAM формат бд.

А вот этого делать я бы не советовал ни при каких условиях. myisam - нетранзакционное хранилище без внешних ключей и этим всё сказано

Аватара пользователя
Максим
Cейчас: в сети
Сообщения: 4872
C нами: 5 лет 11 мес
Контакты:

Непрочитанное сообщение Максим » 04 апр 2016, 23:08

Dgikar, импортируете все базы в один файл с опцией пересоздания таблиц. Убеждаетесь что информация в файле корректна, а не какие нибудь там кракозяблы или знаки вопросов вместо данных. Останавливаете сервер. Потом удаляете ibdata1, ib_logfile0, ib_logfile1. Потом запускаете сервер и импортируете файл с базами.

Аватара пользователя
keilman
Сообщения: 11
C нами: 1 год 3 мес

Непрочитанное сообщение keilman » 05 апр 2016, 15:11

DelphinPRO писал(а):А вот этого делать я бы не советовал ни при каких условиях. myisam - нетранзакционное хранилище без внешних ключей и этим всё сказано

Вы уж так категорично не отвечали бы!
Сначала нужно узнать, для чего человек использует базу данных, что хранит, какой объем и др.
Я бы сказал, что в большинстве случаев лучше подходит myisam чем innodb.

Аватара пользователя
DelphinPRO
Сообщения: 637
C нами: 4 года 10 мес
Откуда: Самара
Контакты:

Непрочитанное сообщение DelphinPRO » 05 апр 2016, 15:27

ну-ну..

UPD
В прошлый раз некогда было. Сейчас напишу.
Вам важна целостность ваших данных? Думаю да. Представим сферическую БД в вакууме. В ней несколько взаимосвязанных таблиц. При изменении одной таблицы вам необходимо сделать синхронные апдейты в парочке других. Вы начинаете изменять одну таблицу, потом вторую, и тут, бац! - какой-то сбой. Неважно что произошло, суть в том, что последнюю таблицу мы не успели изменить и данные в ней некорректные. Если в этой таблице хранится список котиков, загруженных пользователем на сайт, это не так страшно, как если бы речь шла о финансовых операциях, но для того пользователя это все же важно.
Какой выход вы видите для исключения подобных ситуаций? Лично я вижу только один - обернуть все операции с таблицами в транзакцию. Но MyIsam понятия не имеет о транзакциях. И шо делать???
Про использование внешних ключей, коих тоже нет в MyIsam я пожалуй промолчу, и так увлекся...


Вернуться в «Обсуждение Open Server»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость