172 похожих чатов

Ребят, на собесе однажды задали вопрос. Считается ли Truncate DDL

или DML операцией. Ответ оказался неочевидным - в PostgreSQL truncate является DML командой, хотя в других субд DDL. Может кто ответить, почему так?

26 ответов

12 просмотров

Нипочему, деление всё равно очень условно. Можно считать как DDL, так и DML.

Потому Definition от Modification отличается, транкейт чистит, то есть меняет данные, хоть и за один присест.

Ilya Anfimov
Нипочему, деление всё равно очень условно. Можно с...

я бы сказал, что это DDL, т.к. ему требуется AEL, также как и ALTER TABLE-у. DML берут ниже уровни блокировок.

это странное утверждение, я бы тоже хотел услышать объяснение, почему именно в Postgres-е это DML.

Mirasil👨🏽‍💻
https://t.me/pgsql/472899, можешь ли ты мне помочь...

почему я? и с чем помочь? я по видосам не работаю

Виктор Егоров
я бы сказал, что это DDL, т.к. ему требуется AEL, ...

Уровни блокировок мне кажется не могут влиять на суть операции. По мне это всюду dml )))))

Konstantin Zaitsev
Уровни блокировок мне кажется не могут влиять на с...

могут. согласно таблице 13.2 типовые DML операции берут такие локи, которые не блокиурую SELECT-ы https://www.postgresql.org/docs/current/explicit-locking.html#LOCKING-TABLES TRUNCATE же намертво блокирует таблицу на время операции через Access Exclusive (самая тяжелая) я исхожу только из этого факта — TRUNCATE блокирует SELECT-ы, значит это “тяжелее” чем DML. это моё мнение.

Ага(хотя я и против что это DLL))), а вопрос на собесе понятно откуда - cannot be rolled back like a DML operation

Konstantin Zaitsev
Ага(хотя я и против что это DLL))), а вопрос на со...

конеретно cannot be rolled back и говорит о том, что это не DML. я действительно хочу услышать пояснения

Виктор Егоров
конеретно cannot be rolled back и говорит о том, ч...

PostgreSQL, db2 по-моему поддерживают rollback для нее) я чисто к тому откуда вопрос мог такой взяться

V
Потому Definition от Modification отличается, тран...

Забавно, нейросеть считает что происходит изменение структуры базы а не данных так данные таблицы перезаписываются и перезаписываются значения счетчиков: Операция TRUNCATE, в отличие от DELETE, является операцией Data Definition Language (DDL), поскольку она изменяет структуру базы данных, а именно, удаляет данные из таблицы, но не удаляет саму таблицу. Операция TRUNCATE действует быстрее, чем DELETE, благодаря тому, что она не сохраняет информацию об удаленных строках и не применяет триггеры, а также не возвращает идентификаторы удаленных строк. TRUNCATE не удаляет безвозвратно таблицу из базы данных, но он изменяет структуру таблицы и освобождает место, занимаемое данными, которые для этого используются. При выполнении операции TRUNCATE все строки таблицы удаляются и таблица сбрасывается в начальное состояние: в ней не остается строк, и первичный ключ счетчика для таблицы сбрасывается на 1. Таким образом, при выполнении операции TRUNCATE меняется структура таблицы, поскольку информация об этой таблице и ее связь со счетчиком перезаписываются.

Дмитрий Иванов
Забавно, нейросеть считает что происходит изменени...

объяснение идеальное канеш - удаляет данные, а не таблицу, значит DDL. чатгпт-4 вроде получше в логику умеет

Alexander Shelemin
объяснение идеальное канеш - удаляет данные, а не ...

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

А в чем практическая ценность этого знания?

Append например тоже берет эксклюзивную блокировку

Дмитрий Иванов
Забавно, нейросеть считает что происходит изменени...

Забавно, что вы учитесь у нейросети. В этом тексте первая часть противоречит второй. Продолжайте в том же духе ✌️😊

Nikita Malakhov
INSERT /*+ append */

этого нет в ванильном Postgres-е, а что там в кастомных расширениях, я, увы, не знаю…

Виктор Егоров
этого нет в ванильном Postgres-е, а что там в каст...

этого вообще нет в Pg, это в Оракле, но сути это не меняет

Ilya Anfimov
А что за append?

The APPEND hint tells the optimizer to perform a direct-path insert, which improves the performance of INSERT .. SELECT operations for a number of reasons: Data is appended to the end of the table, rather than attempting to use existing free space within the table. Data is written directly to the data files, by-passing the buffer cache. Referential integrity constraints are not considered. * No trigger processing is performed. * The combination of these features make direct-path inserts significantly quicker than conventional-path inserts.

Nikita Malakhov
этого вообще нет в Pg, это в Оракле, но сути это н...

в смысле сути не меняет? - другая база как бы - кастомное расширение функционала через хинты - при всех прочих — ломается конкурентность на таблице в ноль при использовании, что противоречит принципу версионных движков “писатели не блокируют читателей” называть что-либо, требующее AEL локи, DML операцией… это же прямое противоречие определению!

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
53
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
я имею в виду официально интегрированный в телегу? в том плане что не сливает переписку с пользователем?
Andrey
9
Кто-нибудь решал проблему с автоматическим скроллингом к выбранной ячейке в TDBGrid в Lazarus? Проблема в том, что есть допустим 3 столбца, третий столбец виден наполовину, вк...
Дмитрий Логинов
1
А чего сейчас в моде вместо Error для эксепшенов? А то я тут внезапно узрел что он не рекомендуется :) У Try::Tiny какой-то совершенно ужасный синтаксис если надо конкретные э...
Denis F
19
Приветствуем всех! Устали без проектов? Если вы программист и хотите получать стабильные заказы, компания Elif предлагает вам недельный курс по поиску проектов и их ведению. ...
Elif
1
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Чорт! Чорт! Чорт! Стала ставить через GetIt (написано же, что ручками не рекомендуется) Сломалось на дублировании моей TSkLabel. Чтож мне ее по всем проектам переименовывать в...
Катерина Свиридова
7
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
Карта сайта