ещё одна претензия к mysql
ну должна же быть команда чтобы сдуть
в оракле тоже не сдуется, но есть команда чтобы сдуть
ваще-то команда есть
ваще-то команда естьПодскажешь?
я ламо в БД, но когда у меня порезанная БД на 600 мегов так и не стала ужиматься, я понял что надо ботать документацию по администрированию %)
OPTIMIZE TABLEи какой TABLE прикажешь OPTIMIZE? Я удалил не только толстую таблицу, но и всю базу, её содержащую.
а почему должен? мне не очевидно
к сведению: innodb не принадлежит mysql(sun это собственность oracle.
значит, у меня MySQL не по той системе работает
а почему должен? мне не очевиднобыло бы неплохо, если б был команда для дефрагментации. Было бы очень хорошо, если бы она сама дефрагментировалась в фоновом режиме, когда нет нагрузки
к сведению: innodb не принадлежит mysql(sun это собственность oracle.мне это неинтересно. мне интересно, что у меня на машине 20 Г данных занимают 220 Г места, а из-за этого я не могу дамп в постгрес закачать. Который, кстати, общественный, а потому место освобождает без бубна.
значит, у меня MySQL не по той системе работаетпо идее можно было изначально сказать: "ребята, каждая таблица в своём файле". У меня такого сделано не было (по независящим от меня причинам). Впрочем, я считаю, что и в режиме "всё в одном файле" такого безобразия происходить не должно.
кстати, быстрее было бы сделать alter в myisam, потом обратно, чем через дамп
пиши фичереквестгорбатого могила исправит.
кстати, быстрее было бы сделать alter в myisam, потом обратно, чем через дампне "бы" а может быть так и сделаю, спасибо
но вот не уверен: там таблиц до жопы может быть, да и нет ли свойств, которые могут потеряться при конвертировании?
да и нет ли свойств, которые могут потеряться при конвертированииforeign key и прочее констрейновое добро должно проипаться
а из-за этого я не могу дамп в постгрес закачать. Который, кстати, общественный, а потому место освобождает без бубна.Постгрес общественный, но местами - такое же говно. Например, почитай, что нужно делать, когда у них меняется формат метаданных на диске между версиями постгреса. Такое происходит не так уж и редко - раз в несколько лет. Чтобы чтение было более увлекательным, представь, что у тебя в этом постгресе данных, скажем, гигов 800.
innodb_file_per_table конечно спасет, но без экспорта/импорта не преобразовать. >_<
Вот как раз у оракла с этим все хорошо. Есть и дефрагментация таблспейса, и изменение его размера.
так innodb не их разработка -)
А там уже разумно что после delete место не освобождается, ибо там же данные физически лежат аки праймари кей, что даёт бонусы при селектах. В общем претензия не к mysql а к своему неразумному прошлому
А там уже разумно что после delete место не освобождается, ибо там же данные физически лежат аки праймари кей, что даёт бонусы при селектах.А какой-нибудь командой можно будет перестроить таблицу, чтобы она меньше места жрала, когда из нее половину данных удалят?
Или опять импорт/экспорт?
В общем претензия не к mysql а к своему неразумному прошломуПретензия к отсутствию функионала. Индексы тоже можно перестраивать, если данные таблицы перемещаются.
Ну будет урок что надо таблицы в разных файлах хранить.вообще-то это изврат. То что база должна уметь делать дефрагментацию — так же очевидно, что как то что дефрагментироваться должна ФС. Представь себе, что ты хранишь файлы на жёстком диске, потом удаляешь, а место не освобождается. А тебе говорят: претензии не к файловой системе, надо было хранить разные данные на разных разделах.
А там уже разумно что после delete место не освобождается, ибо там же данные физически лежат аки праймари кей, что даёт бонусы при селектах.тем не менее после dump-restore они лежат по-другому. Значит mysql не за бонусами гонится, а просто ленится (и не даёт) что-то менять.
А там уже разумно что после delete место не освобождается, ибо там же данные физически лежат аки праймари кей, что даёт бонусы при селектах. В общем претензия не к mysql а к своему неразумному прошломуя правильно понял, что если мы используем таблицу с primary key по времени - каждый день в нее активно добавляем кучу записей с сегодняшней датой, а старые(например, старше месяца) удаляем, то это таблица будет бесконечно расти?
и ты считаешь, что это нормальное поведение базы?
вообще-то это изврат. То что база должна уметь делать дефрагментацию — так же очевидно, что как то что дефрагментироваться должна ФС. Представь себе, что ты хранишь файлы на жёстком диске, потом удаляешь, а место не освобождается. А тебе говорят: претензии не к файловой системе, надо было хранить разные данные на разных разделах.Вообще-то от того что ты удалишь файл, размер раздела не изменится.
Пример с файловой системой совсем не в тему.
Нет. Пустое место повторно используется. Он про то, что оставшиеся данные при delete не передвигаются, ибо на них ссылаются индексы.
Вообще-то от того что ты удалишь файл, размер раздела не изменится. Пример с файловой системой совсем не в тему.ну да, не удалась аналогия.
скорее в тему жалоба программы, которые не возвращают память ОС (и которую можно вернуть, только перегрузив комп а в ответ предложение запускать их на разных машинах.
Нет. Пустое место повторно используется. Он про то, что оставшиеся данные при delete не передвигаются, ибо на них ссылаются индексы.каким образом оно используется, если вставка идет в конец, а место в начале, и данные не передвигаются?
А кто сказал, что вставка идет в конец?
А кто сказал, что вставка идет в конец?потому что primary key по времени и кластерный.
а записи добавляются по увеличению времени.
Если в такую таблицу запись в середину вставить, ты думаешь, оно полтаблицы двигать будет?
согласен, что
переиспользование места(на уровне кусков) делается легко,
освобождение места(на уровне кусков) - делается тоже легко, но разработчики обычно ленятся,
дефрагментация - делается сложно.
Представь себе, что ты хранишь файлы на жёстком диске, потом удаляешь, а место не освобождается.Вообще-то, с использованинем этой аналогии - так и есть. Ты удалил файлы - а данные на винчестере остались. Записал новые файлы - данные на винчестере изменились.
Так и тут - если была таблица на 800М, потом её удалили, а файл по-прежнему весит 800М - наверняка можно создать новую таблицу и напихать в неё на 800М данных, и файл не распухнет.
дефрагментация - делается сложно.Как на уровне разработчика, так и на уровне пользователя (по времени).
только я не помню, есть уже в линуксе сисколл, делающий дыру
но если нет, тоже не очень страшно
Оставить комментарий
hwh2010
Был тут тред про LAMP и другие технологии, я там предъявил несколько претензий к mysql, но они все были в пределах разумного.Однако, сегодня я столкнулся с особенностью mysql (а, точнее, InnoDB от которой просто выпал в осадок.
Оказывается, если создать базу, положить в неё 200G данных, а потом удалить, то файл на жёстком диске раздуется на 200G, а обратно не сдуется. И нет другого способа уменьшить его обратно, кроме как ВСЕ базы, вертящиеся в том же Tablespace, складировать в виде дампа, а потом заново залить.
вот и всё.
в рот мне ноги, фак мой мозг.