Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / DDL внутри транзакции / 25 сообщений из 52, страница 1 из 3
04.02.2005, 11:58
    #32900965
gardenman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL внутри транзакции
Возник вопрос, в каких базах данных кроме DB2 возможен DDL внутри транзакции? Для Oracle - понятно - всякий DDL вызовет коммит, который приведет к завершению транзакции. Sybase ASE - просто не позволяет DDL внутри транзакции. А как в остальных базах, ASA,MSSQL,POSTGRES и пр? для примера на DB2:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
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 


и так при создании любого объекта - хранимых процедур, индексов, триггеров, врем. таблиц.
...
Рейтинг: 0 / 0
04.02.2005, 12:04
    #32900981
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL внутри транзакции
Для MS SQL:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
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

и результат:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
( 1  row(s) affected)

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

( 1  row(s) affected)

Server: Msg  208 , Level  16 , State  1 , Line  1 
Invalid object name 'TestTable'.
...
Рейтинг: 0 / 0
04.02.2005, 12:12
    #32901010
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL внутри транзакции
В ASA любая DDL обозначается, как AUTO COMMIT, поэтому на момент ее выполнения будет завершена текущая транзакция оператором COMMIT и после ее выполнения выполнен опять же COMMIT. В данном приведенном примере после ROLLBACK будет возвращен пустой набор данных с таблицы ddltest.
...
Рейтинг: 0 / 0
04.02.2005, 12:27
    #32901039
Yo!
Yo!
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL внутри транзакции
в оракле если уж так нужно DDL выполняют в автономных транзакциях, т.е. выполнить не прерывая транзакции проблемы нет, проблема в бесмыслености - во первых очень дорого, а во вторых всех юзеров в очередь не поставишь.
...
Рейтинг: 0 / 0
04.02.2005, 12:28
    #32901043
gardenman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL внутри транзакции
Yo!в оракле если уж так нужно DDL выполняют в автономных транзакциях, т.е. выполнить не прерывая транзакции проблемы нет, проблема в бесмыслености - во первых очень дорого, а во вторых всех юзеров в очередь не поставишь.
OK! Запомним, дома попробуем...)
...
Рейтинг: 0 / 0
04.02.2005, 12:30
    #32901050
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL внутри транзакции
Я честно говоря даже не представляю себе, зачем в рабочем порядке, да еще и внутри транзакции выполнять DDL. IMHO это должен делать проектировщик БД или администратор, которые представляют себе, зачем это делают.
...
Рейтинг: 0 / 0
04.02.2005, 12:32
    #32901056
gardenman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL внутри транзакции
просто прямо сейчас на глазах возникла ситуация в ASE, когда вызвали хранимку внутри транзакции, а она как на грех - создает временную таблицу - и полный отлуп. :((
...
Рейтинг: 0 / 0
04.02.2005, 13:01
    #32901141
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL внутри транзакции
Минуточку, времянки это совсем другое дело и в той же ASA создание локальной времянки никоим образом не влияет на транзакцию, блокировки в БД и прочее. Вроде как речь шла про DDL над постоянными, а не временными обьектами БД ?
...
Рейтинг: 0 / 0
04.02.2005, 13:10
    #32901175
Хрен
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL внутри транзакции
Посмотри на mysql сайте feature comparisons
вот тут , выдели какие интересно базы и там параметр rollback metadata
...
Рейтинг: 0 / 0
04.02.2005, 13:34
    #32901249
gardenman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL внутри транзакции
ХренПосмотри на mysql сайте feature comparisons
вот тут , выдели какие интересно базы и там параметр rollback metadata

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


2 ASCRUS

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

А с автономными транзакциями в Оракл поразбираюсь на выходных, возможен ли такой же вариант. Боюсь что не прокатит.
...
Рейтинг: 0 / 0
04.02.2005, 13:37
    #32901264
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL внутри транзакции
ASCRUSIMHO это должен делать проектировщик БД или администратор, которые представляют себе, зачем это делают.

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

ЗЫ. Вот мне интересно, почему тут у некоторых участников, если их любимая СУБД не поддерживает какой-то фичи, то эта фича автоматически превращается в "бесполезную".
...
Рейтинг: 0 / 0
04.02.2005, 13:47
    #32901302
Yo!
Yo!
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL внутри транзакции
2pkarklin

такие администраторы/разрваботчики живут слишком мало и по понятным причинам не воспроизводят потомства, чтоб кто-то успевал озаботится такими проблемами :)
...
Рейтинг: 0 / 0
04.02.2005, 13:53
    #32901333
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL внутри транзакции
Yo!2pkarklin

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

А поумнее что-нибудь и в тему топика слабо?! ;)
...
Рейтинг: 0 / 0
04.02.2005, 14:06
    #32901388
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL внутри транзакции
pkarklin ASCRUSIMHO это должен делать проектировщик БД или администратор, которые представляют себе, зачем это делают.

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

ЗЫ. Вот мне интересно, почему тут у некоторых участников, если их любимая СУБД не поддерживает какой-то фичи, то эта фича автоматически превращается в "бесполезную".
Изменять структуру БД по расписанию графика или через клиентское приложение ? Ну, ну - Вам надо серьезно посмотреть в сторону ООСУБД, говорят там это прекрасно работает без проблем. А в остальном полностью присоединяюсь к высказываниям предыдущего сообщения "Yo!".
...
Рейтинг: 0 / 0
04.02.2005, 14:13
    #32901416
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL внутри транзакции
ASCRUS pkarklin ASCRUSIMHO это должен делать проектировщик БД или администратор, которые представляют себе, зачем это делают.

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

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

Интересно слушать Ваши высказывания, однако. И как всегда - одни эмоции, а аргументации никакой.
...
Рейтинг: 0 / 0
04.02.2005, 14:23
    #32901450
Yo!
Yo!
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL внутри транзакции
>Интересно слушать Ваши высказывания, однако. И как всегда - одни эмоции, а аргументации никакой.

вы действительно не понимаете ? тогда вам стоит задуматся о сохранности ваших яиц :)
...
Рейтинг: 0 / 0
04.02.2005, 14:34
    #32901480
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL внутри транзакции
pkarklinИнтересно слушать Ваши высказывания, однако. И как всегда - одни эмоции, а аргументации никакой.
Интересно - и какую же аргументацию я должен Вам отписать ... пособие о том, что такое РСУБД и как правильно проектировать БД и почему нельзя использовать DDL по ходу работы боевой базы ? Вы правда так проектируете БД или просто прикалываетесь ? Может поделитесь опытом, в каких ситуациях может понадобиться динамическое создание и изменения таблиц, индексов, и представлений ? Я конечно понимаю, что полноценных EVENT-ов в MSSQL нет и динамический SQL нужно использовать осторожно и вдумчиво, но чтобы то, чего не хватает в MSSQL на DDL разруливать ... вот никак не въеду, надо править в консерватории что то наверное, осталось только выяснить в чьей :)
...
Рейтинг: 0 / 0
04.02.2005, 14:34
    #32901481
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL внутри транзакции
Yo!>Интересно слушать Ваши высказывания, однако. И как всегда - одни эмоции, а аргументации никакой.

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

Ну так объясните, мне тупому, не заботящемуся о сохранности своих яиц, каким образом выполнения инструкции DDL в транзакции может повлиять на систему. Не забывая, что права на эти инструкции принадлежат очень узкому кругу лиц (если в контексте сиквела, то это члены серверной роли sysadmin и члены ролей бд db_owner и ddl_admin) и простых смертных в эти роли не включают. Тоже самое касается и джобов, автоматизирующих административные задачи. И специально для ASCRUS. позвольте Вас спросить, Вы, как администратор Вашего сервера разве не из клиентского приложения инструкции DDL на сервер отправляете? Ведь утилиты, типа QA в SQL Server - это всего-навсего - клиентские приложения.
...
Рейтинг: 0 / 0
04.02.2005, 14:36
    #32901485
gardenman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL внутри транзакции
Граждане программисты! относитесь с уважение друг к другу!
...
Рейтинг: 0 / 0
04.02.2005, 14:36
    #32901488
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL внутри транзакции
ASCRUSМожет поделитесь опытом, в каких ситуациях может понадобиться динамическое создание и изменения таблиц, индексов, и представлений ?

Секционированные представления.
...
Рейтинг: 0 / 0
04.02.2005, 14:51
    #32901540
Yo!
Yo!
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL внутри транзакции
вообщето это вопрос на уровне детского сада.
1. оптимайзер промышленых субд опираются на статистику.
2. как вы представляете дропанье/создавание пусть и по расписанию таблиц с милионами запией ? в этот момент что происходит с юзерами их просят уйти ?
3. кто такое а главное как будет супортить ?
4. репликация.
5. кластер - mssql например не умеет ddl на ноды передавать.
6. в доках по ораклу четко написано что изменение схемы боего сервера имеет права вносить только админ в экстренном случае заполняя немеряное кол-во бумажек чтоб объяснить такое святотатство.
...
Рейтинг: 0 / 0
04.02.2005, 14:55
    #32901553
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL внутри транзакции
pkarklin ASCRUSМожет поделитесь опытом, в каких ситуациях может понадобиться динамическое создание и изменения таблиц, индексов, и представлений ?

Секционированные представления.
Я знаю что такое секционированные представления. Мне интересует обоснование применения DDL внутри транзакций с возможностью отката, Вы же вроде это называете "фичей" ?
...
Рейтинг: 0 / 0
04.02.2005, 15:02
    #32901573
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL внутри транзакции
Yo!1. оптимайзер промышленых субд опираются на статистику.

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

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

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

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

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

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

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

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

Понятно, что дворнику Пупкину этого не доверят. Но у меня как раз экстренный случай и бумажки я все подписал. Да и не надо переигрывать, на счет святотатства в плане изменения схемы боего сервера.
...
Рейтинг: 0 / 0
04.02.2005, 15:04
    #32901582
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL внутри транзакции
pkarklinА мне надо просто создать табличку и малость альтернуть представление.
А зачем в транзакции? Да еще в транзакции, где всякий DML используется?
...
Рейтинг: 0 / 0
04.02.2005, 15:07
    #32901594
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DDL внутри транзакции
Не хотел вмешиваться в вашу дискуссию, но обратила внимание фраза

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

Вообще-то любой пользователь, имеющий соответствующие привилегии (а они прописаны в часто предоставляемых ролях CONNECT, RESOURCE) может делать в СВОЕЙ схеме все что угодно
...
Рейтинг: 0 / 0
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / DDL внутри транзакции / 25 сообщений из 52, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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