powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / тривиальный вопрос о затрате времени на удаление записей из таблицы
25 сообщений из 25, страница 1 из 1
тривиальный вопрос о затрате времени на удаление записей из таблицы
    #40102491
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работаю в Oracle. И даже в MariaDB таких проблем не замечал.

И так MS SQL. база не моя, нужно принять решение, что с ней делать,
и так первый шаг, удалить данные из большой таблицы.

Обычная таблица. 20 Fields, 2 = varchar, 17 integer, 1 int index,
в таблице еcть больше 12 000 000 записей.

PC: I7 3 ГГц, память 16 Гб, SSD диски. в работе комп, не ракета конечно, но летает.

и так DELETE FROM таблица
сколько должно быть затрачено времени в MS SQL для того чтобы удалить 12000000 записей.

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

в отчетах Managament Studio и в Trace на базу в процессе удаления ни чего особенного не было.

и еще РАЗ
СКОЛЬКО ДОЛЖНО БЫТЬ ЗАТРАЧЕНО ВРЕМЕНИ РЕАЛЬНО НА ЧИСТКУ ТАКОЙ ТАБЛИЦЫ?

P.S.
я не понял, почему так долго, например в Oracle, даже в 10-м. я такого не помню, ну когда то чистил логи по несколько миллионов записей, да что говорить, в пару моих проектах, которые запущены в 2004 и 2005 годах, сегодня 2 и даже 3 млрд записей в рабочих таблицах, и народу в них ежедневно по 1000, удаление от баз тоже от 10 метров до 1500 километров. И таблицы эти летают на обычных серверах пролиантах, достаточно старых. Да конечно если сделать select count(*) from dual, то сессия вероятно умрет в рабочие часы, но выборка и фильтры и вообще все работает. ни каких архивов данных, при желании, а это даже больше необходимость в любой момент из пару сотен форм всегда можно выбрать нужную и посмотреть нужный период, например год 2006, или собрать и обработать динамику за несколько лет. это работает и достаточно быстро.
и я боюсь представить, если все это перетащить на MS SQL из Oracle глядя на то как удаляются данные.

кто что скажет про MS SQL?
...
Рейтинг: 0 / 0
тривиальный вопрос о затрате времени на удаление записей из таблицы
    #40102494
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63,

Знаете, что такое FK?
Или что такое truncate?
...
Рейтинг: 0 / 0
тривиальный вопрос о затрате времени на удаление записей из таблицы
    #40102505
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Delete и Select - две большие разницы.

То, что у тя там "из пару сотен форм всегда можно выбрать нужную и посмотреть нужный период," никак не аргумент.

Delete в журнал пишется. А то, вдруг, ты передумаешь?
...
Рейтинг: 0 / 0
тривиальный вопрос о затрате времени на удаление записей из таблицы
    #40102524
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
совершенно согласен с комментариями,

тогда я расширю информацию.

вместе с базой пришел софт, исходные тексты еще не получил, для того чтобы облегчить базу хотел почистить логи в базе, но в софте есть очистка историй, именно софтом это все чистится, именно софтом я это все и запускал,
программист, который должен передать исходные тексты уверяет, что там обычное удаление через DELETE целиком данные из таблицы. и даже пусть так удаляются, у меня остался вопрос?, сколько транзакция на удаление может длиться по времени, если там действительно просто DELETE.

P.S.
дополнение, которое мне не очень понравилось, подсказал это автор сегодня.
соединение софта с базой через ODBC драйвер.
...
Рейтинг: 0 / 0
тривиальный вопрос о затрате времени на удаление записей из таблицы
    #40102530
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63 сколько транзакция на удаление может длиться по времени, если там действительно просто DELETE.Чего ждет сессия?
Освобождения блокировки может ждать до второго пришествия.
yemets63и я боюсь представить, если все это перетащить на MS SQL из Oracle глядя на то как удаляются данные.Не перетаскивайте.
...
Рейтинг: 0 / 0
тривиальный вопрос о затрате времени на удаление записей из таблицы
    #40102540
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257
yemets63 сколько транзакция на удаление может длиться по времени, если там действительно просто DELETE.
Чего ждет сессия?
Освобождения блокировки может ждать до второго пришествия.
yemets63и я боюсь представить, если все это перетащить на MS SQL из Oracle глядя на то как удаляются данные.Не перетаскивайте.
здесь один заказчик с MS SQL хочет получить такое же как у нас в Oracle, но чтобы все работало в MS SQL. И все натянуть в их общую базу. Софт создан на Delphi, внешне все без ошибок, но любое обращение к базам, какие то тормоза, и потом они через ODBC соединяются, у нас трехзвенка, просто базы не перетащить, надо еще в софте много менять, или у них, или у нас.
но их текст ни я ни мои коллеги еще не видели.

но мне все же интересен среднее количество времени, сколько нужно чтобы прибить 12000000 записей.


сегодня хочу попробовать создать тоже в Oracle и попробовать удалить.
пишу скрипт для создания динамических записей, также хочу добавить несколько связанных таблиц чтобы нагрузка была побольше
...
Рейтинг: 0 / 0
тривиальный вопрос о затрате времени на удаление записей из таблицы
    #40102545
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63

здесь один заказчик с MS SQL хочет получить такое же как у нас в Oracle, но чтобы все работало в MS SQL. И все натянуть в их общую базу. Софт создан на Delphi, внешне все без ошибок, но любое обращение к базам, какие то тормоза, и потом они через ODBC соединяются, у нас трехзвенка, просто базы не перетащить, надо еще в софте много менять, или у них, или у нас.
но их текст ни я ни мои коллеги еще не видели.

но мне все же интересен среднее количество времени, сколько нужно чтобы прибить 12000000 записей.


сегодня хочу попробовать создать тоже в Oracle и попробовать удалить.
пишу скрипт для создания динамических записей, также хочу добавить несколько связанных таблиц чтобы нагрузка была побольше


1. ODBC на скорость работы сервера не влияет, двухзвенка то же.

2. Приведите DDL таблицы, на ней может триггеры на Delete висят.
...
Рейтинг: 0 / 0
тривиальный вопрос о затрате времени на удаление записей из таблицы
    #40102565
andy st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
yemets63,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
create table bb (a int,x1 varchar(100),x2 varchar(100),x3 varchar(100),x4 varchar(100),x5 varchar(100),x6 varchar(100),x7 varchar(100),x8 varchar(100),x9 varchar(100),x10 varchar(100))

insert into bb
select x.number  
, cast(x.number as varchar(50))+cast(y.number as varchar(50))
, cast(x.number as varchar(50))+cast(y.number as varchar(50))+cast(y.number as varchar(50))
, cast(x.number as varchar(50))+cast(y.number as varchar(50))+cast(y.number as varchar(50))+cast(y.number as varchar(50))
, cast(x.number as varchar(50))+cast(y.number as varchar(50))+cast(y.number as varchar(50))+cast(y.number as varchar(50))+cast(y.number as varchar(50))
, cast(x.number as varchar(50))+cast(y.number as varchar(50))+cast(y.number as varchar(50))+cast(y.number as varchar(50))+cast(y.number as varchar(50))+cast(y.number as varchar(50))
, cast(x.number as varchar(50))+cast(y.number as varchar(50))+cast(y.number as varchar(50))+cast(y.number as varchar(50))+cast(y.number as varchar(50))+cast(y.number as varchar(50))
, cast(x.number as varchar(50))+cast(y.number as varchar(50))+cast(y.number as varchar(50))+cast(y.number as varchar(50))+cast(y.number as varchar(50))
, cast(x.number as varchar(50))+cast(y.number as varchar(50))+cast(y.number as varchar(50))+cast(y.number as varchar(50))
, cast(x.number as varchar(50))+cast(y.number as varchar(50))+cast(y.number as varchar(50))
, cast(x.number as varchar(50))+cast(y.number as varchar(50))
from master..spt_values x
cross join master..spt_values y
cross join (select 1 x union all select 2) z
exec sp_spaceused 'bb'
declare @x datetime = getdate()
delete from bb
select datediff(second,@x,getdate())


на стрёмном компе с винтом возратом 15 лет удаление происходит 155 секунд из 4 минут общего времени
наверное, кто-то что-то делает не так или не понимает, что делает и что вообще происходит
...
Рейтинг: 0 / 0
тривиальный вопрос о затрате времени на удаление записей из таблицы
    #40102568
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63
программист, который должен передать исходные тексты уверяет, что там обычное удаление через DELETE целиком данные из таблицы.
Поди, в цикле по одной строке за раз удаляет.
...
Рейтинг: 0 / 0
тривиальный вопрос о затрате времени на удаление записей из таблицы
    #40102601
andy st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ennor Tiegael
yemets63
программист, который должен передать исходные тексты уверяет, что там обычное удаление через DELETE целиком данные из таблицы.
Поди, в цикле по одной строке за раз удаляет.

и после каждой delete отдельным запросом select count(*) .. where [key] = ... проверяет, что строка реально удалилась...
а может к таблице через фк прицеплено еще 100500 таблиц с млрд записями и включенным каскадным удалением...
...
Рейтинг: 0 / 0
тривиальный вопрос о затрате времени на удаление записей из таблицы
    #40102604
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63
совершенно согласен с комментариями,

тогда я расширю информацию.

вместе с базой пришел софт, исходные тексты еще не получил, для того чтобы облегчить базу хотел почистить логи в базе, но в софте есть очистка историй, именно софтом это все чистится, именно софтом я это все и запускал,
программист, который должен передать исходные тексты уверяет, что там обычное удаление через DELETE целиком данные из таблицы. и даже пусть так удаляются, у меня остался вопрос?, сколько транзакция на удаление может длиться по времени, если там действительно просто DELETE.

P.S.
дополнение, которое мне не очень понравилось, подсказал это автор сегодня.
соединение софта с базой через ODBC драйвер.


Всё, что вы написали выше - похоже вам и на *** не нужно. Пустите профайлер - увидите запросы, сходите в базу - увидите всё, что там на**еверчено и почитайте ко всему этому всё, что вам уже написали выше.
Извините за езыг пушкенда
...
Рейтинг: 0 / 0
тривиальный вопрос о затрате времени на удаление записей из таблицы
    #40102620
andy st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ролг Хупин
...Пустите профайлер - увидите запросы, сходите в базу - увидите всё, что там на**еверчено...

это самое сложное
проще написать вопрос на форум. там же телепаты сидят, которые по нику вопрошающего реконструируют схему бд, наполнение данными, проблемные запросы...
...
Рейтинг: 0 / 0
тривиальный вопрос о затрате времени на удаление записей из таблицы
    #40102639
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63,

авторсколько должно быть затрачено времени в MS SQL для того чтобы удалить 12000000 записей.

зависит от мощности железа, прежде всего объем оперативной памяти и производительности дисков, зависит от организации хранения данных. Может занимать от нескольких минут до нескольких часов.
...
Рейтинг: 0 / 0
тривиальный вопрос о затрате времени на удаление записей из таблицы
    #40102667
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов
yemets63,

авторсколько должно быть затрачено времени в MS SQL для того чтобы удалить 12000000 записей.


зависит от мощности железа, прежде всего объем оперативной памяти и производительности дисков, зависит от организации хранения данных. Может занимать от нескольких минут до нескольких часов.
В зависимости от наличия FK, каскадных операций на этих FK, наличия индексов на этих FK, триггеров, параллельной нагрузки, характера этой параллельной нагрузки, и, например, уровней изоляции, которые эта параллельная нагрузка использует в типичных случаях - верхняя граница вообще не просматривается.
Лично видел систему, в которой удаление одной записи в некой главной таблице шло 2 (две) минуты . При том что, сервер был на железяке, на ССД, и с каким то космическим объемом памяти, вроде 1 Тб.
... Позвали "хотим проконсультироваться, чота тормозит".
:-)
...
Рейтинг: 0 / 0
тривиальный вопрос о затрате времени на удаление записей из таблицы
    #40102683
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Удаляйте записи порциями (размер порции можно подобрать)
Код: sql
1.
2.
D: DELETE TOP(10000) таблица;
IF @@ROWCOUNT>0 GOTO D;

Чтобы лог не слишком увеличивался.
...
Рейтинг: 0 / 0
тривиальный вопрос о затрате времени на удаление записей из таблицы
    #40102890
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63 но мне все же интересен среднее количество времени, сколько нужно чтобы прибить 12000000 записей.
Создайте табличку на вашем сервере без зависимостей, без блокировок, без триггеров,
заполните ее вашими данными и вашими индексами и запустите удаление.
В худшем случае получите ответ за три часа.

И еще один момент память 16 Гб,
У вас сервера лицензированы? Если да, то стоимость лицензий кроет стоимость лишних 100Gb памяти как бык овцу.
...
Рейтинг: 0 / 0
тривиальный вопрос о затрате времени на удаление записей из таблицы
    #40102942
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вчера смотрел код и все вместе с базой, я немножко шокирован.

суть таковая, здесь это писали, что удаление идет каждой записи отдельно в цикле, на этом срабатывает триггер который записывает информацию об удалении
...
Рейтинг: 0 / 0
тривиальный вопрос о затрате времени на удаление записей из таблицы
    #40102948
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63
вчера смотрел код и все вместе с базой, я немножко шокирован.

суть таковая, здесь это писали, что удаление идет каждой записи отдельно в цикле, на этом срабатывает триггер который записывает информацию об удалении


12 млн транзакций больше чем 1 транзакция. :)

т.е. от сервера, такое время удаления не зависит.
...
Рейтинг: 0 / 0
тривиальный вопрос о затрате времени на удаление записей из таблицы
    #40103163
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63
удаление идет каждой записи отдельно в цикле, на этом срабатывает триггер который записывает информацию об удалении
Они применяют Объектный Подход! :-)
...
Рейтинг: 0 / 0
тривиальный вопрос о затрате времени на удаление записей из таблицы
    #40103171
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63,

а Вы: Майкрософт, Майкрософт...
...
Рейтинг: 0 / 0
тривиальный вопрос о затрате времени на удаление записей из таблицы
    #40103180
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

нет ну в целом мне майкрософт нравится, я не плохо рулю линуксе, но как бы все юзверы юзают майкрософт, ну и логично

но саму базу MS SQL я недолюбливаю, хотя уже третий год в ней, но до этого был Oracle.

ну а дальше лирика о старых проектах.

сначала я не знал Oracle в итоге оказалось его не нужно знать, его нужно любить и понимать, и это так. Я очень люблю Oracle с учетом всех его негативных сторон. И особенно его PL SQL. и ни какой фантазии, умные скрипты, и далее, и в ноябре будет 20 лет как я получил первый сертификат от Oracle, жестокий и сложный экзамен в США. ну а дальше по накатанной.

просто там скрипт сделал, если правильно, то и забыл. как я писал, у меня есть много проектов, но больших не много, но пару больших первых на оракл запусти в 2004 и 2005 году и они в фаворе и сейчас. к сожалению контракты в россии были сделал и забыл. но заказчики иногда говорят о достижении баз и вообще проекта, что приятно, еще бы денег подкидывали.


к сожалению о новых проектах нельзя рассказывать, везде прописано что это запрещено, и как развиваться, я не знаю, ну например при смене работе,
в контрактах написано не разглашать 5, а то и 10 лет. но суть самих контрактов банальна и не особо интересна, и они все публикованы в интернете. а об какой то безопасности и речи нет, все теперь в Ethernet сидит и там свои безопасники.

что будет дальше я не знаю, может еще 20 лет и я успею уйти на высокооплачиваемую пенсию, которая будет равна сумме коммунальных услуг?!:)
...
Рейтинг: 0 / 0
тривиальный вопрос о затрате времени на удаление записей из таблицы
    #40103209
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63
но саму базу MS SQL я недолюбливаю, хотя уже третий год в ней
Уже третий год!
А Оракл за каких то 20 лет узнали и полюбили
:-)

Я вот 20 лет в сиквеле, и один год в Оракле, и абсолютная беспомощность, примитивность его построителя планов запросов пока выбешивает... Ораклу 12 до 2005 Сиквела как до луны, недосягаемо. Про новые версии сиквела я не говорю.
Движок, правда, хорош, ничего не скажешь.
...
Рейтинг: 0 / 0
тривиальный вопрос о затрате времени на удаление записей из таблицы
    #40103239
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63
вчера смотрел код и все вместе с базой, я немножко шокирован.

суть таковая, здесь это писали, что удаление идет каждой записи отдельно в цикле, на этом срабатывает триггер который записывает информацию об удалении


Ну ,вот, придерживайтесь этого современного подхода, не поддавайтесь на всякие "советы", которые здесь могут вам давать.
У вас т.н. смарт-система!
...
Рейтинг: 0 / 0
тривиальный вопрос о затрате времени на удаление записей из таблицы
    #40103260
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63,

Оракл обычно любят те, кто не может соскочить с императивной парадигмы разработки, PL - это процедурный язык, он легко "совмещается" в голове с разного рода бейсиками и тому подобными. А обработка таблиц сводится к понятным циклам перебора строк.
...
Рейтинг: 0 / 0
тривиальный вопрос о затрате времени на удаление записей из таблицы
    #40103285
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63,

"
нет ну в целом мне майкрософт нравится , я не плохо рулю линуксе, но как бы все юзверы юзают майкрософт, ну и логично

но саму базу MS SQL я недолюбливаю, хотя уже третий год в ней, но до этого был Oracle.

ну а дальше лирика о старых проектах."

1. Билл Гейц, ну, ты понял теперь лошара?

2. что означает ваша фраза "я не плохо рулю линуксе" - как-то вообще смысл не просматривается, видимо, глубоко профессиональное высказывание

3. "но саму базу MS SQL я недолюбливаю" - как бы начать помягче, "самой базы MS SQL", которую вы, видимо, справедливо, недолюбливаете, поскольку "неплохо рулю линуксе" - ее нет в природе, просто даже самого понятия нет. Перерулили линуксе, бывает.



4. про лирику о ваших старых проектах даже рука не поднимается писать, там для рулителей линуксе и баз MS SQL
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / тривиальный вопрос о затрате времени на удаление записей из таблицы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]