Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 DDL внутри транзакции  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
Возник вопрос, в каких базах данных кроме DB2 возможен DDL внутри транзакции? Для Oracle - понятно - всякий DDL вызовет коммит, который приведет к завершению транзакции. Sybase ASE - просто не позволяет DDL внутри транзакции. А как в остальных базах, ASA,MSSQL,POSTGRES и пр? для примера на DB2:

connect to test

   Database Connection Information

 Database server        = DB2/NT 8.2.0
 SQL authorization ID   = DB2ADMIN
 Local database alias   = TEST


create table ddltest ( id int)
DB20000I  The SQL command completed successfully.

insert into ddltest values(1)
DB20000I  The SQL command completed successfully.

select * from ddltest

ID         
-----------
          1

  1 record(s) selected.


rollback
DB20000I  The SQL command completed successfully.

select * from ddltest
SQL0204N  "DB2ADMIN.DDLTEST" is an undefined name.  SQLSTATE=42704


и так при создании любого объекта - хранимых процедур, индексов, триггеров, врем. таблиц.
4 фев 05, 11:58    [1299795]     Ответить | Цитировать Сообщить модератору
 Re: DDL внутри транзакции  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Для MS SQL:

USE pubs
GO
SET XACT_ABORT ON
BEGIN TRAN
GO
CREATE TABLE TestTable(col1 int NOT NULL)
GO

INSERT INTO TestTable VALUES(1)

SELECT * FROM TestTable

ROLLBACK TRAN

SELECT * FROM TestTable

и результат:


(1 row(s) affected)

col1        
----------- 
1

(1 row(s) affected)

Server: Msg 208, Level 16, State 1, Line 1
Invalid object name 'TestTable'.
4 фев 05, 12:04    [1299815]     Ответить | Цитировать Сообщить модератору
 Re: DDL внутри транзакции  [new]
ASCRUS
Member

Откуда: МО Электросталь
Сообщений: 5994
В ASA любая DDL обозначается, как AUTO COMMIT, поэтому на момент ее выполнения будет завершена текущая транзакция оператором COMMIT и после ее выполнения выполнен опять же COMMIT. В данном приведенном примере после ROLLBACK будет возвращен пустой набор данных с таблицы ddltest.
4 фев 05, 12:12    [1299849]     Ответить | Цитировать Сообщить модератору
 Re: DDL внутри транзакции  [new]
Yo!
Guest
в оракле если уж так нужно DDL выполняют в автономных транзакциях, т.е. выполнить не прерывая транзакции проблемы нет, проблема в бесмыслености - во первых очень дорого, а во вторых всех юзеров в очередь не поставишь.
4 фев 05, 12:27    [1299907]     Ответить | Цитировать Сообщить модератору
 Re: DDL внутри транзакции  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
Yo!
в оракле если уж так нужно DDL выполняют в автономных транзакциях, т.е. выполнить не прерывая транзакции проблемы нет, проблема в бесмыслености - во первых очень дорого, а во вторых всех юзеров в очередь не поставишь.

OK! Запомним, дома попробуем...)
4 фев 05, 12:28    [1299914]     Ответить | Цитировать Сообщить модератору
 Re: DDL внутри транзакции  [new]
ASCRUS
Member

Откуда: МО Электросталь
Сообщений: 5994
Я честно говоря даже не представляю себе, зачем в рабочем порядке, да еще и внутри транзакции выполнять DDL. IMHO это должен делать проектировщик БД или администратор, которые представляют себе, зачем это делают.
4 фев 05, 12:30    [1299922]     Ответить | Цитировать Сообщить модератору
 Re: DDL внутри транзакции  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
просто прямо сейчас на глазах возникла ситуация в ASE, когда вызвали хранимку внутри транзакции, а она как на грех - создает временную таблицу - и полный отлуп. :((
4 фев 05, 12:32    [1299930]     Ответить | Цитировать Сообщить модератору
 Re: DDL внутри транзакции  [new]
ASCRUS
Member

Откуда: МО Электросталь
Сообщений: 5994
Минуточку, времянки это совсем другое дело и в той же ASA создание локальной времянки никоим образом не влияет на транзакцию, блокировки в БД и прочее. Вроде как речь шла про DDL над постоянными, а не временными обьектами БД ?
4 фев 05, 13:01    [1300055]     Ответить | Цитировать Сообщить модератору
 Re: DDL внутри транзакции  [new]
Хрен
Member

Откуда: Brisbane
Сообщений: 1455
Посмотри на mysql сайте feature comparisons
вот тут, выдели какие интересно базы и там параметр rollback metadata
4 фев 05, 13:10    [1300101]     Ответить | Цитировать Сообщить модератору
 Re: DDL внутри транзакции  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
Хрен
Посмотри на mysql сайте feature comparisons
вот тут, выдели какие интересно базы и там параметр rollback metadata


Мда... вот посмотрят люди такие ссылки, и примут неверное решение...
Инфа явно устаревшая.


2 ASCRUS

Да, речь идет как о постоянных объектах, так и о временных.
В DB2 абсолютно без разницы - можно в одной транзакции понасоздавать кучу объектов влить в них инфу а потом бухнуть коммит или роллбак или откатиться к savepoint и т.д.

А с автономными транзакциями в Оракл поразбираюсь на выходных, возможен ли такой же вариант. Боюсь что не прокатит.
4 фев 05, 13:34    [1300239]     Ответить | Цитировать Сообщить модератору
 Re: DDL внутри транзакции  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
ASCRUS
IMHO это должен делать проектировщик БД или администратор, которые представляют себе, зачем это делают.


а если это именно проектировщик БД или администратор написал такой скрипт, на создание пары таблиц и изменении пары вью?! И этот скрипт должен выполняться по определенному графику и должен или выполниться целиком или никак? Вы не допускаете такой возможности?

ЗЫ. Вот мне интересно, почему тут у некоторых участников, если их любимая СУБД не поддерживает какой-то фичи, то эта фича автоматически превращается в "бесполезную".
4 фев 05, 13:37    [1300260]     Ответить | Цитировать Сообщить модератору
 Re: DDL внутри транзакции  [new]
Yo!
Guest
2pkarklin

такие администраторы/разрваботчики живут слишком мало и по понятным причинам не воспроизводят потомства, чтоб кто-то успевал озаботится такими проблемами :)
4 фев 05, 13:47    [1300326]     Ответить | Цитировать Сообщить модератору
 Re: DDL внутри транзакции  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Yo!
2pkarklin

такие администраторы/разрваботчики живут слишком мало и по понятным причинам не воспроизводят потомства, чтоб кто-то успевал озаботится такими проблемами :)


А поумнее что-нибудь и в тему топика слабо?! ;)
4 фев 05, 13:53    [1300376]     Ответить | Цитировать Сообщить модератору
 Re: DDL внутри транзакции  [new]
ASCRUS
Member

Откуда: МО Электросталь
Сообщений: 5994
pkarklin
ASCRUS
IMHO это должен делать проектировщик БД или администратор, которые представляют себе, зачем это делают.


а если это именно проектировщик БД или администратор написал такой скрипт, на создание пары таблиц и изменении пары вью?! И этот скрипт должен выполняться по определенному графику и должен или выполниться целиком или никак? Вы не допускаете такой возможности?

ЗЫ. Вот мне интересно, почему тут у некоторых участников, если их любимая СУБД не поддерживает какой-то фичи, то эта фича автоматически превращается в "бесполезную".

Изменять структуру БД по расписанию графика или через клиентское приложение ? Ну, ну - Вам надо серьезно посмотреть в сторону ООСУБД, говорят там это прекрасно работает без проблем. А в остальном полностью присоединяюсь к высказываниям предыдущего сообщения "Yo!".
4 фев 05, 14:06    [1300467]     Ответить | Цитировать Сообщить модератору
 Re: DDL внутри транзакции  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
ASCRUS
pkarklin
ASCRUS
IMHO это должен делать проектировщик БД или администратор, которые представляют себе, зачем это делают.


а если это именно проектировщик БД или администратор написал такой скрипт, на создание пары таблиц и изменении пары вью?! И этот скрипт должен выполняться по определенному графику и должен или выполниться целиком или никак? Вы не допускаете такой возможности?

ЗЫ. Вот мне интересно, почему тут у некоторых участников, если их любимая СУБД не поддерживает какой-то фичи, то эта фича автоматически превращается в "бесполезную".

Изменять структуру БД по расписанию графика или через клиентское приложение ? Ну, ну - Вам надо серьезно посмотреть в сторону ООСУБД, говорят там это прекрасно работает без проблем. А в остальном полностью присоединяюсь к высказываниям предыдущего сообщения "Yo!".


Интересно слушать Ваши высказывания, однако. И как всегда - одни эмоции, а аргументации никакой.
4 фев 05, 14:13    [1300519]     Ответить | Цитировать Сообщить модератору
 Re: DDL внутри транзакции  [new]
Yo!
Guest
>Интересно слушать Ваши высказывания, однако. И как всегда - одни эмоции, а аргументации никакой.

вы действительно не понимаете ? тогда вам стоит задуматся о сохранности ваших яиц :)
4 фев 05, 14:23    [1300596]     Ответить | Цитировать Сообщить модератору
 Re: DDL внутри транзакции  [new]
ASCRUS
Member

Откуда: МО Электросталь
Сообщений: 5994
pkarklin
Интересно слушать Ваши высказывания, однако. И как всегда - одни эмоции, а аргументации никакой.

Интересно - и какую же аргументацию я должен Вам отписать ... пособие о том, что такое РСУБД и как правильно проектировать БД и почему нельзя использовать DDL по ходу работы боевой базы ? Вы правда так проектируете БД или просто прикалываетесь ? Может поделитесь опытом, в каких ситуациях может понадобиться динамическое создание и изменения таблиц, индексов, и представлений ? Я конечно понимаю, что полноценных EVENT-ов в MSSQL нет и динамический SQL нужно использовать осторожно и вдумчиво, но чтобы то, чего не хватает в MSSQL на DDL разруливать ... вот никак не въеду, надо править в консерватории что то наверное, осталось только выяснить в чьей :)
4 фев 05, 14:34    [1300652]     Ответить | Цитировать Сообщить модератору
 Re: DDL внутри транзакции  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Yo!
>Интересно слушать Ваши высказывания, однако. И как всегда - одни эмоции, а аргументации никакой.

вы действительно не понимаете ? тогда вам стоит задуматся о сохранности ваших яиц :)


Ну так объясните, мне тупому, не заботящемуся о сохранности своих яиц, каким образом выполнения инструкции DDL в транзакции может повлиять на систему. Не забывая, что права на эти инструкции принадлежат очень узкому кругу лиц (если в контексте сиквела, то это члены серверной роли sysadmin и члены ролей бд db_owner и ddl_admin) и простых смертных в эти роли не включают. Тоже самое касается и джобов, автоматизирующих административные задачи. И специально для ASCRUS. позвольте Вас спросить, Вы, как администратор Вашего сервера разве не из клиентского приложения инструкции DDL на сервер отправляете? Ведь утилиты, типа QA в SQL Server - это всего-навсего - клиентские приложения.
4 фев 05, 14:34    [1300653]     Ответить | Цитировать Сообщить модератору
 Re: DDL внутри транзакции  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
Граждане программисты! относитесь с уважение друг к другу!
4 фев 05, 14:36    [1300663]     Ответить | Цитировать Сообщить модератору
 Re: DDL внутри транзакции  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
ASCRUS
Может поделитесь опытом, в каких ситуациях может понадобиться динамическое создание и изменения таблиц, индексов, и представлений ?


Секционированные представления.
4 фев 05, 14:36    [1300671]     Ответить | Цитировать Сообщить модератору
 Re: DDL внутри транзакции  [new]
Yo!
Guest
вообщето это вопрос на уровне детского сада.
1. оптимайзер промышленых субд опираются на статистику.
2. как вы представляете дропанье/создавание пусть и по расписанию таблиц с милионами запией ? в этот момент что происходит с юзерами их просят уйти ?
3. кто такое а главное как будет супортить ?
4. репликация.
5. кластер - mssql например не умеет ddl на ноды передавать.
6. в доках по ораклу четко написано что изменение схемы боего сервера имеет права вносить только админ в экстренном случае заполняя немеряное кол-во бумажек чтоб объяснить такое святотатство.
4 фев 05, 14:51    [1300739]     Ответить | Цитировать Сообщить модератору
 Re: DDL внутри транзакции  [new]
ASCRUS
Member

Откуда: МО Электросталь
Сообщений: 5994
pkarklin
ASCRUS
Может поделитесь опытом, в каких ситуациях может понадобиться динамическое создание и изменения таблиц, индексов, и представлений ?


Секционированные представления.

Я знаю что такое секционированные представления. Мне интересует обоснование применения DDL внутри транзакций с возможностью отката, Вы же вроде это называете "фичей" ?
4 фев 05, 14:55    [1300760]     Ответить | Цитировать Сообщить модератору
 Re: DDL внутри транзакции  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Yo!
1. оптимайзер промышленых субд опираются на статистику.


Вот спасибо, просвятили, а то я и не знал.

Yo!
]2. как вы представляете дропанье/создавание пусть и по расписанию таблиц с милионами запией ? в этот момент что происходит с юзерами их просят уйти ?


А где вы прочитали, что я что-то собирался дропать таблицу с миллионом записей??? Что-то Вы сами начинаете Выдумывать ткие примеры использования DDL, которые действительно ни один нормальный админ не допустит. А мне надо просто создать табличку и малость альтернуть представление. Юзерам тут никто не мешает работать никоим образом.

Yo!
3. кто такое а главное как будет супортить ?


Какое-такое?! И в чем тогда по Вашему занимается саппорт? И, простите, у Вас никогда не было ситуации, когда приходилось накатывать DDL скрипты на базу?

Yo!
4. репликация.
5. кластер - mssql например не умеет ddl на ноды передавать.


Опять Вы пытаетесь создать ситуацию, в которой админом было бы принято другое решение! Как это коррелируется с моим примером про двет таблички? там про репликацию и кластер не говрилось!

Yo!
6. в доках по ораклу четко написано что изменение схемы боего сервера имеет права вносить только админ в экстренном случае заполняя немеряное кол-во бумажек чтоб объяснить такое святотатство.


Понятно, что дворнику Пупкину этого не доверят. Но у меня как раз экстренный случай и бумажки я все подписал. Да и не надо переигрывать, на счет святотатства в плане изменения схемы боего сервера.
4 фев 05, 15:02    [1300797]     Ответить | Цитировать Сообщить модератору
 Re: DDL внутри транзакции  [new]
Лох Позорный
Member

Откуда:
Сообщений: 9898
pkarklin
А мне надо просто создать табличку и малость альтернуть представление.

А зачем в транзакции? Да еще в транзакции, где всякий DML используется?
4 фев 05, 15:04    [1300812]     Ответить | Цитировать Сообщить модератору
 Re: DDL внутри транзакции  [new]
tru55
Member

Откуда: СПб
Сообщений: 19788
Не хотел вмешиваться в вашу дискуссию, но обратила внимание фраза

6. в доках по ораклу четко написано что изменение схемы боего сервера имеет права вносить только админ в экстренном случае заполняя немеряное кол-во бумажек чтоб объяснить такое святотатство.

Вообще-то любой пользователь, имеющий соответствующие привилегии (а они прописаны в часто предоставляемых ролях CONNECT, RESOURCE) может делать в СВОЕЙ схеме все что угодно
4 фев 05, 15:07    [1300829]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить