• scur (26.02.10 08:59) [0]
    Привет всем мастерам !!!

    Вопрос следующий:
    Есть база состящая из одной таблици и 5000 записей в ней, размер примерно 90 Мб, так вот после удаления всех записей размер базы остаётся без изменений, в чём может быть проблема или так и должно быть, или я делаю что то не правильно.

    Удаляю так:

    AdoTabele.Recno:=1;
    AdoTabele.Delete;

  • 12 © (26.02.10 09:09) [1]
    во многих СУБД так и должно быть, а в некоторых - нет.
    А в особо секретных, как в Вашем случае, возможно и расширение
  • scur (26.02.10 09:19) [2]

    > 12 ©   (26.02.10 09:09) [1]


    Спасибо.

    Если интересно то база созданна в Microsoft Office Access 2007.
    К стати после пересохранения в Access она занимает 270 Кб.
  • Sergey13 © (26.02.10 09:30) [3]
    > [2] scur   (26.02.10 09:19)

    Если записи будут появляться снова, то никакого смысла в сжимании нет. Скорее даже вред, т.к. под расширение файла БД будут тратиться лишние ресурсы. Небольшие конечно, но все таки.
  • sniknik © (26.02.10 09:31) [4]
    > в чём может быть проблема
    вовсе не в размере базы, а например вот в этом...
    > AdoTabele.Recno:=1;
    > AdoTabele.Delete;



    > К стати после пересохранения в Access она занимает 270 Кб.
    там есть пункт "упаковка и восстановление", ну или что то типа, а что для этого сделал ты? вот и результат - ничего. аналогично.
  • sniknik © (26.02.10 09:39) [5]
    > Небольшие конечно, но все таки.
    файловые операции как раз одни из самых ресурсоемких, почему и вся эта "байда" с размерами. т.к. разработчики баз всеми силами пытались избегать лишних.
    и как иногда кажется зря... волнует нынешних "программистов" вовсе не скорость (с ней они попросту борются, как понимаешь глядя на их методы работы) а размер! (что то другое тоже маленькое и должно соответствовать?)
  • scur (26.02.10 09:41) [6]

    > sniknik ©   (26.02.10 09:31) [4]



    > вовсе не в размере базы, а например вот в этом...
    > AdoTabele.Recno:=1;
    > AdoTabele.Delete;


    данный код всавляется в цикл по количеству записей, а результат всёравно пустая база.


    > там есть пункт "упаковка и восстановление", ну или что то
    > типа, а что для этого сделал ты? вот и результат - ничего.
    >  аналогично.


    А как это жожно сделать из Delphi, и возможно ли это?
  • scur (26.02.10 09:43) [7]

    > Sergey13 ©


    > sniknik ©


    Идея закючается в переносимости и компактности базы.
  • sniknik © (26.02.10 09:51) [8]
    ну вот, я же говорил.
    неправильные методы работы его совершенно не волнуют, будет продолжать (результат то то одинаков, а то что идет к соседнему подъезду в обратную сторону обходя квартал неважно), но зато размер... больное место. а покажи как, так он не думая еще и операцию упаковки поле каждого действия "вляпает".
  • Sergey13 © (26.02.10 09:52) [9]
    > [7] scur   (26.02.10 09:43)

    Ну так вот в аксесе сжал и переноси это файло. Зачем в программу то вставлять эту РАЗОВУЮ операцию?
  • scur (26.02.10 10:35) [10]

    > Sergey13 ©


    Ну скажем ситуация следующая, предприятие провило инвентаризацию и очень большое количество оборудование списало, что привело к соответствующему удалению записей из базы. А теперь представим что база ветит не Мб, а Гб, и нам нужно за бекапить базу, то чтобы не сохранять левый объём, мне каждый раз понадобиться вставлять её в аксес, интересный метод оптимизации, может кому то он и подойдёт, но не мне.

    Но на вопрос так и не ответили можно ли это сделать (упаковать) из Delphi, подскажите или ссылочку на литературу плиз.
  • Sergey13 © (26.02.10 10:45) [11]
    > [10] scur   (26.02.10 10:35)

    Во первых. Гигабайт - это детский лепет для БД предприятия.
    Во вторых. Твоя БД из одной таблицы в аксесе - это даже не детский лепет, а просто пшик. Тем более с AdoTabele.Delete в цикле.
    В третьих. Бекап это не обязательно простое копирование файлов и при нем необязательно "сохраняется левый объём".

    Ты решай свои локальные текущие задачи и меньше думай о "глобальном". Это пока не твои проблемы.
  • Плохиш © (26.02.10 10:53) [12]

    > Ну скажем ситуация следующая, предприятие

    Предприятию стоит нанять программиста.
  • 12 © (26.02.10 10:55) [13]
  • scur (26.02.10 10:58) [14]
    Тема закрыта
  • Anatoly Podgoretsky © (26.02.10 11:15) [15]

    > во многих СУБД так и должно быть, а в некоторых - нет.

    Назови хоть одну СУБД, которая проводит упаковку базы после каждого удаления.
  • 12 © (26.02.10 11:17) [16]
    плоский файл
  • 12 © (26.02.10 11:21) [17]
    хотя и признаю, что это не субд, вообщем-то
    но вот доводилось переписывать(заново писать) одну программку, еще на асм под дос писанную, где данные были ~ 650 мб файла txt
  • Anatoly Podgoretsky © (26.02.10 11:56) [18]
    > 12  (26.02.2010 11:21:17)  [17]

    И удаление одной записи из файла занимало 10+ секунд.
  • 12 © (26.02.10 12:07) [19]
    ну где-то так или все же поменьше, там хитро что-то вроде индексов в соседнем файле валялось. 93 год программка и с того времени копили :)
Есть новые Нет новых   [134435   +33][b:0][p:0.001]