Удаление записей в базе данных.
Если нет, то, как их удалить, так чтобы размер файла таблицы уменьшился?
Удаляются ли окончательно записи из БД, если выполнить DELETE FROM имя таблицы?
Если нет, то, как их удалить, так чтобы размер файла таблицы уменьшился?
СУБД какая???Действительно в большинстве случаев данные не удаляются а только помечаются на удаление, а удаляются непосредственно при сжатии БД.Остальные рекомендации можно дать только зная СУБД.
Удаляются ли окончательно записи из БД, если выполнить DELETE FROM имя таблицы?
Если нет, то, как их удалить, так чтобы размер файла таблицы уменьшился?
Это зависит от конкретной СУБД. Например, в Oracle delete надо утвердить commit'ом, который завершает транзакцию и сносит записи физически. В Visual FoxPro, если память не подводит, транзакция завершается отдельно, а логически удаленные записи сносятся отдельной командой. В dBase я так и не нашел как по-нормальному снести удаленные записи. То есть при работе с ODBC, при некоторых его настройках, были видны все записи, в том числе якобы удаленные навсегда. Всё может быть сложнее, если мы говорим о серверной СУБД. Тот же Oracle живет по своим правилам. И совсем необязательно, что удаление строки в 100 байт на столько же уменьшит файл данных. А ещё есть общий размер базы. Так что надо разбирать конкретную СУБД.
Это зависит от конкретной СУБД. Например, в Oracle delete надо утвердить commit'ом, который завершает транзакцию и сносит записи физически. В Visual FoxPro, если память не подводит, транзакция завершается отдельно, а логически удаленные записи сносятся отдельной командой. В dBase я так и не нашел как по-нормальному снести удаленные записи. То есть при работе с ODBC, при некоторых его настройках, были видны все записи, в том числе якобы удаленные навсегда. Всё может быть сложнее, если мы говорим о серверной СУБД. Тот же Oracle живет по своим правилам. И совсем необязательно, что удаление строки в 100 байт на столько же уменьшит файл данных. А ещё есть общий размер базы. Так что надо разбирать конкретную СУБД.
Насколько я помню, даже если ты в Оракуле потвердишь коммитом делет все равно физически запись не удалится, она всего-лишь будет помечена на удаление. Просто представь такую ситуацию: Запись твоя, дляной в 100 байт находится в первой трети 2 гиговой БД, тогда если после каждого delete - commit удалять запись физически нао будет создать временный файл куда скопировать всю инфу от начала БД до твоей записи, пропустить длину твоей
Насколько я помню, даже если ты в Оракуле потвердишь коммитом делет все равно физически запись не удалится, она всего-лишь будет помечена на удаление. Просто представь такую ситуацию: Запись твоя, дляной в 100 байт находится в первой трети 2 гиговой БД, тогда если после каждого delete - commit удалять запись физически нао будет создать временный файл куда скопировать всю инфу от начала БД до твоей записи, пропустить длину твоей
Сорри соскочило=(
Продолжаю:
твоей записи - 100 байт и копировать дальше все 8 гигов, сам понимаешь никто на такое не пойдет. Так что практически у всех СУБД физическое удаление осуществляется только в момент Restructure, PackTable и иже с ними.
Сорри соскочило=(
Продолжаю:
твоей записи - 100 байт и копировать дальше все 8 гигов, сам понимаешь никто на такое не пойдет. Так что практически у всех СУБД физическое удаление осуществляется только в момент Restructure, PackTable и иже с ними.
Да, согласен, неточно выразился. В первой фразе про Oracle читай "физическое удаление" как "невидимость для запроса", а во второй фразе - именно как удаление. К стати, в контексте вопроса надо наверное считать, что физическое удаление - это уменьшение файла данных. Так вот теже 100 байт в Oracle в конце таблицы тоже не особо понятно. Место под данные рспределяется не по 1 байту, что-то падает в логи, индексы опять же и т.п. Так что про серверные СУБД предлагаю вообще забыть.
СУБД какая???Действительно в большинстве случаев данные не удаляются а только помечаются на удаление, а удаляются непосредственно при сжатии БД.Остальные рекомендации можно дать только зная СУБД.
СУБД: Paradox 7 и dBase. Как сделать Restructure, PackTable и иже с ними.
p.s. какую субд dBase лучше использовать: dBase III+, dBase IV, dBase for Windows ?
СУБД: Paradox 7 и dBase. Как сделать Restructure, PackTable и иже с ними.
p.s. какую субд dBase лучше использовать: dBase III+, dBase IV, dBase for Windows ?
По логике конечно dBase IV круче чем III+, а тот что "for Windows" наверное еще круче. Но что-то мне говорит что на самом деле монопенисуально:D Посмотри просто кто позже выпушен, а потом юзай Парадокс=)))