Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to NewYear Ну, значит я получу отлуп :) Не уверен, что этот вариант лучше, чем блокировка. посуди сама -- если 2 транзакции делают UPDATE одной строки с SERIALIZABLE, одна из них обязательно получит отлуп. Это и есть обычная блокировка/ожидание:) Которая возникает если изменена и еще незакомичена строка а другой сеанс пытается изменить ее тоже. Здесь можно выбрать - ждать окончание другой транзакции или получать отлуп сразу. посуди сама -- если 2 транзакции делают UPDATE одной строки с SERIALIZABLE, одна из них обязательно получит отлуп. Уж не хотите ли вы сказать что в DB2 есть dirty write ? Я не поверю! Что произойдет в DB2 если будет попытка изменить уже измененную незакомиченную строку в другом сеансе? Да тоже самое - блокировка. Оракл не 100% версионник, такой субд вроде не существует. В 100% версионнике можно было бы действительно работать со своей версией данных сколь угодно без учета что происходит "снаружи" а о сюпризах узнавать только при коммите. Но такая реализация имеет интерес чисто теоретический. Так что сюрпризы из-за одновременного изменяющего доступа в одной и той же строке не откладываются до коммита а проявляются немендленно при возникновении конфликта. Если же речь идент о желании перепичать закоммиченные данные, используйте уровень изоляции read commited. а вот так что будет :) insert into test values ('A' , ... ); insert into test values ('B' , ... ); это побочный эффект того что select не накладывает какие бы то нибыло блокировки. Частая ошибка девелоперов перешедших с других СУБД, где блокирование селектом частый прием. Если вышеописанная логика необходима, используйте select for update. to stdio Эх, Виолина, Виолина. Ну кто же так легко с голословными утверждениями соглашается? О MQSeries знаю по наслышке, что это отдельный мощный многофункциональный продукт, что подтвердил NewYear. О том догоняет ли его AQ могу только делать догадки, я счмтала что AQ догнать пока не успел:) Спасибо что просветили. to ggv MQ solves many problems, and which Violina mentioned also. Какие из? И как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 18:52 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to Nikolay 2Violina: Давайте не использовать слово IMHO и "мне кажется" только осязаемые измеримые аргументы. В отношение пишеться ли UNDO и как в DB2 это были мои догадки. Поэтому я и использую ИМХО и поэтому просила вас о коментарии по этому поводу. За ссылку и объяснение спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 18:58 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
To: Nikolay Kulikov <quote> DB2 нет _UNDO_ данных почему DB2 должна писать больше в transaction log непонятно ??? Если вам интересно как DB2 пишет в журнал часть теории можно почитать здесь http://]http://www.osp.ru/os/2004/03/066.htm </quote> That's quite a statement from a DB2 practitioner... Well, let me surprise you -- DB2 does have 'undo data'. While Oracle supports ROLLBACKs with a separate structure called the "undo tablespace" or "rollback segments", IBM's DB2 stores both redo and undo portions of the log in one place (transaction log). Any database implementing rollback must have a way to preserve undo information. I hope there would be no argument about that. VC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 19:17 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to vc123 Well, let me surprise you -- DB2 does have 'undo data'. While Oracle supports ROLLBACKs with a separate structure called the "undo tablespace" or "rollback segments", IBM's DB2 stores both redo and undo portions of the log in one place (transaction log). Any database implementing rollback must have a way to preserve undo information. I hope there would be no argument about that. Для меня это тоже /не побоюсь этого слова:)/ кажется очевидным о чем я и спрашивала. Именно об этом я и говорила. to Nikolay Очень интересная статья! еще раз спасибо. Если не возражаете у меня есть пара вопросов. Используется широко известный метод упреждающей журнализации (write ahead log, WAL), предполагающий, что записи о некоторой операции над базой данных попадают на жесткий диск раньше, чем в базу вносятся изменения, произведенные этой операцией. Здесь отличий от Oracle нету. Еще раз забудте про UNDO здесь его пока нет. Как это нет? Давайте рассмотрим пример: 1) транзакция удалила строки 2) транзакция перезаписала во многих строках старые значения полей новыми (все изменения в оперативной памяти не помещаются) 3) коммит не пока не делается 4) происходит сбой Вопрос При восстановлении незакомиченные изменения нужно откатить. Где находится undo информация - данные удаленных строк, старые значения измененных строк? Разве не в журнале? Поскольку в ARIES на журнал возлагается вся ответственность за восстановление данных , записи журнала достаточно сложны, содержат массу информации и в зависимости от журнализуемого действия имеют различную структуру. Скажем, запись, помещаемая при обычной работе транзакции, несколько отличается от так называемой компенсационной записи (compensation log record, CLR), помещаемой в случае частичного или полного отката транзакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 19:25 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
To: Nikolay Kulikov <quote> DB2 нет _UNDO_ данных почему DB2 должна писать больше в transaction log непонятно ??? Если вам интересно как DB2 пишет в журнал часть теории можно почитать здесь http://]http://www.osp.ru/os/2004/03/066.htm </quote> That's quite a statement from a DB2 practitioner... Well, let me surprise you -- DB2 does have 'undo data'. While Oracle supports ROLLBACKs with a separate structure called the "undo tablespace" or "rollback segments", IBM's DB2 stores both redo and undo portions of the log in one place (transaction log). Any database implementing rollback must have a way to preserve undo information. I hope there would be no argument about that. VC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 19:34 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
I apologize for the double posting. My IE timed-out the first time. VC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 19:43 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
ну, господа теоретики, тогда просвещайте. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. есть вот токая строка Record images . . . . . . . . . IMAGES *AFTER возможные значения Record images (IMAGES) - Help Specifies the kinds of record images to be written to the journal for changes to records in the file. The possible values are: *AFTER Only after images are written to the journal for changes to records in this file. *BOTH The system writes both before and after images to the journal for changes to records in this file. как это можно связать с _UNDO_ данными ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 19:45 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
New Yearэх, stdio, ручки ваши кривые... Вы должны знать, что: 1) Переход на личности является некорректным приёмом ведения дискуссии. По сути же Вы ничего не написали. К тому же: 2) Программу писали не мы, а Ваши коллеги. Крупными партнёрами IBM в России они, вроде бы числятся. Название конторы приводить не буду. 3) И Вы хотите, сказать, что выполнять двухфазную фиксацию транзакции очень удобно? И она страхует от ошибок и от дублирования информации? Ведь так или иначе Вы должны сделать: commitMQ, затем commitDB или commitDB, затем commitMQ Если сбой происходит между коммитами, то сообщение теряется и дублируется соответственно. Gt.80 в 5 таблицах, по 16 полей в каждой, да в принципе не важно сколько, важно, что незачем посылать запрос где хитро сплетаются 5 таблиц когда достаточно "select name from table1 where name like ..." А что одной таблицей с 16+1 полями обойтись нельзя? И делать запрос типа: select name from table where name like '...' and q_context = Номер. Ну, и индекс, конечно по name и q_context сделать... _______________ Alex There are three kinds of people: those who can count and those who can't ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 20:12 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Вы должны сделать: commitMQ, затем commitDB или commitDB, затем commitMQ вовсе нет. commit толко один -> commitMQ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 20:17 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
commit толко один -> commitMQ А в БД транзакцию когда фиксировать? _______________ Alex There are three kinds of people: those who can count and those who can't ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 20:27 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Возможно я некорректно сказал B DB2 нет UNDO журналов. В DB2 есть transaction log на основании которого делается ROLLBACK и производится восстановление после сбоя, ROLLFORWARD. transaction log состоит из записей достаточных как для ROLLBACK (UNDO) так и для ROLLFORWARD (REDO). Logging Proceess http://publib.boulder.ibm.com/infocenter/db2help/index.jsp?topic=/com.ibm.db2.udb.doc/admin/c0005425.htm Update process http://publib.boulder.ibm.com/infocenter/db2help/index.jsp?topic=/com.ibm.db2.udb.doc/admin/c0005426.htm И этот IO меньше чем в ORACLE. Cмотрим и анализируем отчеты TPC-C места 5,6 Oracle 8-hour log (GB) 1,743.58 И это только REDO logs. DB2 8 Hour Log (GB) 801.79 P.S. Вышесказанное есть моя личная точка зрения и не может служить официальным заявлением компании IBM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 20:42 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Привет С интересом почитал нитку. И, хотя были моменты "на грани фола", в целом мне понравилось, что есть таки в форуме люди, умеющие вести разумную дискуссию, не срываясь на flame. Надеюсь, что продолжение будет в том же доброжелательном духе. riman2 stdio: в DB2 database-engine осуществляет выборку посредством одного из нескольких возможных путей Reading rows directly from the table (dataspace scan processing) Reading rows through an access path (using either key selection or key positioning) Creating an access path directly from the dataspace Creating an access path from an existing access path (index-from-index) Using the query sort routine (if conditions are satisfied) Я выделил заинтриговавший меня метод извлечения данных. Правильно ли я понял, что в DB2 индексы также как-то связаны между собой, как индекс и таблица? В Oracle подобного нет. Мне известны лишь два случая (bitmap join пропускаю для простоты), когда при доступе к источнику данных, которым является таблица, на конкретном шаге выполнения запроса используется > 1-го индекса, или один и тот же индекс используется дважды: a) AND-EQUAL Код: plaintext 1. 2. 3. b) BITMAP MERGE (если память не изменяет) Код: plaintext 1. 2. 3. 4. Всего -- Andrei Kriushin (Oracle8/8i/9i OCP DBA), RDTEX J.S.C. Disclaimer: Opinions are of my own and not necessar(-il)y... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 21:05 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
To: NewYear UNDO == before images. Even if 'before images' are disabled, DB2 would automatically write them anyway for transactions (in DB2 jargon 'commitment control'). Apparently, you'd benefit from re-reading IBMs manuals as they say exactly that: Код: plaintext 1. VC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 21:06 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
авторА что одной таблицей с 16+1 полями обойтись нельзя? И делать запрос типа: select name from table where name like '...' and q_context = Номер. Ну, и индекс, конечно по name и q_context сделать... мда :) наверно можно - но только ради премии, за самый оригинальный подход :) если поля нужны из 3 табличек, то вы каким методом джоин будете делать ? или метод джоина в своих хинтах прописывать бум ??? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 21:17 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
stdio: - have you heard ever about X/Open Distributed Transaction Processing XA Specification? And how it relates to MQ - amqzag04.pdf from ibm.com sould help. http://www-306.ibm.com/software/integration/mqfamily/library/manualsa/manuals/crosslatest.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 21:33 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Gt.если поля нужны из 3 табличек, то вы каким методом джоин будете делать ? Так мы вроде бы на одной таблице договорились? Откуда ещё две появились? ggvhave you heard ever about X/Open Distributed Transaction Processing XA Specification? Слышал, но внимания не уделял. Правда, в ближайший месяц мне как раз придётся с XA немного повозиться. Вот как удачно всё складывается. ;-) Но с распредёлёнными транзакциями в СУБД встречался и знаю, что они не без греха: может возникнуть т.н. in-doubt transaction. _______________ Alex There are three kinds of people: those who can count and those who can't ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 22:16 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
авторТак мы вроде бы на одной таблице договорились? Откуда ещё две появились? ок, играем в дурочка :) есть 5 табличек, в них 80 полей, поиск должен уметь искать по всем полям всех таблиц, запросы иногда бывают простенькие возвращающие поля 1 таблички, иногда сложные возвращающие поля всех таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 23:02 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
in-doubt transaction != греха, but the normal situation with well-known predefined result ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 07:45 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Visual Explain screenshot ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 08:50 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
скриншот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 08:52 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Ж) извиняюсь, у меня тоже в первый раз по таймауту вылетело... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 08:56 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
2 Ааз Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 09:06 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Violina: you see, you ask questions almost about system design. Using db2 governor, MQSeries, and OS level resource management (solaris and aix) we have an ability to assign resource (like CPU - first at all) to groups of tasks according their privileges. But it's up to a system design. For example now we have a system where direct access to a database have only a few rare running tasks with almost an access to summary tables, which do not compete with others tasks. Again I may repeat that the db2 itself as an RDBMS is a part of a system only. The other part is, for example, LDAP server. IBM LDAP server. Which is based on db2, of course. And a big part of the info placed in it , with access over LDAP protocol with all its advantages, and with transaction control and triggers usage. In the described system we have an only issue with locking problem when two or more UOW are trying to update the same row, and it happens often according our business logic, and of course it's solved by serialized access to the row. There are a lot of 'non-standard' things in the system from the point of view of a 'standard' DBA/developer, but it looks normal from the system architect point of view. oralce memory management (different type of caches) looks poor if to compare even with sybase 10.x imho. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 10:47 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
to Nikolay Спасибо за объяснения. Признаюсь, я не предполагала что в отношении redo logs у Oracle избыточность такого масштаба по сравнению с DB2. В общем теперь у меня есть более или менее реальное представление в этом вопросе. to gvv Using db2 governor, MQSeries, and OS level resource management (solaris and aix) we have an ability to assign resource (like CPU - first at all) to groups of tasks according their privileges. В Oracle это встроенная фича. С пом. profiles можно ограничить CPU_PER_SESSION SESSIONS_PER_USER CONNECT_TIME IDLE_TIME LOGICAL_READS_PER_SESSION И с помощью resource manager можно делать fine grained management of CPU resources для различных групп - в зависимости от вида активности, времени суток (типа по выходным и внерабочее время можно на просмотр отчетов больше времени выделить). direct access to a database have only a few rare running tasks with almost an access to summary tables, which do not compete with others tasks. Обычный метод применения summary tables (materialized views) для разгрузки "горячих" таблиц со соответсующими соображениями - тратить ресурсы на их постоянное поддержание uptodate или позволить delay. oralce memory management (different type of caches) looks poor if to compare even with sybase 10.x imho. Ну, я еще не упомянула про multiple buffer pools в зависимости от размера блока заданного для объектов. Возможно конечно, что такой уровень гранулярности как named pools позволяет творить чудеса. Хотелсь бы увидеть пример задачи/проблемы, которую можно эффективно решить используя named pools и которую было бы сложно или невозможно решить в модели Oracle. Гарантировано удержать важные объекты в кэше модель Oracle тоже позволяет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 11:28 |
|
||
|
Интилигентность оптимайзера, база без хинтов - реальность?
|
|||
|---|---|---|---|
|
#18+
Splain wrote По поводу оптимизации запросов: http://citforum.ru/database/articles/sql_optimization.shtml Если обратиться к истории, то узнаем, что написанием оптимизатора Oracle занимались в том числе и бывшие сотрудники IBM. Большинство разработок новых и их практическая реализация производились в лабораториях IBM. Поэтому нет ничего удивительного в том, что оптимизатор SQL запросов DB2 лучше, современее и меньше ошибается. Тому подтверждение - LEO - усовершенствованный алгоритм оценки селективности предикатов. Собственно говоря поэтому в DB2 отсутствуют хинты как класс - они там просто не нужны. Думаю и Оракл придет к этому через некоторое время. Однако это скорее доставляет некоторое неудобство и увеличение времени разработки разработчикам и на конечном пользователе и производительности промышленных баз не должно особо сказываться. Дискусия по поводу undo - от лукавого. В этом смысле у DB2 и Оракл просто разные сегменты рынка. Это особенности работы СУБД, и не более. Соответсвенно и сравнивать их глупо - в каждом иднивидуальном случае ответ будет разным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2004, 11:57 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=32537939&tid=1603768]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
83ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 248ms |
| total: | 447ms |

| 0 / 0 |
