|
|
|
Посоветуйте СУБД
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий Hello, pkarklin! You wrote on Tue, 31 Mar 09 12:00:33 GMT: pkarklin p> Гм... Коим образом явное использование неявнях транзакций и откатов в триггерах зависит от СУБД?! Павел, ты будешь смеяться, но ЭТО не везде именно так. -- With best regards, Мимопроходящий. Да я знаю, просто мне хочется понять ход мысли Дмитрия, т.е. каким образом наличие режима неявных транзакций и возможность сделать откат в триггере влияет на "недопонимание управления транзакциями". М.б. есть какой-то критерий (стандарт) "понимания управления"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2009, 15:13 |
|
||
|
Посоветуйте СУБД
|
|||
|---|---|---|---|
|
#18+
DeviderИ огнептица работает на порядок быстрее (например 3 секунды против 15). В моем понимании "на порядок" - это 10 к 1, а не 5 к 1. DeviderА я сейчас сделал вот что: создал 2 одинаковых таблички с 2мя полями (интовое и текстовое) и делаю по N коннектов с выполнением M простениких селектов. Скрипты и результаты тестирования в студию... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2009, 15:15 |
|
||
|
Посоветуйте СУБД
|
|||
|---|---|---|---|
|
#18+
pkarklin мне хочется понять ход мысли Дмитрия, т.е. каким образом наличие режима неявных транзакций и возможность сделать откат в триггере влияет на "недопонимание управления транзакциями". Один из типичных вопросов мигрантов: "А что, SELECT тоже надо в транзакции делать? " Второй типичный вопрос: "А как сделать ROLLBACK/COMMIT в триггере?" М.б. есть какой-то критерий (стандарт) "понимания управления"? Лично я таким критерием считаю осознание того, что транзакции принадлежат к бизнес-логике и пихать управление ими в физическую модель данных (триггера)... некорректно. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2009, 15:20 |
|
||
|
Посоветуйте СУБД
|
|||
|---|---|---|---|
|
#18+
DeviderСтал разбираться с DB2, ну там по-ходу так сходу не получится, читать придется. Например у меня не получилось создать БД, при создании пишет "нет такого пути" ну и еще что какие-то непонятные вещи. После установки/деинсталляции слетели настройки файерфокса, избранное, пароли и т.д. Да и "антураж" (все прилогающиеся софтины) достаточно задумчивые. Хотя с точки зрения "изучить, чтобы потом пригодилось" наверное все-таки предпочтительнее DB2?При создании БД указывайте корень нужного диска, DB2 работает с ним. Через Control center все просто, мышом. С файрфоксом - у меня настройки не слетали никогда. Если под Win, на время установки сделайте IExplorer дефолтным бровзером - да, согласен, запуск установки сделан через попу. Задумчивость софтин проистекает в основном от старта Java - включите "Enable Quick Launch..." в трее винды. Вообще, если чего непонятно - лучше спросить в соседнем форуме по DB2 . Там, кстати, и добрые люди из IBM отвечают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2009, 15:21 |
|
||
|
Посоветуйте СУБД
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovОдин из типичных вопросов мигрантов: "А что, SELECT тоже надо в транзакции делать? " Вопрос без уточнения что это за SELECT, одиночный он или нет и т.п. не имеет смысла. Ибо даже в дефолтном режиме автокоммита - один SELECT одна транзакция. Dimitry SibiryakovВторой типичный вопрос: "А как сделать ROLLBACK/COMMIT в триггере?" Лично я таким критерием считаю осознание того, что транзакции принадлежат к бизнес-логике и пихать управление ими в физическую модель данных (триггера)... некорректно. Почему же Вы отнесли триггеры к "физической модели"?! Странно, производители многих СУБД считают, что как раз с помощью триггеров и можно\нужно "Enforcing Business Logic". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2009, 15:26 |
|
||
|
Посоветуйте СУБД
|
|||
|---|---|---|---|
|
#18+
pkarklinВопрос без уточнения что это за SELECT, одиночный он или нет и т.п. не имеет смысла. Ибо даже в дефолтном режиме автокоммита - один SELECT одна транзакция. Естественно, это дефолтное значение относится к MS SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2009, 15:27 |
|
||
|
Посоветуйте СУБД
|
|||
|---|---|---|---|
|
#18+
pkarklin В моем понимании "на порядок" - это 10 к 1, а не 5 к 1. Ну 10 к 1 так и было, а при увеличении N и M то получилось то, что я описал. Потом я подумал, что неплохо было бы отследить зависимость от N и от M, нарисовать поверхность, посмотреть, почесать репу, ну и плюнул в итоге и прикрыл эту лавочку до выходных.. pkarklin Скрипты и результаты тестирования в студию... и соответственно не сохранил эту красоту. Ну я думаю не сложно будет повторить если зададитесь целью. Тестил чем-то вроде: Код: 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. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2009, 15:39 |
|
||
|
Посоветуйте СУБД
|
|||
|---|---|---|---|
|
#18+
Deviderpackage javaapplication; Да, да. нет ничего более кошерного, чем мерить производительность СУБД скриптами на джаве. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2009, 15:42 |
|
||
|
Посоветуйте СУБД
|
|||
|---|---|---|---|
|
#18+
pkarklinВопрос без уточнения что это за SELECT, одиночный он или нет и т.п. не имеет смысла. Ибо даже в дефолтном режиме автокоммита - один SELECT одна транзакция. Естественно, это дефолтное значение относится к MS SQL.А можно узнать "в порядке самообразования" - к какой части MS SQL относится сие дефолтное значение? TSQL внутри SP или триггера - тоже?! pkarklinСтранно, производители многих СУБД считают, что как раз с помощью триггеров и можно\нужно "Enforcing Business Logic".Простите, что прерываю, но rollback в SS действительно можно сделать в триггере? Я в шоке. А зачем?!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2009, 15:48 |
|
||
|
Посоветуйте СУБД
|
|||
|---|---|---|---|
|
#18+
Favn, Да, спасибо, разобрался. Все работает (из того, что пробовал =) ) только "Центр задач" пишет при запуске DBA1176N Центру управления не удалось автоматически каталогизировать базу данных каталога инструментов "" для системы "CompName". да после установки (с ИЕ по дефолту был оно что-то писало но отображадись только окна (контуры) и кнопки. Ну фреймы контролов короче (без картинок и шрифтов). Виндовз сканер воспринимал окно как единое целое, ну т.е. текст меток нельзя прочесть было. Короче, чего хотел я так и не понял, нажимал на кнопки исходя из того, что слева ОК а справа Cancel. =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2009, 15:51 |
|
||
|
Посоветуйте СУБД
|
|||
|---|---|---|---|
|
#18+
pkarklinDeviderpackage javaapplication; Да, да. нет ничего более кошерного, чем мерить производительность СУБД скриптами на джаве. Так приложение-то на джаве будет написано. Зачем мне производительность "впринципе"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2009, 15:53 |
|
||
|
Посоветуйте СУБД
|
|||
|---|---|---|---|
|
#18+
Favn Простите, что прерываю, но rollback в SS действительно можно сделать в триггере? Я в шоке. А зачем?!! Поройся в поиске, тут была длинная тема по этому поводу. Вкратце: это единственный способ откатить выполняющийся статемент/батч и обеспечить тем его атомарность. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2009, 16:04 |
|
||
|
Посоветуйте СУБД
|
|||
|---|---|---|---|
|
#18+
DeviderВсе работает (из того, что пробовал =) ) только "Центр задач" пишет при запуске DBA1176N Центру управления не удалось автоматически каталогизировать базу данных каталога инструментов "" для системы "CompName". Наверно, Вы при установке отказались создавать БД TOOLSDB, а "Центр задач" без нее не может, вот и обиделсо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2009, 16:07 |
|
||
|
Посоветуйте СУБД
|
|||
|---|---|---|---|
|
#18+
FavnА можно узнать "в порядке самообразования" - к какой части MS SQL относится сие дефолтное значение? TSQL внутри SP или триггера - тоже?! Поумолчанию MS SQL работает в режиме автокоммита, когда каждая отдельная инстркция завернута в отдельную транзакцию. Т.е. отправка на сервер: Код: plaintext в таком режиме эквивалентно по поведению в режиме явных транзакций: Код: plaintext 1. 2. И это не зависит от того, пришла инструкция с клиента или она написана в хп без явного управления транзакциями. В триггере мы всегда находимся в транзакции (даже если она не была запущена явно) от инструкции, которая вызвала срабатывание триггера. Т.е. отправка на сервер в режиме автокоммита инструкции Код: plaintext при наличи тригера на INSERT будет эквивалентно по поведению в режиме явных транзакций: Код: plaintext 1. 2. 3. Можно перевести сервер в режим неявных транзакций, когда инструкции DML и DDL и некоторые другие инструкции стартуют транзакцию неявно, если таковой сейчас нет, и не стартуют, если есть активная. При таком подходе требуется лишь сказать COMMIT или ROLLBACK в конце пакета. FavnПростите, что прерываю, но rollback в SS действительно можно сделать в триггере? Я в шоке. А зачем?!! Есть таблица операций по счету, есть таблица с остатками по счету. При операции модификации данных в таблице операций по счету необходимо запретить проведение операции, по результатам которой остаток по счету станет <0, исключив при этом часть клиентов, имеющих овердрафт по счету, для них условия другие, не выйти в минус за максимальный овердрафт. Чистейшая бизнес-логика, не правда ли? Почему бы не реализовать это триггером, откатив (с учетом приведенных выше объяснений) то, что уже мог наделать триггер и саму инструкцию с выдачей соответствующего сообщения об ошибке или выполнить другие действия, например, отправить письмо менеджеру? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2009, 16:22 |
|
||
|
Посоветуйте СУБД
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Favn Простите, что прерываю, но rollback в SS действительно можно сделать в триггере? Я в шоке. А зачем?!! Поройся в поиске, тут была длинная тема по этому поводу. Вкратце: это единственный способ откатить выполняющийся статемент/батч и обеспечить тем его атомарность. Не совсем так, точнее совсем не так. Вот этот тред: http://www.sql.ru/forum/actualthread.aspx?tid=588877&pg=4&hl=set+xact_abort+%f2%f0%e8%e3%e3%e5%f0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2009, 16:35 |
|
||
|
Посоветуйте СУБД
|
|||
|---|---|---|---|
|
#18+
Я, видимо, припух уже, но.. Вот такой запрос: sqlSELECT COUNT(*) FROM TableName WHERE (MOD(ID,2) = 0) В случае с огнептицей выполняется меньше чем за секунду при Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2009, 18:36 |
|
||
|
Посоветуйте СУБД
|
|||
|---|---|---|---|
|
#18+
DeviderЭто как так? Первая возможность: ты забыл набить огнептицу данными. Вторая возможность: ты остановил выборку на первой/второй/двадцатой записи. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2009, 18:47 |
|
||
|
Посоветуйте СУБД
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Ну практически. В коде накосячил. Ну а так в общем получается очень похожие результаты. Самое большое что мне удалось добиться - это 6 с маленьким % в пользу огнептицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2009, 19:29 |
|
||
|
Посоветуйте СУБД
|
|||
|---|---|---|---|
|
#18+
Devider Самое большое что мне удалось добиться - это 6 с маленьким % в пользу огнептицы. Странно. Только из соображения, что DB2 - чистый блокировочник, он должен быть гораздо быстрее на full scan в монопольном режиме. У него тупо больше записей на страницу влазит. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2009, 20:15 |
|
||
|
Посоветуйте СУБД
|
|||
|---|---|---|---|
|
#18+
Devider, потести firbird на запросах с группировкой create table T ( id int, key int, val numeric(14,4) ) select key, sum(val) from T group by key Только на db2 создай MQT по столбцу key а на firebird какие угодно. ;) увидишь как птычка крылашки сложит ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2009, 21:00 |
|
||
|
Посоветуйте СУБД
|
|||
|---|---|---|---|
|
#18+
пгуые123, Потестю, аха. А крылышки она сложила когда я стал выбирать нечетные ID, но не как белый человек а так: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2009, 00:18 |
|
||
|
Посоветуйте СУБД
|
|||
|---|---|---|---|
|
#18+
пгуые123Только на db2 создай MQT по столбцу key а на firebird какие угодно. ;) Не получится, т.к. MQT, как и аналоги в остальных СУБД, это фича только Enterprise редакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2009, 15:08 |
|
||
|
Посоветуйте СУБД
|
|||
|---|---|---|---|
|
#18+
DeviderСамое большое что мне удалось добиться - это 6 с маленьким % в пользу огнептицы.Еще несколько моментов: 1. Для "чистого" сравнения не учитывайте в скрипте время на установление соединения - в DB2 оно довольно большое, особенно для "первого и единственного". По умолчанию все БД не активированы, активируются после любого 1-го конекта, дабы ненужные ресурсы не жрали, а активация требует времени. После отключения последнего пользователя БД опять деактивируется. 2. Хотите посмотреть "настоящую" скорость fullscan - создайте dms (вфефифыу ьфтфпьуте) tablespace на неформатированном разделе диска и разместите таблицу в нем. Должно быть заметно быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2009, 15:33 |
|
||
|
Посоветуйте СУБД
|
|||
|---|---|---|---|
|
#18+
В смысле, dms (database managment space) :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2009, 15:35 |
|
||
|
Посоветуйте СУБД
|
|||
|---|---|---|---|
|
#18+
pkarklinИ это не зависит от того, пришла инструкция с клиента или она написана в хп без явного управления транзакциями. Можно перевести сервер в режим неявных транзакций, когда инструкции DML и DDL и некоторые другие инструкции стартуют транзакцию неявно, если таковой сейчас нет, и не стартуют, если есть активная. При таком подходе требуется лишь сказать COMMIT или ROLLBACK в конце пакета.DB2 всегда живет в "режиме неявных транзакций", потому и удивился, считая autocommit прерогативой (настройкой) клиента, а ни как не сервера. Для меня работа сервера в автокоммите по умолчанию, тем более в SP, выглядит диковато, ну да ладно. pkarklinПочему бы не реализовать это триггером, откатив (с учетом приведенных выше объяснений) то, что уже мог наделать триггер и саму инструкцию с выдачей соответствующего сообщения об ошибке или выполнить другие действия, например, отправить письмо менеджеру? http://www.sql.ru/forum/actualthread.aspx?tid=588877&pg=4&hl=set+xact_abort+%f2%f0%e8%e3%e3%e5%f0� Приведенный пример для меня логичнее реализовать обработкой ошибок, кот. в DB2 очень развита. Тот же RAISE ERROR может просто вызвать аварийный откат с нужным тестом ошибки, а можно выставить warning и обойтись без отката. А отправка письма к необходимости rollback отношения не имеет :) Тред прочитал, нашел там "свой" вопрос насчет "что делать с savepoint'ами" при такой работе, тем более что они в T-SQL есть, но к сожалению не нашел ответа. Имхо такой подход больше похож на привычное "тяжкое наследие" старых версий с бедным функционалом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2009, 16:03 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=35903772&tid=1552968]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
83ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 190ms |

| 0 / 0 |
